标签:
1.下列整型常量 i 的定义中,正确的是( )
A.final i;
B.static int i;
C.static final int i=234;
D.final float i=3.14f;
解析:关于final关键字,final可以修饰类,修饰类的之后,该类就不能再被继承了。(可以出于安全角度考虑,但是尽量不把 类设为final)。final可以修饰方法,被修饰的方法就不会被该类的子类的方法覆盖,也就是将这个方法锁定。final可以修饰变量,但是变量的值一经赋值便不能改变,也就是说被final修饰的变量是常量。
2.
public static void main (String[] args) { String classFile = "com. jd. ". replaceA11(".", "/") + "MyClass.class"; System.out.println(classFile); }
输出:
///////MyClass.class
解析:replaceAll这个方法的参数是正则表达式,在正则表达式中“.”代表任何字符
3.byte b1=1,b2=2,b3,b6; final byte b4=4,b5=6; b6=b4+b5; b3=(b1+b2); System.out.println(b3+b6);
该代码编译出错的原因?
b1和b2是byte型,在计算的时候java将其上转成int型进行计算,也就是b1+b2的和是int型,而b3是byte型,所以b3=(b1+b2)这一步编译出错。
表达式的数据类型自动提升, 关于类型的自动提升,注意下面的规则。
①所有的byte,short,char型的值将被提升为int型;
②如果有一个操作数是long型,计算结果是long型;
③如果有一个操作数是float型,计算结果是float型;
④如果有一个操作数是double型,计算结果是double型;
而声明为final的变量会被JVM优化,第3行相当于 b6 = 10.
4.String str = new String(“abc”),“abc”在内存中是怎么分配的?
堆,字符串常量区。
解析:什么是字符串常量池
JVM为了减少字符串对象的重复创建,其维护了一个特殊的内存,这段内存被成为字符串常量池或者字符串字面量池
工作原理
当代码中出现字面量形式创建字符串对象时,JVM首先会对这个字面量进行检查,如果字符串常量池中存在相同内容的字符串对象的引用,则将这个引用返回,否则新的字符串对象被创建,然后将这个引用放入字符串常量池,并返回该引用。
5.该段代码的输出:
public class test02{ public static void main(String[] args){ Integer var1=new Integer(1); Integer var2=var1; doSomething(var2); System.out.print(var1.intValue()); System.out.print(var1==var2); } public static void doSomething(Integer integer){ integer=new Integer(2); } }
结果: 1true
解析:只有对引用对象的内部做了修改,才会影响原对象,如果直接将引用修改了,则对原对象没有影响,唯一的影响就是:这个被修改的引用,现在不是原来对象的引用,而是新对象的引用。
也就是说doSomething这个方法其实do了nothing!
class likeInteger{ int value; public likeInteger(int value){ this.value=value; } } public class test02{ public static void change1(likeInteger n){ n=new likeInteger(2); } public static void change2(likeInteger n){ n.value=3; } public static void main(String[] args) { likeInteger num=new likeInteger(1); System.out.print(num.value); change1(num); System.out.print(num.value); change2(num); System.out.print(num.value); } }
这段代码的输出是:113
6.下列选项中关于Java中super关键字的说法正确的是()
A.super关键字是在子类对象内部指代其父类对象的引用
B.super关键字不仅可以指代子类的直接父类,还可以指代父类的父类
C.子类通过super关键字只能调用父类的方法,而不能调用父类的属性
D.子类通过super关键字只能调用父类的属性,而不能调用父类的方法
解析:看代码:
class animals{ String move="slow"; public void f(){ System.out.println("this is fatherclass f"); } } class tiger extends animals { String move="fast"; public void f(){ System.out.println(super.move); super.f(); System.out.println(this.move); } } public class test03{ public static void main(String[] args) { tiger t=new tiger(); t.f(); } }
输出:
C,D都是错误的。
7.String和StringBuffer的区别?
解析:String的长度是不可变的,StringBuffer的长度是可变的。如果对于一个经常需要修改内容的字符串来说,用StringBuffer比价好,因为StringBuffer的append方法相对于String的+不需要每次都分配新的内存。
使用StringBuffer的append方法进行字符串的连接,将比String更加节约内容,例如应用于数据库SQL语句的连接,例如:
StringBuffer sb = new StringBuffer();
String user = “test”;
String pwd = “123”;
sb.append(“select * from userInfo where username=“)
.append(user)
.append(“ and pwd=”)
.append(pwd);
这样对象sb的值就是字符串“select * from userInfo where username=test and pwd=123”。
标签:
原文地址:http://www.cnblogs.com/Rui-Jia/p/5505940.html