1 八种基本类型
名称 大小(二进制) 默认值 包装类型
byte字节型 8 0 Byte
short 16 0 Short
int 32 0 Integer
long 64 0 Long
float 32 0.0f ··
double 64 0.0d ··
char 16 "/0" (输出为空格) ··
boolear 1 false ··
1字节=8byte 所以int是32位 所以占 4 个字节 boolear占1字节
只有成员变量才有初始值 初始值就是默认值
局部变量没有初始值,运行时会直接报错
全局变量中 String的初始值是null
同时被static修饰的变量是成员变量,即在方法中变量不能用static修饰。
···········
2 Java四大基本特征
封装
将对象封装成高度自治和相对封闭的个体。 即用private修饰属性 在用setter和getter获取
抽象
就是把现实生活中的实体抽象为类,比如人 都有很多共同之处,姓名年龄,吃饭睡觉等,这些可以抽象成一个类,即抽象
多态
????
继承
继承一个类就是把这个类所定义的内容作为自己的内容,并可以加入若干新的内容,或修改原来的方法,这就是继承。
3 装箱和拆箱
装箱:把基本数据类型转换为对应的包装类型
Integer.valueOf(1);
Integer i=1;自动装箱,实际上调用了上面的方法··
拆箱:将包装类型转化为基本的数据类型
Integer i=1;
int j=i;//自动拆箱 实际上执行了 int j=i.intValue();
有基本的数据类型为什么要使用包装类型?
因为Java是面向对象的语言,而基本数据类型不具备面向对象的特征,
null integer可以为空。int不能为空 默认是0
Max Min
(包装类型有缓存区域???)
Integer 缓存区域 -128~127
即 integer i=1,Integer j=1; i==j;(同一个值)
4 ==和equal的区别
==是为了判断两个变量的值是否相等。变量分为基本数据类型,和引用数据类型(比较地址是否相等)
equal为了比较两个对象是否长得一样,即某些特征是否一样,实际上是调用对象的equal方法进行比较。不适用于基本数据类型。
5 讲一下String和StringBuilder StringBuffer的区别,
java提供了这三个类操作字符串,字符串是多个字符的集合。
String是内容不可变得字符串,String底层提供了一个不可变得数组(用final修饰的)
String str=new String("bbb");
而StringBuilder StringBuffer,是内容可以改变的字符串。其底层是可变的数据(没有用final修饰),
关于拼接字符串
1 String进行拼接 String c="a"+"b"; //等于创建了三个对象 很浪费
2 StringBuilder和StringBuffer
StringBuilder sb=new StringBuilder();
sb.apend("a").apend("b");//通过apend拼接
(--------所以拼接不能用String进行拼接,一般用另外两个)
以及StringBuilder StringBuffer的区别
StringBuilder是线程不安全的,效率较高,StringBuffer是线程安全,效率较低。
因为StringBuilder加了同步锁(synchronized)
6.Java中的集合
集合分为 value和 key-value两种
存储值的分为 list和set两种
list和set区别
1,list是有序的,可以重复的
2.set是无序的,不可以重复,根据equal和hashcode进行判断,也就是如果一个对象要存储在set中,必须重写equal和hashcode方法
存储key-value的分为 map
7'ArrayList和LinkedList的区别(说底层原理,再说使用场景)
list分为以上两类
ArrayList 底层使用的是数组,数组查询所有查询特定元素比较快,但是插入删除和修改比较慢(数据在内存中是一快连续的内存,插入和删除需要移动内存)。
LinkedList底层使用的是链表,链表不要求内存是连续的,在当前元素内存中存放下一个或者上一个元素的地址,查询时需要一个一个的找,查询效率度,而插入式 不需要移动内容,只需要改变引用指向即可,所以插入或者删除效率高
8.HashMap和HashTable的区别
相同点:两个都可以用来存储key-value的数据
区别:
1.hashmap是可以吧null作为key或者value的,HASHTABLE不可以。
2.hashmap是线程不安全的,效率较高,hashtable是线程安全的,效率较低
想线程安全,又想效率高?
通过把整个Map分为N个segnent(类似hashtable),可以提供相同的线程安全,但是效率提升N背,默认提升16倍。