黑马程序员技术交流社区
标题:
java:从入门到放弃
[打印本页]
作者:
Wuli_su
时间:
2018-7-19 23:44
标题:
java:从入门到放弃
java语言发展史
SUN(Stanford University Network 斯坦福大学网络公司)
1995年5月23日,java语言诞生
1996年1月JDK1.0
1998年12月JDK1.2(将java分成了J2SE,J2EE,J2ME)
2004年10月JDK1.5(改名javaSE5.0)
2009年4月20日,甲骨文74亿美元收购SUN公司
什么是JVM
JVM(Java Virtual Machine)是java虚拟机,java程序需要运行在虚拟机上,不同平台有自己的虚拟机,因此java语言可以跨平台。
什么是JRE
包括Java虚拟机和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。
什么是JDK
JDK是提供给Java开发人员使用的,其中包含了java的开发工具(编译工具javac.exe打包工具jar.exe等),也包括了JRE。
计算机存储单元
无论是内存还是硬盘,计算机存储设备的最小信息单元叫“位(bit)”,我们又称之为“比特位”,通常用小写字母b来表示。
而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B来表示。 1B=8b 1KB=1024B
java中四类八种基本数据类型
数据类型 关键字 内存占用 取值范围
字节型 byte 1个字节 -128~127
短整型 short 2个字节 -32768~32767
整型 int(默认) 4个字节 -231次方~2的31次方-1
长整型 long 8个字节 -2的63次方~2的63次方-1
单精度浮点数 float 4个字节 1.4013E-45~3.4028E+38
双精度浮点数 double(默认) 8个字节 4.9E-324~1.7977E+308
字符型 char 2个字节 0-65535
布尔类型 boolean 1个字节 true,false
long类型:建议数据后加L表示
float类型:建议数据后加F表示
Java程序中要求参与的计算的数据,必须要保证数据类型的一致性,如果数据类型不一致将发生类型的转换
自动类型转换:将取值范围小的类型自动提升为取值范围大的类型
范围小的类型向范围大的类型提升,byte、short、char 运算时直接提升为int
byte、short、char <int<long<float<double
强制类型转换:将取值范围大的类型强制转换成取值范围小的类型
常用ASCLL码
字符 数值
0 48
A 65
a 97
变量前++ :先自加再赋值
变量后++ :先赋值再自加
逻辑运算符:
&(与)、&&(短路与)、|(或)、||(短路或)
&&(短路与):第一个条件不满足,后面的条件不再判断
循环中断
break:跳出当前层的循环
continue:停止运行剩余的循环主体,回到循环的开始处继续运行
switch中case穿透问题
在switch语句中,如果case的后面不写break,将出现穿透现象,也就是不会在判断下一个case的值,直接向后运行,直到遇到break,或者整体switch结束
数据类型 数组名[]=null; //默认值是null,表示暂时还没有任何指向的堆内存空间
数组名=new 数据类型[长度]; //使用关键词new命令编译器在堆内存中开辟一块堆内存供该数组使用
数组声明是在栈内存中保存了该数组的名称(实际上是保存对堆内存的引用地址)
方法的重载:方法名称相同,参数的类型和参数的个数不同,通过传递参数的个数及类型的不同可以完成不同功能的方法调用
Java IO
使用File类可以进行创建或者删除文件等常用操作
createNewFile():创建新文件
delete():删除文件
exists():判断文件是否存在
File类提供两个静态常量
pathSeparator:;
separator:\
mkdir():创建文件夹
File类中定义了两个列出文件夹内容的方法
public String[] list():列出全部名称,返回一个字符串数组
public File[] listFiles():列出完整的路径,返回一个File对象数组
isDirectory():判断给定的一个路径是否是目录
IO流
字节流主要操作byte类型对象,以byte数组为准
InputStream:输入流
OutputStream:输出流
OutputStream和InputStream均是抽象类,如果要使用此类首先要通过子类实例化对象,如果要操作的是一个文件,可以使用FileOutputStream和FileInputStream类为其实例化
集合框架
为什么会出现集合类?
面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储,集合是存储对象最常用的方式。
数组和集合都是容器有何区别?
数组也可以存储对象,但长度是固定的,集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象且可以存储不同类型的对象。
集合中存储的都是对象的引用(地址)
Collecton{
List:ArrayList,LinkedList,Vector
Set:HashSet,TreeSet
}
每个容器对数据的存储方式(数据结构)都有不同。
迭代器:集合取出元素的方式
List:元素是有序的,可以重复,该集合体系有索引
迭代时,只能通过迭代器的方法操作元素
ListIterator:List集合特有的迭代器,对Iterator中的方法进行了扩充
ArrayList:底层数据结构为数组
LinkedList:底层数据结构为链表
Vector:底层数据结构为数组(出现最早,后被ArrayList取代)
Set:元素是无序的,元素不可以重复
HashSet:底层数据结构是哈希表
HashSet如何保证元素的唯一性?
通过hashCode和equals两个方法
如果元素的hashCode值相同,判断equals是否为true,如果元素的hashCode值不同,不会调用equals
TreeSet:可以对set集合中的数据进行排序
底层数据结构是二叉树
TreeSet排序的第一种方式(自然排序):让元素自身具备比较性,元素需要实现Comparable接口,覆写compareTo方法
TreeSet排序的第二种方式:当元素自身不具备比较性或者具备的比较性不是所需要的时,让集合自身具备比较性,定义比较器,将比较器对象作为参数传递给TreeSet集合的构造函数
Map
Hashtable:底层数据结构是哈希表,不可以存入null键null值,该集合是线程同步的
HashMap:底层数据结构是哈希表,允许使用null键和null值,该集合是不同步的
TreeMap:底层数据结构是二叉树,线程不同步,可以用于给map集合中的键进行排序
Map集合的两种取出方式
keySet:将map中所有键存入到Set集合,然后迭代取出所有的键,再根据get方法获取值,因为map本身不具备迭代器
entrySet:将map集合中的映射关系存到set集合,而这个关系的数据类型就是Map.Entry
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2