每日一题Day25~Day28

每日一题Day25~Day28,第1张

每日一题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);
        }
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/795144.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-06
下一篇 2022-05-06

发表评论

登录后才能评论

评论列表(0条)