每日训练-day25

day25_0523

选择题

33996f1c439c4534a922f3ccaa6a0ae2.png

 题目中的运算符优先级排序是:'>','<','&&','||'

fd278a2f8ab04d2890ba756487db998c.png

 java.io.InputStream  : 此抽象类是表示字节输入流的所有类的超类
java.io.OutputStream : 此抽象类是表示字节输出流的所有类的超类
java.os.InputStream  , java.os.OutputStream 应该是不存在的,干扰项

 bb9f3b51a4f3426085a0f19ede3acab7.png

当一个优先级高的线程进入就绪状态时,当前线程执行时,如果是抢占式的调度方式,是会暂停当前线程的执行的,当仍然不是终止它的执行。当不是抢占式的调度时,高优先级的线程将在当前线程终止后,得到优先的执行权。
调用sleep方法,当前线程j进入阻塞状态,sleep执行完成后重新进入就入就绪状态

线程结束的三个原因:

 1、run方法执行完成,线程正常结束 

2、线程抛出一个未捕获的Exception或者Error

 3、直接调用该线程的Stop方法结束线程(不建议使用,容易导致死锁)

当创建一个新的线程时,该线程也加入到了抢占cpu执行权的队伍中,但是是否能抢到,并不清楚
faca58aa7fc94407a1c863ff14b5f145.png

 接口中的变量默认是public static final 的,方法默认是public abstract 的

38108cfeacbc42a88caf9e861ac53b3b.png

 当一个实体类继承一个抽象类,必须实现抽象类中的抽象方法。所以Cat编译不通过。

408fa377764b44799a3fe3b6fad62fd7.png

A:注意jvm的版本,好比人穿裤子,一条裤子能被任何人穿上吗

B:.java编译成的是字节码,再被各系统的jvm翻译成本系统可以识别的机器码,这就是java一次编程多平台应用的跨平台性
C:java源文件生成的是class文件,与系统无关
D:注意字节码和机器码不是一回事 java程序在运行时字节码才会被jvm翻译成机 器码,所以说java是解释性语言
8d5779c564e241ecbad17acec2e0433c.png

在上面main()方法中,并没有创建一个新的线程,只是简单地方法调用而已,如果想要创建线程,需要t.start();创建线程,等待cpu时间片,而run()方法只是简单地方法调用,所以先执行run(),在输出dazhong
如果调用start后并不保证线程启动的顺序(并发执行)

3b1e1863c6fd4481aa0c20d9bb73a89c.png 运行时数据区包括:程序计数器、虚拟机栈、本地方法栈、Java堆、方法区以及方法区中的运行时常量池
(1)、程序计数器: 线程私有,是当前线程所执行的字节码的行号指示器,如果线程正执行一个java方法,计数器记录正在执行的虚拟机字节码指令的地址,如果线程正在执行的是Native方法,则计数器值为空;
(2)、虚拟机栈: 即栈区, 线程私有 ,为虚拟机执行 Java 方法(字节码)服务,每个方法在执行的时会创建一个栈帧用于存放局部变量表、操作数栈、动态链接和方法出口等信息,每个方法的调用直至执行完成对应于栈帧的入栈和出栈;
(3)、本地方法栈: 为虚拟机使用的 N ative 方法服务,也是 线程私有 ;
(4)、Java 堆: 在虚拟机启动时创建, 线程共享 ,唯一目的是存放对象实例,是垃圾收集器管理的主要区域——” GC 堆“,可以细分为新生代和老年代,新生代又可以细分为 Eden 空间、 From Survivor 空间和 To Survivor 空间;物理上可以不连续,但逻辑上连续,可以选择固定大小或者扩展;
(5)、方法区: 线程共享 ,用于存储被虚拟机加载的类信息、常量、静态变量、即时编译器编译后的代码等数据。被称为“永久代”,是因为 H otSpot 虚拟机的设计团队把 GC 分代收集扩展到方法区,即使用永久代来实现方法区,像 GC 管理 Java 堆一样管理方法区,从而省去专门为方法区编写内存管理代码,内存回收目标是针对常量池的回收和堆类型的卸载;
(6)、运行时常量池pool: 线程共享 ,是方法区的一部分, C lass 文件中存放编译期生成的各种字面量和符号引用,类加载后进入方法区的运行时常量池中。
(7)多线程中栈是私有的,堆是公有的

编程

星际密码

 

 例如18的意思就是要计算矩阵|1 1|的18次方;

而且|1 1|的1次方是1,2次方是2,3次方是3,4次方是5,5次方是8……明显是一个斐波那契数

补零的方法可以用format()

String.format()函数: 将括号里的量, 按照自己想要的格式拼接成一个字符串, 然后输出, 即将nums[xi]按照"%04d"输出。
"%04d": 十进制数, 输出4位, 不足4位就补0, 如果本身大于4位, 就正常输出
 

import java.util.Scanner;
public class Main{
    public static void main(String []args){
        int[] nums=new int[10001];
        nums[1]=1;
        nums[2]=2;
        for(int i=3;i<nums.length;i++){
            nums[i]=nums[i-1]+nums[i-2];
            nums[i]=nums[i]%10000;//保证元素不超过4位
        }
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
          int n=sc.nextInt();
            StringBuffer sb=new StringBuffer();
            for(int i=0;i<n;i++){
              int xi=sc.nextInt();
                sb.append(String.format("%04d",nums[xi]));
            }
            System.out.println(sb);
        }
    }
}

数根

 尽量要用数组

import java.util.Scanner;
public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);
        while(sc.hasNext()){
            String s=sc.next();
            while(s.length()>1){
             s=numRoot(s)+"";
            }
            System.out.println(s);
        }
      
    }
    public static int numRoot(String s){
        int root=0;
           for(int i=s.length()-1;i>=0;i--){
                    root+=s.charAt(i)-48;
              }
        return root;
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值