前言
面试中对于技术职位,一般分笔试与面谈,如果面试官的一些小问题你可以立马找到对应的知识点扩展开来,那么这就是你的优势,本系列将讲述一些java面试中的事,不会很详细,但是应该比较全面吧。
主要内容
- assert有什么作用?
断言(assert)作为一种软件调试的方法,在实际开发中,assert主要用来保证程序的正确性,通常在程序开发和测试时使用。为了提高程序运行的效率,在软件发布后,assert检查默认是被关闭的。
java中的assert是关键字,C语言是库函数;C语言是编译时开启,Java语言是运行时开启。
- static关键字有哪些作用
1、为某特定数据类型或对象分配单一的存储空间;
2、实现某个方法或属性与类而不是对象关联在一起;
3、其四种使用情况:成员变量、成员方法、代码块和内部类
4、static实现了单例模式
- volatile有什么作用
被设计用来修饰被不同线程访问和修改的变量,被volatile类型定义的变量,系统每次用到它时都是直接从对应的内存当中提取,而不会利用缓存,在使用volatile后,所有线程在人和网时候所看到变量的值都是相同的。
注意:volatile不能保证原子性,不能代替sychronized,且其会阻止编译器对代码的优化。
- instanceof 有什么作用
一个二元运算符,其作用是判断一个引用类型的变量所指向的对象是否是一个类(或接口、抽象类、父类)的实例,即它左边的对象是否是它右边的类的实例,该运算符返回boolean类型的数据。
- strictfp 有什么作用
是strict float point的缩写,指的是精确浮点,在这个关键字声明的范围内,所有浮点数的计算都是精确的。
- 值传递与引用传递
原始数据类型的传递参数时是按值传递,而包装类型的传递参数时是按引用传递的。
- Math中的round、ceil和floor方法的功能各是什么?
1、round四舍五入,Math.round(11.5)结果为12、Math.round(-11.5)结果为-11
2、ceil向上取整,返回值类型为Double
3、floor向下取整,返回值类型为Double
- char型变量中是否可以存储一个中文汉字
Java默认使用Unicode编码方式,即每个字符占用两个字节,因此可以用来存储中文,英文占用一个字符,中文占用两个字符,采用这种存储方式的一个重要作用就是可以减少所需的存储空间,提高存储效率。
以下方法用来判断一个字符串中是否包含中文字符。
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/** * @Author:UncleCatMySelf * @Email:zhupeijie_java@126.com * @QQ:1341933031 * @Date:Created in 10:10 2018\9\5 0005 */
public class Test {
public static void judgeZChineseCharactor(String str){
String regEx = "[\u4e00-\u9fa5]";
//判断是否存在中文字符
if (str.getBytes().length == str.length()){
System.out.println("无汉字");
}else{
//如果存在中文字符,找出字符串中的中文字符
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
while (m.find()){
System.out.print(m.group(0)+"");
}
}
}
public static void main(String[] args) {
judgeZChineseCharactor("Hello World");
judgeZChineseCharactor("Hello 你好");
}
}
结果为:
无汉字
你好