1995年5月23日,Java语言正式诞生
1997年2月18日,JDK1.1发布。
1999年6月,Sun公司发布Java的三大版本:标准版(Java SE)、企业版(Java EE)、微型版(Java ME)
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RxJIfFqu-1648458595558)(image1.png)]
2004年9月30日,J2SE1.5发布,是Java语言发展史上的又一里程碑事件
2014年3月18日,Oracle公司发布了Java SE 8,这次版本升级为Java带来了全新的Lambda表达式
1.2 jdk、jre和jvm面试题
jdk是java开发工具,包含jre+jvm
jre是Java运行环境,包含jvm+类库
jvm是java虚拟机
一次编程,到处运行。原理:就是依赖java虚拟机(jvm).
1.3 window常用的命令1.快捷键 win+R 输入cmd
2.盘符切换 d: e: f:
3.指定到文件 cd D:Git cd… 回退到上一级目录cls
4.查看有哪些目录 dir
5.cls 清屏 exit 退出
1.4 下载安装jdk注意:jdk都选择下一步下一步,默认安装jre
目录结构:
1.5 配置Java环境步骤:右击此电脑==》属性==》高级系统设置==》环境变量按钮==》系统变量==》点新建按钮==》变量名:JAVA_HOME 变量值:C:Program FilesJavajdk1.8.0_144
选中Path双击==》新建输入%JAVA_HOME%bin 确定 ==》新建%JAVA_HOME%binjre
完成后查看Java版本
绝对路径:带盘符的路径 C: D:
相对路径:相对于一个参照物
1.7 第一个HelloWorld
public class HelloWord{
// 主程序 所有的程序入口
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
先cd 源文件路径 之后 输入javac命令对源代码进行编译,生成字节码文件
javac 源文件名.java
编译完后,在同路径下会生成字节码(.class)文件
java 源文件名
程序的运行过程:
分为两个时期:
第一个程序有可能几个错误:
A.找不到文件 文件扩展名隐藏了 也可能是文件名写错了
B.可能是单词拼写的问题 class写成Class String写成string System写成system main写成mian等
C.大括号的问题 少写大括号 (大括号是成对出现的)
D.中英文问题 分号、双引号、括号写成中文的形式
1.8 注释作用:可以注释掉不用的代码,可以对代码进行解释
单行注释: //
多行注释
文档注释
2. Java语法格式 2.1 关键字Java中一共有50个关键字,他们都是小写的,开发工具中用不同颜色标注的,不用去死记硬背,后面都会学习到。其中有两个是保留字goto、const,但是可以组合
2.2 常量在程序运行中,其值是不发生改变的量。例如 int A = 10;
2.3 变量()在程序运行中,在一定范围内,其值会发生改变的量。例如 int a = 10; a = 20; a = 30;
因为定义一个变量后,会在内存中开辟一小块区域,专门存放变量a
定义变量的格式:数据类型 变量名 = 初始值;
1.定义变量时可以不初始化,但是当你使用变量时,一定要先赋值
2.一行上可以定义多个变量,但是不建议 int a,b,c;
3.一行代码以分号结束,后可以接着写,但是不建议
4.变量只有申明一次数据类型
2.4 标识符作用:给类、包、变量、常量和方法等起名字的
组成:由字母(52个字母a-z、A-Z)、数字、下划线(_)和美元$组成 a# %b @a 都是不合法
1.不能是Java关键字 int int = 10;不合法
2.数字不能开头 int a2 = 10;合法 int 2a = 10;不合法
命名规则:见名知意 Student.java Order.java addStudent()
1.对包命名:最好把公司的域名倒过来,所有字母小写 com.taobao
2.对类或接口命名(大驼峰命名):如果是一个单词,首字母大写,其余字母小写 Demo.java
如果是多个单词,每个单词首字母大写,其余字母小写 DemoJava.java
3.对变量或方法命名(小驼峰命名):如果是一个单词,全部字母小写 int sum = 10;
如果是多个单词组成,从第二个单词开始,首字母大写,其余字母小写
int addSum = 10; int addAvgSum = 30;
4.对常量命名:如果是一个单词,全部字母大写 int ADD = 10;
如果是多个单词组成,也是全部大写,但是每个单词用下划线连接 ADD_SUM ADD_AVG_SUM
2.5 数据类型 (重点)数据类型:基本数据类型和引用数据
计算机存储设备的最小信息单元比特位(bit)用字母b表示,而计算机最小的存储单元叫字节(byte)用字母 B表示
1B = 8 bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
字节型:byte 1字节 8位 取值范围-128~127
短整型:short 2字节 16位 取值范围-32768~32767
整型(默认):int 4字节 32位 取值范围-2147483648~2147483647
长整型:long 8字节 64位 后面要加L
单精度:float 4字节 32位 后面要加F或f
双精度:double 8字节 64位 后面要加D或d,可以不加
字符型:char 必须用单引号括起来 只能是一个字符 ‘a’ ‘A’ ‘0’
布尔类型:boolean 只有两个值true(对) 、false(错)
public static void main(String[] args) {
// 定义byte类型 -128~127
byte a1 = 10;
// 定义short类型
short a2 = 32767;
// 定义int类型
int a3 = 30;
// 定义long类型
long a4 = 50L;
// 定义float类型
float a5 = 3.14f;
// 定义double类型
double a6 = 3.14;
// 定义char类型
char a7 = '0';
// 定义boolean类型
boolean a8 = true;
boolean a9 = false;
}
注意:Java是强类型语言,严格区分大小写,严格定义数据类型的
2.6 类型转换隐式转换(自动转换):由数据类型小的转成数据类型大的,之后参与运算
显示转换(强制转换):由数据类型大的转成数据类型小的,必须要申明大的数据类型
格式:小数据类型 变量名 = (小的数据类型)大数据类型
注意:不建议强制转换,可能会造成精度损失或溢出
3. 开发工具的安装1.解压idea压缩包 到D盘或E盘(不要解压在文件夹里),打开bin文件夹,找到idea64.exe,之后双击出现
4. 运算符4.1 算术运算符
/ % ++ – * + -
/ :两个数相除取两个整数的商 % :两个数相除取两个整数的余数 使用场景 判断这个数是否是整数 这个数是否是偶数或奇数 ++:每次加1 当++写在变量的前面时,先自增,后输出变量 当++写在变量的后面时,先输出变量,后自增
public static void main(String[] args) {
int a = 5;
int b = 2;
int sum = a + b;
System.out.println(sum);
int chu = a/b;
System.out.println(chu);
int yu = a%b;
System.out.println(yu);
System.out.println(a++);// 5
System.out.println(a); // 6
System.out.println(++b);// 3
System.out.println(b);
System.out.println("============================");
int x = 2;
int resutl1 = (x++)*4 ;
System.out.println(resutl1);// 8
int y = 2;
int resutl2 = (++y)*4 ;
System.out.println(resutl2);// 12
}
4.2 赋值运算符
= += -= *= /= %=
public static void main(String[] args) {
int a = 10; // 把整数10赋值给int类型变量a
//a += 1; // a = a + 1的简写
a = a + 1; // 11 = 10 + 1
a *= 2;//a = a * 2; // 22 = 11 * 2
}
4.3 关系运算符
关系运算符 的结果都是布尔类型true、false == <= >= < > !=
public static void main(String[] args) {
int a = 5;
int b = 2;
System.out.println(a==b);
System.out.println(a>=b);
System.out.println(a!=b);
}
4.4 逻辑运算符
&:与、且 |:或 && || ^ !
| 、|| :只要有true,结果肯定是true. 见true则true
&、&& :只要有false,结果肯定是false 见false则false
^ 异 :两个相同是false 、:两个不相同是true
! 非 : !false=true
&& || 具有短路效应 前面如果成立,在不影响结果的情况下,后面就不运行
& | 不具有短路效应,不管前面是否成立,后面都会执行
public static void main(String[] args) {
int a = 6;
int b = 5;
int c = 4;
System.out.println(a>b | b>c); // true | true = true
System.out.println(ac); // false | true = true
System.out.println(a>b | bb & b>c); // true | true = true
System.out.println(ac); // false | true = false
System.out.println(a>b & b3 || y++>5;
System.out.println(result1); // true
System.out.println(x); // 5 说明x已经自增过
System.out.println(y); // 6 说明y++没有运行 短路了
int xx = 4;
int yy = 6;
boolean result2 = xx++>3 | yy++>5;
System.out.println(result2); // true
System.out.println(xx); // 5 说明xx已经自增过
System.out.println(yy); // 7 说明yy++已经自增过
}
4.5 位运算符
左移运算 << 左移n位,就是乘以2的n次方
x<<1 相当于 x*2
x<<2 相当于x*4
x<<3 相当于x*8
右移动运算 >> 右移n位,就是除以2的n次方
x>>1 相当于 x/2
x>>2 相当于x/4
x>>3 相当于x/8
4.6 三元运算符
格式:(关系运算符)?表达式1:表达式2 相当于if…else…
如果关系运算符结果是true,取表达式1的值
如果关系运算符结果是false,取表达式2的值
public static void main(String[] args) {
// 需求: 比较两个整数是否相等 输出相等 不相等
int a = 3;
int b = 3;
String result = (a==b)?"相等":"不相等";
System.out.println(result);
// 需求:判断三个数2,6,9的大小关系,打印输出三个数的最大值9
int x = 2;
int y = 6;
int z = 9;
int max = x;// 先假设第一数最大
max = (max>=y)?max:y;
max = (max>=z)?max:z;
System.out.println(max);
}
优先级:括号的优先级最高>算术运算符>赋值运算符>关系运算符>逻辑运算符>三元运算符
需求: 比较两个整数是否相等 输出相等 不相等
int a = 3;
int b = 3;
String result = (a==b)?“相等”:“不相等”;
System.out.println(result);
// 需求:判断三个数2,6,9的大小关系,打印输出三个数的最大值9
int x = 2;
int y = 6;
int z = 9;
int max = x;// 先假设第一数最大
max = (max>=y)?max:y;
max = (max>=z)?max:z;
System.out.println(max);
}
优先级:括号的优先级最高>算术运算符>赋值运算符>关系运算符>逻辑运算符>三元运算符



