switch中的值可以使byte? 可以是long?或者可以是String吗?
1.在stitch(express)中定义的是:express可以是一个整数表达式或者是枚举常量,整数表达式可以使int基本型也可是其Integer类型,byte,char,short可以隐式的转化为int,所以这些类型以及这类型的包装型是可以放在express中的。显然long与String都不符合其语法定义,并且不能隐式的转化为int型。所以不能把long与String放在express中
2.short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
在java编译器执行的的时候s1+1会转换为与1同类型的表达式,因为s1是short型s1=s1+1在赋值时会出现强制转换异常;然而+=运算符是java内部比较特殊的运算符,java编译器会进行特殊的处理,所以能正确变异。
3.char型变量中能不能存贮一个中文汉字?为什么?
能,因为char是用来存储Unicode编码的,而unicode存储了汉字编码集,所以char能用阿里存储汉字;当然如果unicode中没有存放 某个特殊的汉字编码,那么char中当然也不能存储这个特殊的汉字。另外要注意的是一个汉字占用两个字节的unicode,所以一个汉字是两个字节。
4.用最有效率的算法算出4x4?
引用不能变
举个例子如下
final StringBuffer a=new StringBuffer("abcdefg");
在对 a进行一次引用 a=new StringBuffer("adf");这样会出现变异异常;
也能用对象是可以变的如:a.append("dada");他的内容改变了,也就说引用的对象改变了。
6.静态变量和实例变量的区别?
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
public class VariantTest
{
public static int staticVar = 0;
public int instanceVar = 0;
public VariantTest()
{
staticVar++;
instanceVar++;
System.out.println(“staticVar=” + staticVar + ”,instanceVar=” + instanceVar);
}}
7.是否可以从一个static方法内部发出对非static方法的调用?
在类还没进行实例化时不可以。一个非static方法在调用时必须关联到一个实例上,static方法调用时只要程序加载了类的字节码就可以直接用了,不用创建实例。所以static方法在调用时不知道非static关联到哪个类上,逻辑上明显有误,所以不可以。
而当创建了实例后那就另当别论了。
8.Integer与int的区别
int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况,例如,要想表达出没有参加考试和考试成绩为0的区别,则只能使用Integer。在JSP开发中,Integer的默认为null,所以用el表达式在文本框中显示时,值为空白字符串,而int默认的默认值为0,所以用el表达式在文本框中显示时,结果为0,所以,int不适合作为web层的表单数据的类型。
9.Math.round、Math.ceil与Math.floor的用法?
1.ceil是天花板的意思,就是向上取整如Math.cei(12.3)=13 Math.cei(-12.3)=12
2.floor是地板的意思,就是向下取整Math.floor(12.3)=12 Math.floor(-12.3)=-13