java基础知识1

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倍。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值