下列整型常量 i 的定义中,正确的是( )java
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);
该代码编译出错的缘由?app
b1和b2是byte型,在计算的时候java将其上转成int型进行计算,也就是b1+b2的和是int型,而b3是byte型,因此b3=(b1+b2)这一步编译出错。优化
表达式的数据类型自动提高, 关于类型的自动提高,注意下面的规则。 this
①全部的byte,short,char型的值将被提高为int型; spa
②若是有一个操做数是long型,计算结果是long型; .net
③若是有一个操做数是float型,计算结果是float型; code
④若是有一个操做数是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”。