1. JAVA 的基本数据类型有哪些 ? String 是不是基本数据类型 ?
Java 有 8 种基本数据类型: byte int short long double float Boolean charbyte int short long 都属于整数类型. Double float 属于浮点类型. Boolean 为布尔类型
Char 为字符型
String 不是基本数据类型.它定义的为对象
2. 一个".java"源文件中是否可以包括多个类(不是内部类)?有什么限制?
可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件名相一致。
3. Java 有没有 goto?
java 中的保留字,现在没有在 java 中使用。
4. 说说&和&&的区别.
&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为 true 时,整个运算结果才为 true,否则,只要有一方为 false,则结果为 false。&&还具有短路的功能,即如果第一个表达式为 false,则不再计算第二个表达式。
5. 在 JAVA 中如何跳出当前的多重嵌套循环?
在 Java 中,要想跳出多重循环,可以在外面的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的 break 语句,即可跳出外层循环。
6. switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
在 switch(expr1)中,expr1 只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是 int 基本类型或 Integer 包装类型,由于,byte,short,char 都可以隐含转换为 int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long 和 String 类型都不符合 switch的语法规定,并且不能被隐式转换成 int 类型,所以,它们不能作用于 swtich 语句中。
7. short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
对于 short s1 = 1; s1 = s1 + 1; 由于 s1+1 运算时会自动提升表达式的类型,所以结果是 int 型,再赋值给 short 类型 s1 时,编译器将报告需要强制转换类型的错误。对于 short s1 = 1; s1 += 1;由于 += 是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译
8. char 型变量中能不能存贮一个中文汉字?为什么?
char 型变量是用来存储 Unicode 编码的字符的,unicode 编码字符集中包含了汉字,所以,char 型变量中当然可以存储汉字啦。不过,如果某个特殊的汉字没有被包含在 unicode 编码字符集中,那么,这个 char 型变量中就不能存储这个特殊汉字。补充说明:unicode 编码占用两个字节,所以,char 类型的变量也是占用两个字节。
9. 用最有效率的方法算出 2 乘以 8 等於几?
2 << 3,因为将一个数左移 n 位,就相当于乘以了 2 的 n 次方,那么,一个数乘以 8 只要将其左移 3位即可,而位运算 cpu 直接支持的,效率最高,所以,2 乘以 8 等於几的最效率的方法是 2 <<3。
10.谈谈你对java中final关键字的理解
(1)修饰类:当用final修饰一个类的时候,表明这个类不能被继承。也就是说,如果一个类永远不会让它被继承,就可以使用final修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员都会被隐式地指定为final方法。
(2)修饰方法:final修饰方法有两个原因,一是把方法锁定,以防止任何继承类修改它的含义;二是效率
(3)修饰变量:修饰变量final用的最多,如果是基本数据类型的变量,被final修饰后数值一旦初始化之后便不能修改;如果是引用类型的变量,被final修饰后一旦初始化之后便不能让其指向另一个对象
11.final和static区别
很多时候很容易吧final和static关键字混淆,static作用于成员变量用来表示只保存一份副本,而final的作用是用来保证变量不可变。
12. "=="和 equals 方法究竟有什么区别?
(1)“==”是看两个对象是否是同一个对象,也就是两个对象引用是否指向同一个对象(Java分配的内存地址一样)当然如果用于int,long,double就不是看两个值是否相等了。 (2)equals 方法是用于比较两个独立对象的内容是否相同,就好比去比较两个人的长相是否相同,它比较的两个对象是独立的。
13. 静态变量和实例变量的区别?
(1)语法定义上的区别:静态变量前要加 static 关键字,而实例变量前则不加。 (2)程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
14. 是否可从一个 static 方法内发出对非 static 方法的调用?
不可以。因为非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而 static 方法调用时不需要创建对象,可以直接调用。也就是说,当一个 static 方法被调用时,可能还没有创建任何实例对象,如果从一个 static 方法中发出对非static 方法的调用,那个非 static 方法是关联到哪个对象上的呢?这个逻辑无法成立,所以,一个 static 方法内部发出对非 static 方法的调用
15. 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 层的表单数据的类型。在 Hibernate 中,如果将 OID 定义为 Integer 类型,那么 Hibernate 就可以根据其值是否为 null而判断一个对象是否是临时的,如果将 OID 定义为了 int 类型,还需要在 hbm 映射文件中设置其 unsaved-value 属性为 0。另外,Integer 提供了多个与整数相关的操作方法,例如,将一个字符串转换成整数,Integer中还定义了表示整数的最大值和最小值的常量