一、JDK
1.1 JDK的作用
jdk用作开发java代码的和编译java代码的 – javac – . java
jre运行java代码的 –java –.class
Java虚拟机(Java Virtual Machine)
创建.java的文件,通过javac命 令编译文件编程后缀为.class文件
然后通过java命令执行.class文件,用户就可以看到结果
1.2 JDK1.5前后的变化
StringBuilder和StringBuffer
和 String 类不同的是,StringBuffer 和 StringBuilder 类的对象能够被多次的修改,并且不产生新的未使用对象。
StringBuilder 类在 Java 5 中被提出,它和 StringBuffer 之间的最大不同在于 StringBuilder 的方法不是线程安全的(不能同步访问)。
由于 StringBuilder 相较于 StringBuffer 有速度优势,所以多数情况下建议使用 StringBuilder 类。然而在应用程序要求线程安全的情况下,则必须使用 StringBuffer 类。
For-Each循环
JDK 1.5 引进了一种新的循环类型,被称为 For-Each 循环或者加强型循环,它能在不使用下标的情况下遍历数组。
控制台的输出
JDK1.5以前使用BufferedReader读取控制台数据
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
JDK1.5以后使用Scanner读取控制台数据
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
二、Eclipse入门
-
JAVA_HOME相当于配置了一个文件夹路径的别名,配置了别名在path中%变量名%使用快捷路径
2.配置文字
window-Preferences-General-Appearance-Colors and Fonts
3.单行注释
//注释内容
4.多行注释
/*
注释内容
*/
5.文本注释
/**开头
中间可以任意内容
*/结束
6.eclipse编译
eclipse在代码保存时自动编译该文件的.class文件,放在项目的bin目录下
为代码添加作者名和日期等
三、标识符
3.1 常量
固定不变的量
3.2 8种基本数据类型
整数类型 byte、short、int、long(1,2,4,8字节)
浮点型 float(4字节)、double(8字节)
字符型 char
布尔型 boolean
3.3 变量
常量的储存容器,可更改变量的值
变量在输出前一定要赋值
变量定义有两种方式:
变量类型 变量名= 值;1.在定义变量的时候就赋值
变量类型 变量名;
变量名=值; 2.先定义一个变量,然后再后面赋值
定义各种类型的变量并且输出
3.4 变量命名规则
通常以大写字母开头,可包含字母、数字、下划线、$¥等货币符号。
不可包含其他特殊符号,不得以数字开头
四、运算符
4.1 算数运算符
加减乘除
取余数 又称取模
System.out.println(9%6);//输出3
//一个数对另一个数取模如果结果为0代表能够整除
System.out.println(9%3);//输出0
4.2 赋值运算
将常量的值赋给变量
int num = 100;
4.3 一元运算符
int a = 1;
int c = a++;//先赋值后运算
system.out.println(a);
system.out.println(c);
或者
int a = 1;
int c = ++a;//先运算再赋值
system.out.println(a);
system.out.println(c);
4.4 赋值运算符进阶
4.5 比较运算符
4.6 逻辑运算符
public class Demo03 {
public static void main(String[] args) {
// 双与
//双&&如果左边为false右边就不执行了
System.out.println(true && true);
System.out.println(true && false);
System.out.println(false && false);
// 单与
//单&如果左边为false右边也要参与运算,耗费内存,开发中不常用
System.out.println(true & true);
System.out.println(true & false);
System.out.println(false & false);
}
}
public class Demo04 {
public static void main(String[] args) {
// 双或
//如果左边为true,右边就不执行了
System.out.println(true || true);
System.out.println(true || false);
System.out.println(false || false);
// 单或
//如果左边为true,右边也要执行,比较耗费内存,开发中不常用
System.out.println(true | true);
System.out.println(true | false);
System.out.println(false | false);
}
}
4.7 三元运算符
又称三目运算
语法:条件表达式?表达式1:表达式2
条件表达式为true,返回表达式1;
条件表达式为false,返回表达式2;
public class Demo05 {
public static void main(String[] args) {
//两个表达式值的类型必须一致
int i = 3 > 5 ? 3 : 5;
System.out.println(i);// 返回5
}
}
五、数据类型转换
5.1 自动类型转换(隐式类型转换)
long num = 100;//从int转到Long
当范围更小的类型转换到范围更大的类型,可以自动识别,完成类型转换
//左边是float类型,右边是long类型
//Long->float
//float是使用科学计数法进行存储的
//符合范围从小到大,和字节大小没有关系
float f = num;//可以完成自动转换
5.2 手动类型转换(强制类型转换)
语法:范围小的类型 范围小的变量名 = (范围小的类型)范围大的数据;
int num = (int)100L;
//强制类型转换可能会有数据溢出
//byte数据结构如下图,可解释为什么等于-127
byte b = (byte) 129;
System.out.println(b);//-127
//强制类型转换可能会丢失小数
int i = (int)99.9;
System.out.println(i);//99
数据转换中应注意的细节
//int->byte
//byte在赋值的时候要借助int类型
//java会自动检测这个int类型的值
//如果这个int类型的值能在byte存储下,就会发生自动类型转换
//如果超出表示的范围,就不能自动转换了
byte num = 12;
short s = 12;
public class Demo06 {
public static void main(String[] args) {
byte num1 = 50;
byte num2 = 100;
// 把num1与num2的值提取出来再相加
//并未将byte转换为int再计算
int num3 = num1 + num2;
System.out.println(num3);
}
}
5.3 char类型的转换
Unicode万国码表,也就是字符和数字的对照表
前127位和ASCII码一样
字符一旦进行了数字运算,就会转换成ASC
char ziFu = '0';
System.out.println(ziFu + 1);//得49
5.4 运算符的优先级
六、判断语句
6.1 顺序语句
从上往下按照顺序执行,顺序语句
默认就是顺序语句
6.2 判断语句
if语句是JAVA语言选择控制或分支控制语句之一, 用来对给定条件进行判定,并根据判定的结果(真或假)决定执行给出的两种操作之一。
if语句包括三种形式:
➢单分支if语句
public class Demo08 {
public static void main(String[] args) {
//三个数找出最大数
int a = 89;
int b = 83;
int c = 62;
int max;
max = a;
if (b > max) {
max = b;
}
if (c > max) {
max = c;
}
System.out.println(max);
}
}
➢双分支if语句
if(true){
}else{
}
➢多分支if语句
if(true){
}else if{
}else{
}
6.3 switch算数表达式
语句格式:
switch(算数表达式){
case 常量表达式1:
语句块1
break;
case 常量表达式2:
语句块2
break;
default :
语句块
break;
}
6.4 switch的注意事项
算数表达式的规范,支持的类型 byte short int char基本数据类型,Long类型和其他类型都不允许
多个case的值不能一样
一个switch中所有常量表达式与算术表达式的数据类型一致
注意在每个case后加break;
七、循环语句
7.1 for循环
语句格式:
for(表达式1;表达式2;表达式3){
循环体
}
表达式1:代表初始化语句,在循环最初的时候执行,而且只会执行一次
表达式2:条件判断,如果成立,循环执行;如果不成立,循环不执行
表达式3:每次循环执行完成之后都要执行
循环体:重复做的事情,若干语句
每个表达式中间用分号(;)隔开
7.2 break使用
中止并结束整个循环
for (int i = 1; i <=10; i++) {
if(i>5) {
break;
}
System.out.println(i);
}
7.3 continue的使用
跳过本次循环,执行下次循环,不影响循环中的扫尾工作
for (int i = 1; i <=10; i++) {
if(i%2==0) {
System.out.println("跳过偶数");
continue;
}
System.out.println(i);
}
7.4 while循环
语句格式:
while(布尔表达式){
循环体
}
7.5 break和continue在while中的作用
break在while和for循环中作用一致
continue在while中与for有差别
//没有专门的位置放扫尾工作
//在while中需要给continue前面添加扫尾工作
int i = 0;
while(i<=10) {
if (i%2==0) {
System.out.println("偶数跳过了");
i++;
continue;//跳出本次循环以及后面的代码
}
System.out.println(i);
i++;
}
如果循环的次数确定使用for循环
如果循环的次数不确定使用while循环
7.6 do-while循环
该循环是个后验循环
语句格式:
do{
循环体
}while(布尔表达式);
7.7 多层循环
多层循环的基本格式:
for(表达式1;表达式2;表达式3){
循环体
for(表达式4;表达式5;表达式6){
循环体
}
}
break在多层循环中用于退出该层循环
continue跳出当前的当次循环及后面的代码
八、数组
8.1 容器概述
容器:是将多个数据存储在一起,每个数据称为该容器的元素
同种性质同种类型的容器
8.2 数组概念
数组是一种容器,可以存放多个同种类型的数据
数据按照一定的顺序排列
数组格式:
- 数组类型 [ ] 数组名 = { 值1,值2,…,值n};
- 数组类型 [ ] 数组名 = new 数组类型 [ ] { 值1,值2,…,值n};
-
数组类型 [ ] 数组名 = new 数组类型 [n];
静态初始化:1,2数组的创建方式,在创建数组的时候直接给定数组的元素,系统自动识别数组长度
动态初始化:3数组的创建方式,给定数组的长度,未给定数组的值
注:如果未给数组名定义初始值,
整数型数组每个值默认为0,
浮点型数组默认为0.0
String型数组默认为null,
Char型数组默认为空,
Boolean型数组默认为false
数组的特点:
数组的长度是固定的
数组存储的数据类型必须是相同的数据类型
数组的类型可以是任意的
8.3 数组的遍历
int[] ss= {1,2,3,4,5,6};
for (int i = 0; i < ss.length; i++) {
System.out.println(ss[i]);
}