基础概览

1、数据类型

   整型:byte1字节), short2字节), int4字节), long8字节), 字符型:char2字节), 浮点型:float4字节), double8字节), 布尔:boolean

Java中所有的数据都是以补码的形式表示,计算机中负数由补码进行表示,补码=原码取反 + 1;正数的源码、反码、补码相同,负数符号位为1,其余位原码取反然后加1(补码)。

2、枚举类型enum

//定义:
public class ProductConstant {
    public enum AttrEnum{        //可以直接定义使用,不需要外层的类
        ATTR_TYPE_BASE(1,"基本属性"),
ATTR_TYPE_SALE(0,"销售属性"); // private int code; // private String msg; // AttrEnum(int code,String msg){ this.code=code; this.msg=msg; } public int getCode(){ return code; } public String getMsg(){ return msg; } } } // 使用: ProductConstant.AttrEnum.ATTR_TYPE_BASE.getCode(); //获取键 ProductConstant.AttrEnum.ATTR_TYPE_BASE.getMsg(); //获取值

3、Java I/O

      在java中使用输入流来向一个字节序列对象中写入,使用输出流来向输出其内容有着60多种流类型,分为字节流8 位类型和字符流16位类型。

在程序中所有的数据都是以流的方式存储或传输的,程序需要数据时使用流读取数据,程序需要将一些数据保存的时候使用输出流保存

 

4、Pair

   当一个函数返回两个值并且两个值都有重要意义时我们一般会用Mapkeyvalue来表达,但是这样的话就需要两个键值对,用Map映射去做处理时,此时的key相当于value的一个描述或者引用,而具体的信息都保存在value中,我们可以通过key去获取对应的value。但是keyvalue都保存具体信息时,我们就需要用到Pair了。Pair对也是键值对的形式。

5、foreach和for

增强foreach适用于只是进行集合或数组遍历for则在较复杂的循环中效率更高。

foreach不能对数组或集合进行修改(添加删除操作),如果想要修改就要用for循环。

  所以相比较下来for循环更为灵活。

 foreach  (元素类型  元素名称 : 遍历数组(集合)(或者能进行迭代的)){

      语句

     }

例子:

List<String> arr = new ArrayList();
arr.add(“你好”);
arr.add(“我好”);
arr.add(“大家好“);
foreach(String str:arr){
  System.out.println(str);
}

6、包装类型

    1> 包装类型可以为 null,而基本类型不可以。包装类型可以应用于 POJO 中,而基本类型则不行

数据库的查询结果可能是 null,如果使用基本类型的话,因为要自动拆箱(将包装类型转为基本类型,比如说把 Integer 对象转换成 int 值),就会抛出 NullPointerException 的异常

    2> 包装类型可用于泛型,而基本类型不可以

    3> 基本类型比包装类型更高效

    4> 自动装箱和自动拆箱

 7、String 类的常用方法都有那些?

  • indexOf():返回指定字符的索引。
  • charAt():返回指定索引处的字符。
  • replace():字符串替换。
  • trim():去除字符串两端空白。
  • split():分割字符串,返回一个分割后的字符串数组。
  • getBytes():返回字符串的 byte 类型数组。
  • length():返回字符串长度。
  • toLowerCase():将字符串转成小写字母。
  • toUpperCase():将字符串转成大写字符。
  • substring():截取字符串。
  • equals():字符串比较。

     String、StringBuffer、StringBuilder。

    String 声明的是不可变的对象,每次操作都会生成新的 String 对象,然后将指针指向新的 String 对象,而 StringBuffer、StringBuilder 可以在原有对象的基础上进行操作。StringBuffer 是线程安全的,而 StringBuilder 是非线程安全的,但 StringBuilder 的性能却高于 StringBuffer,所以在单线程环境下推荐使用 StringBuilder,多线程环境下推荐使用 StringBuffer。

 8、Files的常用方法都有哪些?

  • Files.exists():检测文件路径是否存在。
  • Files.createFile():创建文件。
  • Files.createDirectory():创建文件夹。
  • Files.delete():删除一个文件或目录。
  • Files.copy():复制文件。
  • Files.move():移动文件。
  • Files.size():查看文件个数。
  • Files.read():读取文件。
  • Files.write():写入文件。

9、普通类、抽象类、final

  • 普通类不能包含抽象方法,抽象类可以包含抽象方法。
  • 抽象类不能直接实例化,普通类可以直接实例化。
  • final 不能修饰抽象类,final 修饰的类叫最终类,该类不能被继承。final 修饰的方法不能被重写。final 修饰的变量叫常量,常量必须初始化,初始化之后值就不能被修改。

10、 HashMap 和 Hashtable 有什么区别?

     hashTable同步的,而HashMap是非同步的;hashMap允许空键值,而hashTable不允许。

11、 如何实现数组和 List 之间的转换?

  • List转换成为数组:调用ArrayList的toArray方法。

  • 数组转换成为List:调用Arrays的asList方法。

  示例:

 String[] stationNoArray = stationNo.split(",");
list = list.stream().filter(r -> Arrays.asList(stationNoArray).contains(r.getStationNo())).collect(Collectors.toList());

首先,该方法是将数组转化为list。有以下几点需要注意:

  (1)该方法不适用于基本数据类型(byte,short,int,long,float,double,boolean)

  (2)该方法将数组与列表链接起来,当更新其中之一时,另一个自动更新

  (3)不支持add和remove方法

12、 Array 和 ArrayList 有何区别?

  • Array可以容纳基本类型和对象,而ArrayList只能容纳对象。 

  • Array是指定大小后不可变的,而ArrayList大小是可变的。 

  • Array没有提供ArrayList那么多功能,比如addAll、removeAll和iterator等。

13、Iterator 怎么使用?有什么特点?

     迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结构。

   只能单向移动:

(1) 使用方法iterator()要求容器返回一个Iterator。第一次调用Iterator的next()方法时,它返回序列的第一个元素。注意:iterator()方法是java.lang.Iterable接口,被Collection继承。

(2) 使用next()获得序列中的下一个元素。

(3) 使用hasNext()检查序列中是否还有元素。

(4) 使用remove()将迭代器新返回的元素删除。 

Iterator是Java迭代器最简单的实现,为List设计的ListIterator具有更多的功能,它可以从两个方向遍历List,也可以从List中插入和删除元素。

14、session和Cookie

Session是在服务端保存的一个数据结构,用来跟踪用户的状态,这个数据可以保存在集群、数据库、文件中;Cookie是客户端保存用户信息的一种机制,用来记录用户的一些信息,也是实现Session的一种方式。

15、

posted @ 2020-10-09 13:35  zhangtianhong511  阅读(65)  评论(0)    收藏  举报