Java基础部分知识点(初稿)

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基础部分知识点(初稿))