java
1.什么是受保护的代码
方法一:将Java代码编译成class文件进行保存,java编译具有不可逆性,此时别人是无法更改。
方法二:将java代码生成,jar包,war包等包的形式进行存储,此方法也是根据编译的不可逆性来进行保护。
方法三:将java代码保存到svn服务器,该方法可以记录所有的java更改,有效的保存版本信息。
2. ThreadLocal的作用是什么?
ThreadLocal一般称为线程本地变量,是一种特殊的线程绑定机制,将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本,通过ThreadLocal可以将对像的可见范围限制在同一线程
3. 在java中如何实现精准地数字计算?
public static void main(String [] args){
double js1 = 1.9;
double js2 = 0.3;
//创建BigDecimal对象,并把js1,js2进行入参
BigDecimal big1 = new BigDecimal(Double.toString(js1));
BigDecimal big2 = new BigDecimal(Double.toString(js2));
//使用add方法进行加的计算
double sum = big1.add(big2).doubleValue;
System.out.print(sum);
}
4. Datatime 是否可以赋值为null?
Datatime是strucr值类型不能赋值为null,只有Datatime泛型表达Datatime类型可以赋值为null但这只是一种简写,Datatime的实际类型为 Nullable<Datatime> ,所有值类型可以转换为这种形式来赋值为null.
5.public BigDecimal add(BigDecimal p1,BigDecimal p2){
p1.add(p2);
return p1;
}
add(new BigDecimal(1),new BigDecimal(2))返回多少?
结果为 1
6.写出八个开发中最常使用的java 类,并做简要说明?
1. String 字符串类 获得长度length()的方法,subString()的方法等
2. System 可得到系统信息 系统输出System.out.println();
3. StringBuilder 字符串工具类 追加append(); 插入Insert();
4. Thread 线程类,启动start() 获得线程ID getID();
5. Math 与数学有关得工具类 随机数 random(); 较小值 min();
6. ArrayList 底层用数组实现得集合 添加add() 清除clear()
7. Scanner 简单文本扫描器
8. File 目录或文件操作类 获得文件名称Name() 获得文件路径getPath()
7.在JAVA中如何操作文件(读写,创建,删除)
public static void main(String [] args ) throws IOException{
String path = "e:\\test\\test\\test3.txt";
File file = new File(path);
if(!file.exists()){
file.getParentFile().mkdirs();
}
//创建
file.createNewFile();
//写入
FileWriter fw = new FileWriter(file,true);
BufferedWriter bw = new BufferedWriter(fw);
bw.write("xxxaffdf");
bw.flush();
bw.close();
fw.close();
//读取
FileReader fr = new FileReader(file);
BufferedReader br = new B;ufferedReader(fr);
String str = br.readLine();
System.out.println(str);
//删除
file.delete();
}
8. java反射机制 invoke作用?
invoke是调用反射方法,该方法有两个参数,第一个参数是调用这个方法的实例,第二个方法是这个方法的参数类表
9. 怎样关闭线程?
1. 使用退出标志,使线程正常关闭。
2. 使用stop()方法,强制终止线程(不推荐使用)
3.使用interrupt 中断线程。
10. java数据持久化工具有哪些?
User类实现serablize接口,在main函数下 new 一个 ObjectDataOutStream , 使用writeObject方法将user的实例穿进去,写入就可以了,读取只有new 一个输入流就行了。
11. 描述一下JVM加载class类的原理机制 ?
JVM会确保这个类是否加载,连接(验证,准备,解析),初始化,当加载到连接这一阶段,有验证,准备(给静态变量分配空间并设置默认初始值)解析(将符号引用替换成直接引 用)三个步骤。
3.12 静态嵌套类和内部类的不同
嵌套类是被声明为静态的内部类,即Static Nested Class 它可以不依赖于外部类实例被实例化,而通常的内部类(Inner Class)需要在外部类实例化后才能实例化
1.静态内部类(Inner Class)意味着创建一个static 内部类的对象,不需要一个外部类对象
2.不能从一个static 内部类的一个对象访问一个外部类对象
3.24 在java中,构造方法必须满足什么样的规则,构造方法static,final,synchronized,abstract,native可以修改吗?
在java 中,构造方法必须满足的规则,1.方法名于类名相同,2.无返回值 3 .参数列表不同
不能被static, final ,synchronized,abstract和native修饰,构造方法不能被子类继承,所以用final和abstract 修饰没有任何意义,构造方法用于初始化一个新建对象,所以用statis修饰没有任何意义,多个线程不会同时创建内存地址相同的对象,因此使用synchronized修饰也是没有必要的,因此,java语言目前还不支持native类型的构造方法。
3.25 String如果Byte[] 如何防止乱码
String 转 byte[] 有两种方式:
第一种方式: byte[] midytes = isoString.getBytes("UTF-8"); //为UTF8编码
第二种方式: byte[] isoret = 字符串.getBytes("ISO-8859-1"); //为ISO-8859-1编码 其中ISO-8859-1为单字节的编码
3.26 什么是乐观锁和悲观锁
悲观锁,就是不管是否发生多线程冲突,只有存在这种可能,就每次访问都加锁
乐观锁,就是通过标记值控制,每次操作前通过标记值判断是否最新内容。
3.27 2 < < 2 等于多少?
这是java 中的位移运算, 2 < < 2 即相当于 2 * 2的2次方