一、Java概述
1.Java发展史
詹姆斯·高斯林(James Gosling)1977年获得了加拿大卡尔加里大学计算机科学学士学位,1983年获得了美国卡内基梅隆大学计算机科学博士学位,毕业后到IBM工作,设计IBM第一代工作站NeWS系统,但不受重视。后来转至Sun (Stanford University Network,斯坦福大学网络公司),1990年与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”,后来发展一套语言叫做“Oak”,后改名为Java。
2.Java版本
JDK 1.1.4 Sparkler 宝石 1997-09-12
JDK 1.1.5 Pumpkin 南瓜 1997-12-13
JDK 1.1.6 Abigail 阿比盖尔--女子名 1998-04-24
JDK 1.1.7 Brutus 布鲁图--古罗马政治家和将军 1998-09-28
JDK 1.1.8 Chelsea 切尔西--城市名 1999-04-08
J2SE 1.2 Playground 运动场 1998-12-04
J2SE 1.2.1 none 无 1999-03-30
J2SE 1.2.2 Cricket 蟋蟀 1999-07-08
J2SE 1.3 Kestrel 美洲红隼(sǔn) 2000-05-08
J2SE 1.3.1 Ladybird 瓢虫 2001-05-17
J2SE 1.4.0 Merlin 灰背隼 2002-02-13
J2SE 1.4.1 grasshopper 蚱蜢 2002-09-16
J2SE 1.4.2 Mantis 螳螂 2003-06-26
JAVASE 5.0 (1.5.0) Tiger 老虎
JAVASE 5.1 (1.5.1) Dragonfly 蜻蜓
JAVASE 6.0 (1.6.0) Mustang 野马
JAVASE 7.0 (1.7.0) Dolphin 海豚
3.Java平台
J2SE(Java 2 Platform Standard Edition)标准版,是为开发普通桌面和商务应用程序提供的解决方案,该技术体系是其他两者的基础,可以完成一些桌面应用程序的开发。
J2ME(Java 2 Platform Micro Edition)小型版,是为开发电子消费产品和嵌入式设备提供的解决方案。
J2EE(Java 2 Platform Enterprise Edition)企业版,是为开发企业环境下的应用程序提供的一套解决方案,该技术体系中包含的技术如 Servlet、Jsp等,主要针对于Web应用程序开发。
4.Java特点
简单性、解释性、面向对象、高性能、分布式处理、多线程、健壮性、动态、结构中立、安全性、开源、跨平台(安装一个jvm java virtual machine即可)。
二、JDK和JRE
JRE:包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序,计算机中只需要安装JRE即可。JRE=JVM+类库。
JDK:是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用在单独安装JRE了。
JDK安装为傻瓜式安装,一路next即可,安装路径不要有中文或者特殊符号如空格等。安装后的目录如下:
1.bin
该目录用于存放一些可执行程序。如javac.exe(java编译器)、java.exe(java运行工具)、jar.exe(打包工具)和javadoc.exe(文档生成工具)等。
2.db
db目录是一个小型的数据库。从JDK 6.0开始,Java中引用了一个新的成员JavaDB,这是一个纯Java实现、开源的数据库管理系统。这个数据库不仅轻便,而且支持JDBC 4.0所有的规范,学习JDBC 时,不再需要额外地安装一个数据库软件,选择直接使用JavaDB即可。
3.jre
"jre"是 Java Runtime Environment 的缩写,意为Java程序运行时环境。此目录是Java运行时环境的根目录,它包括Java虚拟机,运行时的类包,Java应用启动器以及一个bin目录,但不包含开发环境中的开发工具。
4.include
由于JDK是通过C和C++实现的,因此在启动时需要引入一些C语言的头文件,该目录就是用于存放这些头文件的。
5.lib
lib是library的缩写,意为 Java 类库或库文件,是开发工具使用的归档包文件。
6.src.zip文件
src.zip为src文件夹的压缩文件,src中放置的是JDK核心类的源代码,通过该文件可以查看Java基础类的源代码。
三、配置java系统变量
1.配置方式1
右键计算机→属性→高级系统设置→高级选项卡→点击环境变量→下方系统变量中查找path→双击path→将jdk安装目录下的bin目录添加到最左边并添加分号。path配置的是可执行的文件.exe,配置后可以在不同的盘符下访问path路径下的可执行文件。
2.配置方式2
先配置JAVA_HOME,变量值为java安装的路径,再双击path,新建%JAVA_HOME%\bin,将JAVA_HOME的值引入到path中,这叫做动态获取java安装路径。
四、Java命名规则
包名:最好是域名倒过来,要求所有的字母小写,例如com.it.service。
类或者接口:如果是一个单词首字母大写,如果是多个单词每个单词首字母大写(驼峰标识)。
方法或者变量:如果是一个单词全部小写,如果是多个单词,从第二个单词首字母大写。
常量:如果是一个单词,所有字母大写,如果是多个单词,所有的单词大写,用下划线区分每个单词。
关键字:被Java语言赋予特定含义的单词,组成关键字的字母全部小写,例如public static void class等 ,goto和const作为保留字存在,并不使用。
五、常量
在程序执行的过程中其值不可以发生改变。分为字面值常量、自定义常量(面向对象)
1.字面值常量
字符串常量:用双引号括起来的内容
整数常量:所有整数
小数常量:所有小数
字符常量:用单引号括起来的内容,里面只能放单个数字,单个字母或单个符号
布尔常量:true和false
空常量:null
六、进制
二进制:由0,1组成。以0b(b可以大写也可以小写)开头(JDK1.7版本可以表示二进制了)
八进制:由0,1,…7组成。以0(数字0,不是字母o)开头
十六进制:由0,1,…9,a,b,c,d,e,f(大小写均可),以0x开头。
七、原码反码补码
原码,就是二进制定点表示法,即最高位为符号位,“0”表示正,“1”表示负,其余位表示数值的大小。例如:通过一个字节,也就是8个二进制位表示+7和-7:
0(符号位) 0000111
1(符号位) 0000111
反码,正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位不变。
补码,正数的补码与其原码相同;负数的补码是在其反码的末位加1。
八、数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间。分为基本数据类型、引用数据类型(对象)。
1.基本数据类型
整数型
byte 占一个字节 -128~127
short 占两个字 -2^15~2^15-1
int 占四个字节 -2^31~2^31-1
long 占八个字节 -2^63~2^63-1
浮点型
float 占四个字节 -3.403E38~3.403E38 单精度,1位是符号位,8位是指数位,其余23位是尾数位;对于指数位,00000000-11111111,根据IEEE754标准,规定0为0,255为无穷大,则剩下可以表示的是1-254,每个指数位再减去127,则-126到127
double 占八个字节 -1.798E308~1.798E308 双精度
字符型
char 占两个字节 0~65535,可以存中文,因为Java语言采用的是Unicode编码,Unicode编码中的每个字符占用两个字节,中文也是占的两个字节。
+在有字符串参与中被称为字符串连接符,字符char会进行运算,但是字符串会直接进行字符串的拼接:
System.out.println("hello"+'a'+1); helloa1
System.out.println('a'+1+"hello"); 98hello
System.out.println("5+5="+5+5); 5+5=55
System.out.println(5+5+"=5+5"); 10=5+5
布尔型
boolean,理论上是占八分之一个字节,因为一个开关就可以决定是true和false了,但是java中boolean类型没有明确指定他的大小。
进行混合运算的时候,byte、short、char不会相互转换,都会自动类型提升为int类型,其他类型进行混合运算的是小的数据类型提升为大的
byte,short,char -- int -- long -- float -- double
float表示的数据范围比long的范围要大
long:2^63-1
float:3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 > 2^63-1
2.类型转换
隐式类型转换:取值范围小的数据类型与取值范围大的数据类型进行运算,会先将小的数据类型提升为大的,再运算。
例如:byte + int,会先将byte类型转换为int类型进行计算。
强制类型转换:b = (byte)(a);如果超出了被赋值的数据类型的取值范围得到的结果会与你期望的结果不同。
例题:指出错误
byte b1 = 3;
byte b2 = 4;
byte b3 = b1 + b2;
byte类型的变量在进行运算的时候,会自动类型提升为int类型,出现类型转换异常;byte b4 = 3 + 4;
3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了;
3.算数运算
例子:++隐含了强转
byte b = 10;
//b++; //b = (byte)(b + 1)
b = b + 1; //当byte与int进行混合运算的时候,会提升为int类型,两个int相加的结果还是int,赋值给byte会损失精度
4.赋值运算
short s=1;s = s+1; 出现类型转换异常
short s=1;s+=1; 隐含了类型转换
九、java语句
1.键盘录入
import java.util.Scanner;
Scanner sc = new Scanner(System.in);
int x = sc.nextInt();
2.if else、for
if(比较表达式1) {
语句体1;
}else if(比较表达式2) {
语句体2;
}else if(比较表达式3) {
语句体3;
}
else {
语句体n+1;
}
for(初始化表达式;条件表达式;循环后的操作表达式) {
循环体;
}
三元运算符:满足关系表达式,结果就是表达式1,否则是表达式2
(关系表达式) ? 表达式1 : 表达式2;
2.switch
int i = 2;
switch(i){
case 0:
System.out.println("0");break;
case 1:
System.out.println("1");break;
case 2:
System.out.println("2");break;
default:
System.out.println("default");break;
}
case后面只能是常量,不能是变量,而且,多个case后面的值不能出现相同的。default可以省略但是不建议,因为它的作用是对不正确的情况给出提示。
break最后一个可以省略,其他最好不要省略,否则会出现case穿透,建议不要省略
default可以在任意位置,但是建议在最后。
3.while
初始化语句;
while(判断条件语句) {
循环体语句;
控制条件语句;
}
break:终止循环体,只能在switch和循环中
continue:终止当前循环,继续下一个循环,只能在循环中
4.方法
提高代码的复用性,完成特定功能的代码块。
修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
方法体语句;
return 返回值;
}
方法重载:
在同一个类中,方法名相同,参数列表不同。与返回值类型无关。
参数列表不同:参数个数不同、参数类型不同、参数的顺序不同(算重载,但是在开发中不用)。
十、数组
可以存储基本数据类型,也可以存储引用数据类型。
数据类型[ ] 数组名 = new 数据类型[数组的长度];
1.数组的初始化
动态初始化,只指定长度,由系统给出初始化值,int类型为0:
int[] arr = new int[5];
静态初始化,给出初始化值,由系统决定长度:
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,…};
数据类型[] 数组名 = {元素1,元素2,…};
2.数组的遍历
数组的属性:arr.length数组的长度,数组的最大索引:arr.length–1。
public static void print(int[] arr) {
for (int i = 0;i < arr.length ;i++ ) {
System.out.print(arr[i] + " ");
}
}
3.二维数组
int[ ][ ] arr = new int[3][2];
int[ ][ ] arr = {{1,2,3},{4,5},{6,7,8,9}};
以下格式也可以表示二维数组:
1:数据类型 数组名[][] = new 数据类型[m][n];
2:数据类型[] 数组名[] = new 数据类型[m][n];
十一、DOS命令
d:回车:盘符切换,切换到d盘根目录下
dir:列出当前目录下的文件以及文件夹
cd:进入指定目录
cd.. :退回到上一级目录
cd\:退回到根目录
cls : 清屏
exit:退出dos命令行
md (make directory) : 创建目录
rd (remove directory): 删除目录
del (delete): 删除文件
notepad 创建文件