1、一个“.java”源文件是否可以包括多个类(不是内部类)?有什么限制?
.java 源文件中可以有多个类,但只能有一个 public 的类,并且 public 的类名必须与文件相一致
2、Java 有没有 goto?
goto 为 Java 中保留字,现在没有在 java 中使用
3、& 和 && 的区别
- & 和 &&:都可以作为逻辑与运算,表示逻辑与(and)。
- &&:具备短路功能(第一个表达式为 false 后,不会计算第二个表达式)。
- &:可以用作位运算符。当 & 两边的表达式不为 boolean 类型时,会进行按位与操作。
4、Java 中跳出多重嵌套循环
5、switch 语句能否作用在 byte 上,能否作用在 long 上,能否作用在 String 上?
- switch(参数):只能是一整数表达式或枚举常量。
- byte,shout,char 可以隐式转换为 int,可作为参数
- long 和 String 不能隐式转换为 int 类型,不可作为参数
注:题意为,swith 参数中能否直接写入非 int 型变量
6、 short s1 = 1;s1 = s1 + 1; 有什么错? short s1=1;s1 +=1; 有什么错?
- s1 + 1; 运算时会自动转换成 int 类型,即结果为 int 型。int 型赋值给 short 型,需要强制转换,不然报错。
- s1 +=1; 是 java 语言规定的运算符,java 编译器会对它进行特殊处理,因此可以正确编译。
7、char 型变量中能不能存贮一个中文汉字?为什么?
可以。char 用来存储 Unicode 编码的字符, Unicode 编码字符中包含了汉字
注:unicode 编码占两个字节,char 类型也占两个字节
8、某个数乘以 2 的 n 次数,最有效的操作方式
位运算( << ):一个数左移 n 位,相当该数乘以了 2 的 n 次方,位运算 cpu 直接支持,效率最高
9、设计一个百亿的计算器
- 计算机进行算术运算时会发生越界的情况
- 两个数值的运算结果不能超过计算机中的该类型的数值范围
- 自定义一个类用来表示很大的整数,提供与另一个整数进行加减乘除的功能方法。
- 两个成员变量:符号、字节数组(存储该数的二进制数)
- 构造方法中完成对成员变量的赋值
10、final 关键字修饰变量时,是引用不能变,还是引用的对象不能变?
- final 修饰变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。
- final 修饰 StringBuffer 后。StringBuffer 对象依旧可以通过 对象点 append() 方法,修改内容
11、== / equals 方法有什么区别
- ==:用来比较两个变量的值是否相等,即比较变量所对应的内存中所存储的数值是否相同。
- 基本数据或引用变量之间的比较用 ==
- equals:比较堆内容中保存的内容是否一致
- 一个类没有重写 equals 方法,那么默认的 equals 方法就是 == 操作符
12、静态变量 / 实例变量 的区别
- 静态变量(类变量): static 关键字修饰,属于类。可以直接用类名来引用。只要类的字节码(.class文件)被程序加载,静态变量即会被分配空间
- 实例变量:属于对象的属性。对象被实例化后实例变量才会被分配空间,通过对象才可调用实例变量
13、是否可以从一个 static 方法内部发出对非 static 方法的调用?
- 不可以
- 非 static 方法是要与对象关联在一起的,必须创建一个对象后,才可以通过对象进行调用
- 而 static 方法调用时不需要创建对象,可以直接调用。
- 如果从一个 static 方法中发出对非 static 方法的调用,非 static 无法关联对象,所以无法调用
14、Integer 与 int 的区别
- int 是8种原始数据类型之一。
- Integer 是 java 为 int 提供的封闭类
- int 默认值为 0,Integer 默认值为 null
- 所以 Integer 可以通过值来判断该数据是否有修改添加过
Java世界,探索有我