文章目录
- 1、访问修饰词 public,private,protected ,以及默认(default) 修饰范围的区别?
- 2、Java 常见的基本数据类型 ?
- 3、float f=3.4;是否正确?
- 4、举例内存中的栈(stack)、堆(heap)和静态区(static area)的用法?
- 5、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
- 6、switch 的 case 可以放什么类型
- 7、== 和 equals()区别
- 8、一个函数里 break、continue、return 的区别?
- 9、怎么判断一个对象是否属于某一个类?
- 10、final 在Java 中的作用?
- 11、String 属于基础的数据类型嘛?
- 12、Java 操作字符串有哪些类?
- 13、普通类和抽象类有哪些区别?
- 14、什么是线程安全和不安全?
- 15、Array 和 ArrayList 有何区别?
- 16、怎么确保一个集合不被修改?
1、访问修饰词 public,private,protected ,以及默认(default) 修饰范围的区别?
2、Java 常见的基本数据类型 ?
Java中的基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type)和枚举类型(enumeration type),剩下的都是引用类型(reference type)。
3、float f=3.4;是否正确?
答:不正确。3.4是双精度数,将双精度型(double)赋值给浮点型(float)属于下转型(down-casting,也称为窄化)会造成精度损失,因此需要强制类型转换float f =(float)3.4; 或者写成float f =3.4F;
4、举例内存中的栈(stack)、堆(heap)和静态区(static area)的用法?
栈空间操作起来最快但是栈很小,通常大量的对象都是放在堆空间
String str = new String(“hello”);
上面的语句中变量str放在栈上,用new创建出来的字符串对象放在堆上,而”hello”这个字面量放在静态区。
5、Math.round(11.5) 等于多少?Math.round(-11.5)等于多少?
Math.round(11.5)的返回值是12,Math.round(-11.5)的返回值是-11。四舍五入的原理是在参数上加0.5然后进行下取整。
6、switch 的 case 可以放什么类型
答:byte、short 、int 、long、枚举、String 六种类型
7、== 和 equals()区别
答:“==” 比较的是值是否相等,equals() 一般比较的是地址是否相等 (Object 类equals 一般比较的是地址是否相等,String 类 一般比较的是 值是否相等)
8、一个函数里 break、continue、return 的区别?
答:
break 结束内层循环,到外层循环去 。
continue 结束本次循环,执行下一次循环。
return 结束该方法,返回值给调用者。
9、怎么判断一个对象是否属于某一个类?
答:“boolean result = object instanceof class 参数 Result:布尔类型。 Object:必选项。任意对象表达式。 class:必选项。任意已定义的对象类。”
10、final 在Java 中的作用?
答:1) final 修饰的类 不能被继承
2) final 修饰的方法 不能被重写
3)final 修饰的变量,必须初始化,并且不能被修改
11、String 属于基础的数据类型嘛?
答:String 不属于基础的类型,基础类型有八种:
byte、boolean、char、short、int、float、long、double,而 String 属于对象。
12、Java 操作字符串有哪些类?
答:String,StringBuffer, StringBuilder.
String 和 StringBuffer、StringBuilder 的区别在于 String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作,所以在经常改变字符串内容的情况下最好不要使用 String。
StringBuffer 和 StringBuilder 最大的区别在于,StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。
13、普通类和抽象类有哪些区别?
答:1) 普通类不能包含抽象方法,抽象类可以包含抽象方法。
2)抽象类不能直接实例化,普通类可以直接实例化。
14、什么是线程安全和不安全?
答:线程安全: 指多个线程在执行同一段代码的时候采用加锁机制,使每次的执行结果和单线程执行的结果都是一样的,不存在执行程序时出现意外结果。
线程不安全: 是指不提供加锁机制保护,有可能出现多个线程先后更改数据造成所得到的数据是脏数据。
15、Array 和 ArrayList 有何区别?
答:1) Array 可以存储基本数据类型和对象, ArrayList 只是存储对象
2)Array 指定固定大小,ArrayList 大小自动扩展
3)Array 内置方法没有ArrayList 多,比如 addAll ,remvoveAll,等只有ArrayList 含有。
16、怎么确保一个集合不被修改?
答:可以使用 Collections. unmodifiableCollection(Collection c) 方法来创建一个只读集合,这样改变集合的任何操作都会抛出 Java. lang. UnsupportedOperationException 异常。
示例:
List<String> list = new ArrayList<>();
list. add("x");
Collection<String> clist = Collections. unmodifiableCollection(list);
clist. add("y"); // 运行时此行报错
System. out. println(list. size());
待续·········