下面有关JVM内存,说法错误的是?
A. 程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,是线程隔离的
B. Java方法执行内存模型,用于存储局部变量,操作数栈,动态链接,方法出口等信息,是线程隔离的
C. 方法区用于存储JVM加载的类信息、常量、静态变量、即时编译器编译后的代码等数据,是线程隔离的
D. 原则上讲,所有的对象都在堆区上分配内存,是线程之间共享的
答案:C
下列程序段的输出结果是:( )
public void complicatedexpression_r(){ int x=20, y=30; boolean b; b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60; System.out.println(b); }
A. true
B. false
C. 1
D. 0
答案:B
输入流将数据从文件,标准输入或其他外部输入设备中加载道内存,在 java 中其对应于抽象类()及其子类。
A. java.io.InputStream
B. java.io.OutputStream
C. java.os.InputStream
D. java.os.OutputStream
答案:A
以下程序的输出结果是
public class Print{ static boolean out(char c){ System.out.print(c); return true; } public static void main(String[] argv){ int i = 0; for(out('A');out('B') && (i<2);out('C')){ i++; out('D'); } } }
A. ABDCBDCB
B. BCDABCD
C. 编译错误
D. 运行错误
答案:A
下面关于程序编译说法正确的是()
A. java语言是编译型语言,会把java程序编译成二进制机器指令直接运行
B. java编译出来的目标文件与具体操作系统有关
C. java在运行时才进行翻译指令
D. java编译出来的目标文件,可以运行在任意jvm上
答案:C
下面那些情况可以终止当前线程的运行?
A. 当一个优先级高的线程进入就绪状态时
B. 抛出一个异常时
C. 当该线程调用sleep()方法时
D. 当创建一个新线程时
答案:B
下面程序的运行结果:()
public static void main(String args[]) { Thread t=new Thread(){ public void run(){ dianping(); } }; t.run(); System.out.print("dazhong"); } static void dianping(){ System.out.print("dianping"); }
A. dazhongdianping
B. dianpingdazhong
C. a和b都有可能
D. dianping循环输出,dazhong夹杂在中间
答案:B
public interface IService {String NAME="default";}
默认类型等价表示是哪一项:
A. public String NAME="default";
B. public static String NAME="default";
C. public static final String NAME="default";
D. private String NAME="default";
答案:C
有以下类定义:
abstract class Animal{ abstract void say(); } public class Cat extends Animal{ public Cat(){ System.out.printf("I am a cat"); } public static void main(String[] args) { Cat cat=new Cat(); } }
运行后:
A. I am a cat
B. Animal能编译,Cat不能编译
C. Animal不能编译,Cat能编译
D. 编译能通过,但是没有输出结果
答案:B
类Test1定义如下:
public class Test1{//1 public float aMethod(float a,float b){}//2 //3 }//4
将以下哪种方法插入行3是不合法的。
A. public int aMethod(int a,int b){}
B. private float aMethod(int a,int b,int c){}
C. public float aMethod(float a,float b){}
D. public float aMethod(float a,float b,float c){}
答案:C
星际密码
题目描述:星际战争开展了100年之后,NowCoder终于破译了外星人的密码!他们的密码是一串整数,通过一张表里的信息映射成最终4位密码。表的规则是:n对应的值 是矩阵X的n次方的左上角,如果这个数不足4位则用0填充,如果大于4位的则只输出最后4位。
|1 1|^n => |Xn ..|
|1 0| |.. ..|
例如n=2时,
|1 1|^2 => |1 1| * |1 1| => |2 1|
|1 0| |1 0| |1 0| |1 1|
即2对应的数是“0002”。
输入描述:输入有多组数据。
每组数据两行:第一行包含一个整数n (1≤n≤100);第二行包含n个正整数Xi (1≤Xi≤10000)
输出描述:对应每一组输入,输出一行相应的密码。
//星际密码 public class Main40 { public static void main(String[] args) { int[] nums=new int[10001]; nums[1]=1; nums[2]=2; for (int i = 3; i < 10001; i++) { nums[i]=nums[i-1]+nums[i-2]; nums[i]=nums[i]%10000; } Scanner sc=new Scanner(System.in); while (sc.hasNext()){ StringBuilder sb=new StringBuilder(); int n=sc.nextInt(); for (int i = 0; i < n; i++) { int xi=sc.nextInt(); sb.append(String.format("%04d",nums[xi])); } System.out.println(sb); } } }
树根
题目描述:数根可以通过把一个数的各个位上的数字加起来得到。如果得到的数是一位数,那么这个数就是数根;如果结果是两位数或者包括更多位的数字,那么再把这些 数字加起来。如此进行下去,直到得到是一位数为止。
比如,对于24 来说,把2 和4 相加得到6,由于6 是一位数,因此6 是24 的数根。
再比如39,把3 和9 加起来得到12,由于12 不是一位数,因此还得把1 和2 加起来,最后得到3,这是一个一位数,因此3 是39 的数根。
现在给你一个正整数,输出它的数根。
输入描述:输入包含多组数据。
每组数据数据包含一个正整数n(1≤n≤10E1000)。
输出描述:对应每一组数据,输出该正整数的数根。
public class Main41 {
//树根
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
while (scanner.hasNext()){
String line=scanner.nextLine();
while (line.length() > 1){
int sum=0;
for (int i = 0; i < line.length(); i++) {
sum += line.charAt(i)-'0';
}
line=String.valueOf(sum);
}
System.out.println(line);
}
}
}