java随笔一
1.java的跨平台:
java通过不同的系统, 不同版本 ,不同位数的java虚拟机(jvm),来屏蔽不同的系统指令集差异
而对外体统一的接口(java API), 对于我们普通java开发者而言,只需要按照接口开发即可.
如果自己的系统需要部署到不同的环境时,只需要在系统上面安装对应版本的虚拟机即可.
2.环境开发步骤:
下载对应的组件,安装好JDK,配置环境变量(JAVA_HOME,PATH等) ,Eclipse正常解压,设置workspace的默认编码
Tomcat正常解压 , 把Tomcat集成到eclispe中,安装好插件.......SVN/git
3.int数据占几个字节 占4个字节,32位
数据类型: 8种 byte(1 8) short(2 16) int(4 32) long(8 64) float(4 32) double(8 64) char(2 16) boolean(1 1)
4.面向对象特征:封装,继承,多态,抽象
5.有了基本数据类型,为什么还需要包装类型:
包装类型
装箱和拆箱
java是一个面向对象的语言,而基本的数据类型,不具备面向对象的特征
6.==和equels()的区别
==是比较变量的值是否相同,比较对象的内存是不是相同
String a = new String("foo");
String b = new String ("foo");
a==b 返回错误
a.equals(b)正确
7.String 和StringBuilder的区别? StringBuffer和StringBuilder的区别?
String 是内容不可变的字符串,String底层使用了一个不可变的字符数组(使用了final修饰:private final char value[]) 例如String str=new String("bbbb");
StringBuilder和StringBuffer内容是可变的,例如 字符串的拼接 用apend方法
StringBuilder是线程不安全的,效率较高,而StringBuffer相反
8.java中的集合:
java中的集合分为value和 key-value(Conllection Map)两种 ,
存储值的又分为List和Set
List是有序的,可以重复的
set是无序的,不可以重复的(重不重复根据equals和hashcode判断,也就是一个对象如果要存储在set中,必须重写equals和hashcode)
存储key-value的为map
9.说出ArrayList,Vector, LinkedList的存储性能和特性
ArrayList和Vector都是使用数组方式存储数据,此数组元素数大于实际存储的数据以便增加和插入元素,它们都允许直接按序号索引元素,
但是插入元素要涉及数组元素移动等内存操作,所以索引数据快而插入数据慢,Vector由于使用了synchronized方法(线程安全),通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,
但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。
说出底层区别和使用场景:
ArrayList底层是数组;LinkedList底层用的是链表
10.HashMap和HashTable的区别?HashMap和CurentMap的区别?
相同点:HashMap和HashTable都可以用来存储key-value的数据
1.HashMap是可以把null作为key或者value的,而HashTable是不可以的
2.HashMap是线程不安全的,效率高;而HashTable是线程安全的,效率较低