JavaSE

  |   0 评论   |   0 浏览

JavaSE

一、java概述

1.什么是程序

程序:计算机执行某些操作或解决某个问题而编写的一系列有序指令的集合

image-20220128093028917

image-20220128093114202

2 Java 诞生小故事

1990 sun公司启动绿色计划

1992 创建oak(橡树)语言 ->java

1994 gosling参加硅谷大会演示java功能,震惊世界。

1995 sun正式发布java第一个版本。

2009年,甲骨文公司宣布收购Sun。2011,发布java7

其他java版本发布详情

java版本

https://www.oracle.com/java/technologies/java-se-support-roadmap.html

LTS长期支持版本

image-20220128093447315

3.java技术体系平台

image-20220128093600208

4. java重要特点

  1. Java 语言是面向对象的(oop)
  2. Java 语言是健壮的。Java 的强类型机制、异常处理、垃圾的自动收集等是 Java 程序健壮性的重要保证
  3. Java 语言是跨平台性的。[即: 一个编译好的.class 文件可以在多个系统下运行,这种特性称为跨平台]

image-20220128093753456

4.Java 语言是解释型的[了解]

解释性语言:javascript,PHP, java 编译性语言: c / c++

区别是:解释性语言,编译后的代码,不能直接被机器执行,需要解释器来执行, 编译性语言, 编译后的代码, 可以直接被机器执行, c /c++

5.java的开发工具

subline Text : https://www.sublimetext.com/download

idea : https://www.jetbrains.com/idea/download/other.html

JDK: https://www.oracle.com/java/technologies/downloads/archive/

image-20220128094049941

6.Java 运行机制及运行过程

1. Java 语言的特点:跨平台性

image-20220128095400079

2.Java 核心机制-Java 虚拟机 [JVM java virtual machine]

基本介绍

1.JVM 是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器,包含在

JDK 中.

  1. 对于不同的平台,有不同的虚拟机。
  2. Java 虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处运行” [说明]
  3. 示意图

image-20220128095618390

7.什么是JDK,JRE

1. JDK 基本介绍

  1. JDK 的全称(Java Development Kit Java 开发工具包) JDK = JRE + java 的开发工具 [java, javac,javadoc,javap 等]
  2. JDK 是提供给 Java 开发人员使用的,其中包含了 java 的开发工具,也包括了 JRE。所以安装了 JDK,就不用在单独安装 JRE 了。

2. JRE 基本介绍

  1. JRE(Java Runtime Environment Java 运行环境) JRE = JVM + Java 的核心类库[类]
  2. 包括 Java 虚拟机(JVM Java Virtual Machine)和 Java 程序所需的核心类库等,如果想要运行一个开发好的 Java 程序, 计算机中只需要安装 JRE 即可。

3. JDK、JRE 和JVM 的包含关系

  1. JDK = JRE + 开发工具集(例如 Javac,java 编译工具等)
  2. JRE = JVM + Java SE 标准类库(java 核心类库)
  3. 如果只想运行开发好的 .class 文件 只需要 JRE

8.下载、安装JDK

JDK下载官方地址:https://www.oracle.com/java/technologies/downloads/archive/

image-20220128100108592

9.配置环境变量

image-20220128100457477

说明:下图中的两个环境变量配置作用范围不同,LLP的用户变量只真的这一个用户生效,而系统变量则是所有用户

image-20220128100445142

10.java快速入门

1.需求说明

要求开发一个 Hello.java 程序,可以输出	"hello,world!"
  1. 将 Java 代码编写到扩展名为 Hello.java 的文件中。[代码说明]
  2. 通过 javac 命令对该 java 文件进行编译,生成 .class 文件。
  3. 通过 java 命令对生成的 class 文件进行运行。

2. 运行原理示意图

image-20220128101213962

image-20220128101510352

image-20220128101622296

3.java常用转义符

在控制台,输入 tab 键,可以实现命令补全

\t	:一个制表位,实现对齐的功能

\n	:换行符

\\	:一个\

\"	:一个"

\'	:一个'

\r	:一个回车	System.out.println("韩顺平教育\r 北京");

回车 \r 本义是光标重新回到本行开头。r 的英文return,控制字符可以写成CR,即Carriage Return

换行 \n 本义是光标往下一行(不一定到下一行行首)。n 的英文newline,控制字符可以写成LF,即Line Feed


image-20220128102812242

4.java中的注释类型

1) 单行注释	// 				//注释文字

2) 多行注释 /* */   		/*	注释文字 */

3)	文档注释 /**	*/

使用细节:
1)被注释的文字,不会被 JVM(java 虚拟机)解释执行
2)多行注释里面不允许有多行注释嵌套

image-20220128105219519

5.常用的dos命令

1) 查看当前目录是有什么内容 dir dir	dir d:\abc2\test200

2) 切换到其他盘下:盘符号 cd : change directory 案例演示:切换到 c 盘	cd /D	c:

3) 切换到当前盘的其他目录下 (使用相对路径和绝对路径演示), ..\表示上一级目录案例演示: cd	d:\abc2\test200	cd ..\..\abc2\test200

4) 切换到上一级: 案例演示: cd ..

5) 切换到根目录:cd \  案例演示:cd \

6) 查看指定的目录下所有的子级目录 tree

7) 清屏 cls [苍老师]

8) 退出 DOS exit

二、变量

1.变量的介绍

一个程序就是一个世界,而变量是程序的基本组成单位。

不论是使用那种高级语言编写程序,变量都是程序的基本组成单位,变量有三个基本要素:类型+名称+值

概念:

变量相当于内存中一个数据存储空间的表示,你可以把变量看做是一个房间的门牌号,通过门牌号我们可以找到房间,而通过变量名可以访问到变量(值)。

2.变量快速入门

1.基本使用步骤

1)声明变量
int a;
2)赋值
a = 60; //应该这么说: 把 60 赋给 a
使用 System.out.println(a);
//也可以一步到位[int a = 60;  通常我们是一步完成]

3.数据类型

每一种数据都定义了明确的数据类型,在内存中分配了不同大小的内存空间(字节)。

image-20220128111725665

1.java 数据类型分为两大类 基本数据类型, 引用类型
2.基本数据类型有 8 中	数值型 [byte , short , int , long , float ,double] char , boolean
3.引用类型 [类,接口, 数组]

4.整型类型

Java 的整数类型就是用于存放整数值的,比如 12 , 30, 3456 等等

byte n1 = 10; short n2 = 10;

int n3 = 10;//4 个字节

long n4 = 10; //8 个字节

image-20220128112503358

image-20220128112550901

image-20220128112603119

5.浮点类型

Java 的浮点类型可以表示一个小数,比如 123.4 ,7.8 ,0.12 等等

浮点型的分类

image-20220128112708825

  1. 关于浮点数在机器中存放形式的简单说明,浮点数=符号位+指数位+尾数位
  2. 尾数部分可能丢失,造成精度损失(小数都是近似值)。

使用细节

image-20220128112810433

image-20220128134742921

//得到一个重要的使用点: 当我们对运算结果是小数的进行相等判断时,要小心
//应该是以两个数的差值的绝对值,在某个精度范围类判断if( num11 == num12) {
System.out.println("num11 == num12  相等");
}
//正确的写法 , ctrl + /  注释快捷键,  再次输入就取消注释
if(Math.abs(num11 - num12) < 0.000001 ) {
System.out.println("差值非常小,到我的规定精度,认为相等...");
    }
// 可以通过 java API	来看 下一个视频介绍如何使用 API System.out.println(Math.abs(num11 - num12));
//细节:如果是直接查询得的的小数或者直接赋值,是可以判断相等
}

6.字符类型

字符类型可以表示单个字符,字符类型是 char,char 是两个字节(可以存放汉字),多个字符我们用字符串 String

char c1 = 'a'; 
char c2 = '\t'; 
char c3 = '韩'; 
char c4 = 97;

使用细节

image-20220128135349992

image-20220128135847615

ASCII 码介绍(了解)

image-20220128140247875

Unicode 编码介绍(了解)

image-20220128140311173

UTF-8 编码介绍(了解)

image-20220128140330438

7. 布尔类型

image-20220128140424814

8. 基本数据类型转换

1.自动类型转换

image-20220128140619556

2. 自动类型转换注意和细节

image-20220128140704462

3.强制类型转换

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符 ( ),但可能造成精度降低或溢出,格外要注意。

image-20220128141730591

4.强制类型转换细节说明

image-20220128141759575

5.基本数据类型和String 类型的转换

image-20220128142349003

String s5 = "123";
//怎么把字符串转成字符 char -> 含义是指 把字符串的第一个字符得到
//解读	s5.charAt(0) 得到 s5 字符串的第一个字符 '1'
System.out.println(s5.charAt(0));

注意

1.在将 String  类型转成 基本数据类型时,要确保String类型能够转换成有效的数据,比如 我们可以把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整
2.如果格式不正确,就会

抛出异常,程序就会终止

三、运算符

1. 运算符介绍

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。

  1. 算术运算符
  2. 赋值运算符
  3. 关系运算符 [比较运算符]
  4. 逻辑运算符
  5. 位运算符 [需要二进制基础]
  6. 三元运算符

2.算术运算符

算术运算符是对数值类型的变量进行运算的,在 Java 程序中使用的非常多。

image-20220128143648359

细节说明

image-20220128145303595

面试题

image-20220128145424154

自增和自减都是先取值后运算,这里temp在获取到i的时候i的值并没有发生改变。

image-20220128145925419

3.关系运算符(比较运算符)

  1. 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false
  2. 关系表达式 经常用在 if 结构的条件中或循环结构的条件中

关系运算符一览

image-20220128150904431

细节说明

  1. 关系运算符的结果都是 boolean 型,也就是要么是 true,要么是 false。
  2. 关系运算符组成的表达式,我们称为关系表达式。 a > b
  3. 比较运算符"=="不能误写成"="

4. 逻辑运算符

1.介绍

用于连接多个条件(多个关系表达式),最终的结果也是一个 boolean 值。

分为两组学习

  1. 短路与 && , 短路或 ||,取反 !
  2. 逻辑与 &,逻辑或 |,^ 逻辑异或

img

说明逻辑运算规则:

  1. a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
  2. a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
  3. a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
  4. a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
  5. !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
  6. a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

2.&& 和 & 基本规则

名称 语法 特点

短路与&& 条件 1&&条件 2 两个条件都为 true,结果为 true,否则 false

逻辑与& 条件 1&条件 2 两个条件都为 true,结果为 true,否则 false

3.&& 和 & 使用区别

  1. &&短路与:如果第一个条件为 false,则第二个条件不会判断,最终结果为 false,效率高
  2. & 逻辑与:不管第一个条件是否为 false,第二个条件都要判断,效率低
  3. 开发中, 我们使用的基本是使用短路与&&, 效率高

4.|| 和 | 基本规则

名称 语法 特点

短路或|| 条件 1||条件 2 两个条件中只要有一个成立,结果为 true,否则为 false

|逻辑或 条件 1|条件 2 只要有一个条件成立,结果为 true,否则为 false

5. || 和 | 使用区别

  1. ||短路或:如果第一个条件为 true,则第二个条件不会判断,最终结果为 true,效率高
  2. | 逻辑或:不管第一个条件是否为 true,第二个条件都要判断,效率低
  3. 开发中,我们基本使用 ||

6. !取反 基本规则

名称 语法 特点

! 非(取反) !条件 如果条件本身成立,结果为 false,否则为 true

5.赋值运算符

赋值运算符就是将某个运算后的值,赋给指定的变量。

1.赋值运算符的分类

基本赋值运算符 = int a = 10;

复合赋值运算符

+= ,-= ,*= , /= ,%= 等 , 重点讲解一个 += ,其它的使用是一个道理

a += b; [等价 a = a + b; ] a -= b; [等价 a = a - b; ]

2. 赋值运算符特点

  1. 运算顺序从右往左 int num = a + b + c;
  2. 赋值运算符的左边 只能是变量,右边 可以是变量、表达式、常量值
int num = 20; int num2= 78 * 34 - 10; int num3 = a;
  1. 复合赋值运算符等价于下面的效果比如:a+=3;等价于 a=a+3; 其他类推
  2. 复合赋值运算符会进行类型转换。
byte b = 2; b+=3; b++;

###6.三元运算符

1. 基本语法

条件表达式 ? 表达式 1: 表达式 2;

运算规则:

  1. 如果条件表达式为 true,运算后的结果是表达式 1;
  2. 如果条件表达式为 false,运算后的结果是表达式 2; 口诀: [一灯大师:一真大师]
int i = 1;
        int a= 1;
        int b = ++i;
        String name = a==b?"一灯大师":"一真大师";
        System.out.println(name);//一真大师

使用细节

  1. 表达式 1 和表达式 2 要为可以赋给接收变量的类型(或可以自动转换)
  2. 三元运算符可以转成 if--else 语句

7.运算符优先级

  1. 运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。

  2. 只有单目运算符、赋值运算符是从右向左运算的。

  3. 一览表, 不要背,使用多了,就熟悉了.

    img

标识符的命名规则和规范

image-20220128153253460

标识符命名规范[更加专业]

  1. 包名:多单词组成时所有字母都小写:aaa.bbb.ccc //比如 com.llp.crm
  2. 类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz [大驼峰]

比如: TankShotGame

  1. 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz [小驼峰, 简称 驼峰法]比如: tankShotGame
  2. 常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ 比如 :定义一个所得税率 TAX_RATE
  3. 后面我们学习到 类,包,接口,等时,我们的命名规范要这样遵守,更加详细的看文档.

8.关键字

关键字的定义和特点 (不用背)
定义:被java语言赋予了特殊含义用做专门用途的字符串(单词)

特点:关键字中所有字母都小写

img

image-20220128153818084

9.保留字

Java 保留字:现有 Java 版本

尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字 byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const

10.键盘输入语句

在编程中,需要接收用户输入的数据,就可以使用键盘输入语句来获取。Input.java , 需要一个 扫描器(对象), 就是

Scanner

image-20220128154345284

11.进制(程序员的基本功)

1.进制介绍

对于整数,有四种表示方式:

二进制:0,1 ,满 2 进 1.以 0b 或 0B 开头。十进制:0-9 ,满 10 进 1。

八进制:0-7 ,满 8 进 1. 以数字 0 开头表示。

十六进制:0-9 及 A(10)-F(15),满 16 进 1. 以 0x 0X 开头表示。此处的 A-F 不区分大小写。

2.进制示意图

image-20220128154827913

image-20220128154839584

3.进制的转换(基本功)

1.进制转换介绍

4.1.1 进制转换的介绍

第一组:

  1. 二进制转十进制
  2. 八进制转十进制
  3. 十六进制转十进制

第二组:

  1. 十进制转二进制
  2. 十进制转八进制
  3. 十进制转十六进制

第三组

  1. 二进制转八进制
  2. 二进制转十六进制

第四组

  1. 八进制转二进制
  2. 十六进制转二进制
2.二进制转换成十进制示例

image-20220128155126562

3. 八进制转换成十进制示例

image-20220128155347365

4.十六进制转换成十进制示例

规则:从最低位(右边)开始,将每个位上的数提取出来,乘以 16 的(位数-1)次方,然后求和。案例:请将 0x23A 转成十进制的数

0x23A = 10 * 16^0 + 3 * 16 ^ 1 + 2 * 16^2 = 10 + 48 + 512 = 570

5.十进制转换成二进制

规则:将该数不断除以 2,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的二进制。案例:请将 34 转成二进制 = 0B00100010

image-20220128155837650

6.十进制转换成八进制

规则:将该数不断除以 8,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的八进制。案例:请将 131 转成八进制 => 0203

image-20220128155943309

7.十进制转换成十六进制

规则:将该数不断除以 16,直到商为 0 为止,然后将每步得到的余数倒过来,就是对应的十六进制。案例:请将 237 转成十六进制 => 0xED

image-20220128160840911

8. 二进制转换成八进制

规则:从低位开始,将二进制数每三位一组,转成对应的八进制数即可。案例:请将 ob11010101 转成八进制

ob11(3)010(2)101(5) => 0325

9.二进制转换成十六进制

规则:从低位开始,将二进制数每四位一组,转成对应的十六进制数即可。

案例:请将 ob11010101 转成十六进制

ob1101(D)0101(5) = 0xD5

10.八进制转换成二进制

规则:将八进制数每 1 位,转成对应的一个 3 位的二进制数即可。

案例:请将 0237 转成二进制

02(010)3(011)7(111) = 0b10011111

11. 十六进制转换成二进制

规则:将十六进制数每 1 位,转成对应的 4 位的一个二进制数即可。

案例:请将 0x23B 转成二进制

0x2(0010)3(0011)B(1011) = 0b001000111011

课堂练习:请将

01230 转成 二进制

0xAB29 转成二进制

4.原码、反码、补码(重点、难点)

image-20220203084758945

image-20220203084816945

12.位运算符

1. java 中有 7 个位运算(&、|、^、~、>>、<<和 >>>)

image-20220203083900380

//推导
		//计算时已补码来计算,计算结果用原码来体现
		//1.得到2的原码 00000000 00000000 00000000 00000010
		//正数的反码、补码、原码都一样
		//2.得到2的补码  00000000 00000000 00000000 00000010
		//3.得到~2的补码 11111111 11111111 11111111 11111101

		//4.得到4的原码  00000000 00000000 00000000 00000100
		//5.得到4的补码  00000000 00000000 00000000 00000100
		/**
		 * 进行&运算
		 * 	11111111 11111111 11111111 11111101
		 * 	00000000 00000000 00000000 00000100
		 * 	00000000 00000000 00000000 00000100
		 */
		System.out.println(~2&4);
2.还有 3 个位运算符 >>、<< 和 >>> , 运算规则
1) 算术右移 >>:低位溢出,符号位不变,并用符号位补溢出的高位

2) 算术左移 <<: 符号位不变,低位补 0

3) >>> 逻辑右移也叫无符号右移,运算规则是: 低位溢出,高位补 0

4) 特别说明:没有 <<< 符号
//编写一个main方法
	public static void main(String[] args) {
		System.out.println(1 >> 2); //0
		System.out.println(1 << 2); //4
		System.out.println(4 << 3); // 4 * 2 * 2 * 2 = 32
		System.out.println(15 >> 2); // 15 / 2 / 2 = 3

		System.out.println(-10.4%3); // -1.4近似值

		int i=66;
		System.out.println(++i+i); //134
	}