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次方