每日一题Day25
方法区是线程共享的
java是半编译半执行的语言
java编译出来的目标文件(class文件)是与 *** 作系统无关的,面向JVM的二进制文件
编译阶段:javac命令会把*.java编译成*.class
运行过程:java命令会把class文件让JVM将其翻译成 *** 作系统能运行的机器码
D、JVM是由版本的,加入让JDK11的class文件在JDK8的JVM上运行,是不能运行的
线程的终止:
1、线程的任务执行完毕(正常终止)
2、线程执行过程中出现异常(异常终止)
C、调用sleep()只是进入阻塞
线程的启动不能直接调用run(),要调用Thread类提供的start()才会启动一个线程
直接调用run(),没有启动新的线程,相当于调用普通方法而已
接口中的变量都是全局变量,省略了public static final
(子类不是抽象类时)抽象类的子类必须重写所有的抽象方法,Cat没有重写父类的抽象方法
方法重载:在一个类中定义了若干个方法名称相同,参数个数或类型不同的一组方法,与返回值无关
题目:星际密码
import java.util.*; public class Main{ public static void main(String[]args){ int[]nums=new int[10001];//里面的每个下标代表Xi即n的值 nums[1]=1;//n为1时的星际密码为1 nums[2]=2;//n为2时的星际密码为2 for(int i=3;i<10001;i++){//分别列出n为3以后的星际密码 nums[i]=nums[i-1]+nums[i-2]; nums[i]=nums[i]%10000;//星际密码大于4位的只输出后4位 } Scanner sc=new Scanner(System.in); while(sc.hasNext()){ StringBuilder sb=new StringBuilder(); int n=sc.nextInt(); for(int i=0;i
题目:树根
import java.util.*; public class Main{ public static void main(String[]args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ String line=sc.nextLine();//因为输入的范围位(1≤n≤10E1000)很大,所以用String while(line.length()>1){ int sum=0; for(int i=0;i
每日一题Day26
相容:方法的向上转型类的返回值可以
A、JVM垃圾回收由JVM自己执行
创建多线程也可以实现Callable接口
Java中所有其他类型和字符串进行“+”都会转为字符串,而后进行字符串的拼接
A、ConcurrentHashMap使用lock来保证线程安全
B、Collection接口时线性表的顶级接口,HashMap实现的时Map接口
C、Arrays.asList()返回的时List接口对象
D、SimpleDateFormat对象是线程不安全的
字符串对象比较相等:使用equals比较内容,使用==比较的是地址
题目:快到碗里来
import java.util.*; import java.math.*;//BigDecimal需要用的包 public class Main{ public static void main(String[]args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ BigDecimal n=sc.nextBigDecimal();//因为范围很大(1≤r≤2^128),所以用BigDecimal类 BigDecimal r=sc.nextBigDecimal(); BigDecimal len=new BigDecimal("6.28").multiply(r);//周长,BigDecimal传字符串不会丢精度,计算相乘时用multiply System.out.println(n.compareTo(len)==1?"No":"Yes");//BigDecimal比较用compareTo比较 } } }
题目:变态跳台阶
public class Solution { public int jumpFloorII(int target) { return 1<<(--target);//左移代表指数级 } }
每日一题Day27
编译命令:javac 源文件名称.java
运行命令:java 主类名称 要传递的参数(传递给main的args中)
命令:java f a b c 相当于只给args传递了3个参数,而args索引是从0开始的,没有args[3],会导致下标越界
相加时都转为最大的类型再相加,此时double为组大的类型
字符串不可变,字符串的内容无法修改
this表示当前对象的引用,不能调用静态域,只能表示成员变量和成员方法
C、D:如果在类方法中创建了对象,仍然可以通过对象来调用实例方法
使用synchronized修饰方法和代码快表示同步方法和同步代码块
A、f是私有的属性,不能通过对象调用
B、n是静态变量,通过类名访问
C、m是成员变量,不能通过类名访问,要通过对象访问
==比较的是地址,由于这两个对象都是new出来的,地址一定不同,故输出false
B、在对象产生时执行,在类加载之后
题目:三角形
import java.util.*; import java.math.*; public class Main{ public static void main(String[]args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ BigDecimal a=sc.nextBigDecimal(); BigDecimal b=sc.nextBigDecimal(); BigDecimal c=sc.nextBigDecimal(); if(a.add(b).compareTo(c)>0 &&a.add(c).compareTo(b)>0 &&b.add(c).compareTo(a)>0){//BigDecimal相加用add System.out.println("Yes"); }else{ System.out.println("No"); } } } }
题目:不用加减乘除做加法
public class Solution { public int Add(int num1,int num2) { while(num2!=0){ int a=num1^num2;//不进位的数 int b=(num1&num2)<<1;//进位 num1=a; num2=b; } return num1; } }
每日一题Day28
服务器端使用ServerSocket(int port) 默认在本地指定端口号监听TCP端口
客户端使用Socket来连接服务器 Socket(IP,port)
abstruct和fiinal是不能同时出现的
接口修饰符:直接在接口定义上使用的修饰符,接口权限都是public
被final修饰的类是不能被继承的,而接口一定要被继承,所以接口不能被final修饰
JRE:Java运行时环境
JDK:Java开发工具包,包含了JRE
什么时候Java进程认为程序全部执行完毕:所有的前台线程(用户线程)执行完毕
一般我们创建的线程都是前台线程
后台线程:JVM垃圾回收机制
5+7+7+5=24
finalize()是Object类的方法
只要牵扯到算术运算,所有类型都会转为最大堆类型而后进行运算
题目:猴子分桃
import java.util.*; public class Main{ public static void main(String[]args){ Scanner sc=new Scanner(System.in); while(sc.hasNext()){ int n=sc.nextInt(); if(n==0) break; long a=(long)(Math.pow(5,n)-4);//pow是指数 long b=(long)(Math.pow(4,n)+n-4); System.out.println(a+" "+b); } } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)