基础概览
1、数据类型
整型:byte(1字节), short(2字节), int(4字节), long(8字节), 字符型:char(2字节), 浮点型:float(4字节), double(8字节), 布尔: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
当一个函数返回两个值并且两个值都有重要意义时我们一般会用Map的key和value来表达,但是这样的话就需要两个键值对,用Map映射去做处理时,此时的key相当于value的一个描述或者引用,而具体的信息都保存在value中,我们可以通过key去获取对应的value。但是当key和value都保存具体信息时,我们就需要用到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、
 
                     
                    
                 
                    
                
 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号