课程:1-1 阶段|2024.6.3、5
原创大约 15 分钟
课程:1-1 阶段|2024.6.3、5
学院:大数据云
注释:该文件只用于记录课程讲解内容。
基本概念
1、注释
概念:java中对代码进行解释说明的特殊格式的内容 特点:不参与编译和运行 分类: 单行注释:使用一行的区域书写注释的内容【一般给语句或元素进行解释说明】 格式: // 注释内容 多行注释:使用多行的区域书写注释的内容 【一般用于对方法和类的解释说明】 格式: /* 注释内容 */ 特殊的多行注释:文档注释 文档注释可以参与编译,结合Java中的一些特殊的注解会在编译过程中生成当前java资源的文档说明 使用jdk提供的javadoc进行编译 符号: /** 书写文档注释的相关内容 */
public class HelloWorld { // 1、这个是main方法 // 2、他是类的内容之一 // 3、他又是java程序的入口 /* 1、这个是main方法 2、他是类的内容之一 3、他又是java程序的入口 */ public static void main(String[] args) { // 这是输出语句 属于main方法的内容之一 主要效果是在控制台展示HelloWorld System.out.println("HelloWorld"); } }
2、关键字
概念:java中提前定义好的并且赋予特殊的含义或功能的单词 概述:一共有50个,在用的48个,有两个没有使用称为预留关键字 预留关键字:goto const
特点:
- 字母全部小写
- 不能用于标识符【名字】
3、标识符
java给成员【变量、方法、类等】起名字使用的字符序列 【java 中所有的名称都属于标识符】
1、所有大小写的英文字母 2、0-9数字 3、英文符号 _ 和 $ 4、其他国家语言的字符【实际开发:几乎不能使用】
1、数字不能开头 2、不能是关键字 3、不能有空格
判断下面标识符哪些是合法的哪些是不合法的
abc:合格 _name:合格 ¥name: 合格 name01:合格 01name: 不合格 name 01 :不合格 class:不合格
常量
(一) 常量的概念
- 概念
Java中固定不变的数据。 常量存在于内存的方法区的常量池中。
- 使用
java中常量不能独立使用,必须借助于java其他的手段使用常量
分类:
1、整型常量:所有的整数数字 2、浮点常量:所有的小数数字 3、字符常量:所有语言的单个文字符号元素 使用英文的单引号包裹 4、布尔常量:表示真假的两个值 true false 5、字符串常量:所有语言的多个文字或符号的序列 使用英文的双引号包裹文字序列
- 代码示例
public class ConstantDemo { public static void main(String[] args) { // 156749;// 不能独立使用 System.out.println(1654); System.out.println(1214.14564); System.out.println('a'); System.out.println(true); System.out.println("fdafdas"); // System.out.println(null); System.out.println(); } }
变量
(一) 变量的概念
- 概念:
Java代码运行过程中数据会发生改变的量就是变量。 本质: Java中用来存放单个数据的空间【容器】 ---- 承载数据的载体 就是jvm分配出来的一块内存空间 只能存放一个数据
(二) 变量的定义
- 变量的定义方式
1、声明变量 :对外宣称要创建一个变量但是实际没有创建 要求:该变量使用前必须要先赋值 2、创建变量:对外宣称和创建一起完成
- 变量的定义步骤
1、确定变量空间的类型和大小 ------------- 数据类型 2、想好变量的名字 3、确定空间要存放的具体数据
- 变量的定义语法
声明变量: 数据类型 变量名; 创建变量: 数据类型 变量名 = 值;
(三)变量的使用
变量的访问【变量的取值】
1、通过变量名找到变量空间就是得到空间的值 书写: 变量名 ===== 有可能得到是一个具体的数据【常量】 不能独立使用 借助于其他的技术使用 比如:System.out.println(num);
变量的修改
1、通过变量名找到变量空间 2、给该空间存放值 书写: 变量名 = 新值; 比如: num = 4564;
代码示例
public class VariableDemo { public static void main(String[] args) { // 定义变量 // 声明变量【没有存值,空间没有创建出来 只是一个计划】 int num ; // 创建变量【存值 存值的过程就是创建变量的过程】 int num1 = 13254; // 取值【通过变量名找变量空间】 // System.out.println(num); 声明变量不能直接使用 System.out.println(num1); // 给变量存值【改值】 num = 145678;// 给声明变量变量存值意味着变量创建出来 num1 = -456;// 给创建变量存值,变量已经存在,现在的存值使用新值替换旧值 System.out.println(num); // 声明变量不能直接使用 System.out.println(num1); } }
JAVA数据类型
(一) 数据类型分类
- 概念
就是变量创建时提供的一种类型和空间大小的一种依据【标准】 数据类型在java中就是用来修饰变量或数据的 数据类型总体分为两种: 1、基本数据类型:四类八种 1、整数类型 1248原则 byte short int long 2、浮点类型 float double 3、布尔类型 boolean 4、字符类型 char 2、引用数据类型 --- String 类 接口 枚举 注解 数组
- 结构图
(二) 基本数据类型
整数类型:
类型 所占字节 取值范围 byte 1KB - 128 --- 127【-2^7 --- 2^7 - 1】 short 2KB -32768 --- 32767【-2^15 --- 2^15 - 1】 int 4KB -2147483648 --- 2147483647【-2^31 --- 2^31 - 1】 long 8KB -263 --- 263-1
注意事项
1、修饰的变量只能存放整数 2、long类型定义变量的时候存放数据的时候必须要在数据上加标记 L 或 l 3、整数常量在java中系统默认是int类型
代码示例
public class IntegerTypeDemo { public static void main(String[] args) { byte b = -128 ;// -2 ^ 7 - 2 ^ 7 -1 short s = 4568; int i = 1356497; // 存放的数字系统默认是int类型 读取的默认使用int来读取 数字在int的范围内读进来 // 存入long类型的容器属于小类型数据存入大类型的容器可以放进去 数字不需要特殊处理 long l1 = 1564981; // 存放的数字系统默认是int类型 读取的默认使用int来读取 数字不在int的范围内读不进来 // 根本就到不了变量的赋值,数字读取之前需要特殊处理:告诉系统这个数有点特殊需要标记 // 数字加 l 或 L long l2 = 13245679845L; System.out.println(""); } }
小数类型【浮点类型】:
类型 所占字节 取值范围 float【单精度】 4KB 1.4 -45 --- 3.402823538 double【双精度】 8KB 4.9-324 --- 1.7976931348623157308
注意事项
1.小数类型的字面值常量默认类型是 double类型 2.float 类型变量在定义的时候,需要在字面值后加 F / f,建议F 3.double 类型的变量在定义的时候,可以在字面值后加 D / d,也可以不加. 4.浮点型存储的数据是不精确的数据,所以在运算过程中,其结果也是不精确的. 5、浮点类型的大小标准比整数类型的标准大【浮点的4个字节比整数类型的8个字节还要大】
代码示例
public class DoteNumTypeDemo { public static void main(String[] args) { // 小数在系统中默认是double类型 读取的时候都是double 数字读进来就是double // 把double数字放到float中 大的类型数字到小的容器中 进不去 需要对数字进行处理 // 处理:加标记 f 或 F float f = 3.124F; double d = 13254.790790; double d1 = 15646.14564684d; System.out.println(""); } }
字符类型:用来修饰存放字符常量的变量
类型 所占字节 取值范围 char 2KB【和short一样大的】 0 --- 65535
字符类型变量的赋值方式
char ch = 'b';
图示:
- 布尔类型
类型 所占字节 取值范围 boolean 未知 true / false
代码示例
boolean boo = true ; boolean boo1 = false;
(三) 引用数据类型
概述
把操作数据的时候通过操作的数据所在空间的地址值间接的操作数据这样数据的类型就叫做引用数据类型
基本数据类型转换
(一) 基本数据类型转换概念
转换原因
实际开发的时候不同的类型数据根据不同的使用场景需要进行类型之间的相互转换
(二) 数据类型转换分类
1、隐式转换【自动类型提升】----------- 小类型变为大类型
2、显示转换【强制转换】------------------ 大类型转小类型
(三) 自动类型提升
概念
把小类型的数据存放到大类型的容器【变量】中 比如:long l1 = 132456;
数据类型范围大小排序
注意事项
1、直接使用 ,没有特殊处理的过程
(四) 强制类型转换
概念
通过特殊的处理方式把大数据类型的数据存放到小数据类型的变量中 比如: float f = (float)3.12;
格式
小数据类型 变量名 = (指定转化后的数据类型)大数据类型数据
注意事项
1、保证: 小数据类型的空间 >= 指定转化后的数据类型空间 2、一般实际开发 小数据类型的空间 == 指定转化后的数据类型空间 3、强制转换有可能会发生数据的精度丢失
代码示例
public class NumTypeChangeDemo { public static void main(String[] args) { // 自动提升 int i = 521; // i 变成一个比int 数据类型大的类型数字 long l = i; System.out.println(i); System.out.println(l); // 自动提升 double d = 58; // 强制转换 int num = (byte)d; System.out.println(num); System.out.println(d); // 自动提升 double d1 = 58.258; // 强制转换 int num1 = (int)d1; System.out.println(num1);// 58 数字经过强制转换变小 有数据丢失 System.out.println(d1);// 58.258 } }
知识点回顾
常量:
概念:固定不变的量
分类:
1、整型常量:所有整数
2、浮点常量:所有的小数
3、字符常量:单个文字元素 表现形式:英文的单引号包裹
4、布尔常量:表示真假 true false
5、字符串常量:表示多个文字元素的序列 表现形式:双引号包裹
特点:
不能单独使用 必须借助Java的其他技术
位置:
存在内存的方法区中的常量池
变量
概念:
Java代码运行过程中值会改变的量
本质:
就是存放单个数据的空间
特点:
只能存放一个固定类型数据
定义:
1、声明:
语法: 数据类型 变量名;
2、创建
语法: 数据类型 变量名 = 数据;
使用:
存数据【修改数据】:
变量名 = 新值;
取数据:
变量名
数据类型:
概念:创建变量的一种参考标准或依据
分类:
1、基本数据类型【四类八种】
1、整型:byte short int long
2、浮点:float double
3、布尔:boolean
4、字符:char
2、引用数据类型 String
1、类【类名】
2、数组【数据类型[]】
3、接口【接口名称】
4、枚举【枚举名】
5、注解【@注解名】
数据类型的转换:
1、大转小【强转换】
语法:
小类型 变量名 = (指定类型)大类型的数据
前提:
指定类型 <= 小类型
风险【弊端】:小数取整
精度丢失
2、小转大【自主提升】
数据类型的排序
byte short【char】 int long float double
运算符
(一) 运算符概述
1.运算符概念 对常量或者变量进行操作的符号,通常用于数据的比较或运算 2.举例 1)10 + 20中, +是运算符中的算术运算符 2)销售产品, 验证库存量 >= 购买数量, >= 是比较运算符 3.运算符分类 算术运算符、赋值运算符、比较运算符、逻辑运算符、位移运算符、三元运算符
(二) 算术运算符
概述
java用在数据的算数运算中的符号
符号
符号 作用 基本用法 + 加 加法运算, 字符串拼接【+遇到了字符串】 - 减 减法运算 * 乘 乘法运算 / 除 除法运算, 得商 % 取余 取两数相除的余数 ++ 自增 变量值自增1 -- 自减 变量值自减1
5.+ : 加法运算 1)数值加法运算 做两个数据的加法 2)字符加法运算 字符类型进行"+"操作时,通过编码表将字符类型转换成计算机底层存储的数值来进行计算,常见的字符 需要记住: '0'--->48 0-9是连续的; 'A'--->65 A-Z是连续的; 'a'--->97 a-z是连续的; 案例1: 定义字符类型变量:char ch = 'A'; ch + 10 结果是什么类型数据,数值结果为多少?将计算结果 再转换成char类型,对应的字符结果为多少? 计算过程: 'A' + 10 === 'A'变为编码数字65【int】 65+10 == 75 === 结果类型是int 结果值75 char ch1 = (char)75; === 把75强制转换为字符类型 值就是75数字对应的ASCII码表中的字符K 代码示例: public class ArithmeticOpetratorDemo { public static void main(String[] args) { char ch = 'A'; // 比int 小的数据类型的数据运算的时候自动提升为int之后再进行运算 int num = ch + 10; char ch1 = (char)num; System.out.println(num);// 75 System.out.println(ch1);// K } } 3)字符串加法(拼接) 字符串类型与任意数据类型相加,都将其他类型转成字符串类型后拼接,结果仍然是字符串类型 案例2: 定义字符串 String s = "ujiuye"; 请得出以下表达式的运行结果 1) s + 6 ======= ujiuye6 2) 6 + s ======= 6ujiuye 3) s + 6 + 66 ====== ujiuye666 4) 6 + 66 + s ========= 72ujiuye 5) s + (6 + 66) ======= ujiuye72 6) s + 'A' ======= ujiuyeA 7) s + "good" ===== ujiuyegood 案例3: 得出输出结果 int x = 5; int y = 10; System.out.println(x + y + "x" + "y"+ x + y); ---- 15xy510
6.- : 减法运算 1)单独使用在某变量或常量数据之前,表示负数 2)数据减法运算
7.* : 乘法运算 1)数据乘法运算
8./ : 除法运算 1)/表示数据除法运算, 取结果的商 2)特殊情况: a:整数除法运算只能得到整数 b:运算中有浮点类型参与才能得到小数
9.% : 取余(取模)运算 1)两数相除, 获取余数 特殊情况:取余结果的符号只和%前面的操作数的符号有关 2)作用:获取余数;判断是否整除;判断奇偶;获取各个位数字等等,通常用作数据的筛选.
10. ++,--运算: 1)++: 自增运算符,表示每次让变量值+1 2)--: 自减运算符,表示每次让变量值-1 注意:自增自减运算符, 只能使用在变量之上 3)++,--运算符的使用(以自增运算++举例说明,--使用完全一致) 使用场景: 1、单独使用 符号在变量的前后不会对结果产生任何影响 2、混合使用 符号在变量的前后不会对自身的结果产生任何影响,会对其他的运算结果造成影响 原则: 前:先执行自增或自减运算,然后使用结果值参与其他运算 后:先使用变量参与其他运算,然后在自增或自减 案例1:定义变量 int a = 10;int b = 5; 分别计算a++和++a的结果; 以及--b和b--的结果; a++和++a属于单独运算 结果一样都是11 同理--b 和 b-- 结果都是4 案例2:定义变量 int x = 20;int y = 15; 依次计算以下结果: ++x + y; == 36 x = 21 y-- + x; == 35 y = 14 x++ + y; == 35 x = 21
(三)赋值运算符
概述
给变量进行赋值的的时候使用的符号
分类
普通赋值运算符: = :把符号右边的数据存放到左边的变量中 扩展赋值运算符 += -= *= /= %= 在赋值运算前扩展出算数运算 运算: 1、先使用变量值和符号右边的数据进行对应的算数运算 2、将结果值赋值给符号左边的变量中 【如果结果的数据类型大于符号左边的变量的数据类型:自动的强制转换】
注意事项
扩展赋值运算符自带数据类型转换【自动类型提升也有强制转换】
(四)比较运算符
概述
java中用来判断两个数据的大小关系的 结果是布尔类型的值
符号
普通: > >= < <= :只能比较基本数据类型数据的大小关系 特殊: == != :可以比较任意数据类型的数据的大小关系
(五)逻辑运算符
概述
java用来表示两个表达式结果的结合后逻辑关系
分类
逻辑或【|】
表示或者的关系。 运算原则: 有真则真 全假则假 运算过程: 涉及的两个表达式都需要执行完毕按照执行原则得到最后逻辑结果 如果第一个表达式结果是true,最终结果已经确定,第二个表达式不需要执行为了提升该种情况的效率所以就有了另一个逻辑或的符号---短路或【||】 注意: 逻辑或和短路或除了运算过程不一样,其他的一模一样 如果第一个表达式结果是true: 逻辑或继续执行第二个表达式 短路或不会执行第二个表达式
逻辑与【&】
表示并且的关系。 运算原则: 有假则假 全真则真 运算过程: 涉及的两个表达式都需要执行完毕按照执行原则得到最后逻辑结果 如果第一个表达式结果是false,最终结果已经确定,第二个表达式不需要执行为了提升该种情况的效率所以就有了另一个逻辑与的符号---短路与【&&】 注意: 逻辑与和短路与除了运算过程不一样,其他的一模一样 如果第一个表达式结果是false: 逻辑与继续执行第二个表达式 短路与不会执行第二个表达式
逻辑异或【^】
表示异同关系【夫妻关系】 运算原则: 真假为真 真真为假 假假为假 代码示例: public class LogicalOperatorDemo { public static void main(String[] args) { System.out.println(true ^ true);// false System.out.println(true ^ false);// true System.out.println(false ^ true);// true System.out.println(false ^ false);// false } }
逻辑非【!】
表示取反的关系 运算原则: 非真即假 非假即真
(六)三元运算符
概述
本身不是一个符号,是一个可以同时操作三个表达式的表达式。 元:就是表达式 表达式在java中可以使是 常量 变量 语句
格式:
表达式1 ? 表达式2 : 表达式3;
执行流程
判断表达式1是否成立 成立:执行表达式2 结果作为三元运算符的最终结果 不成立:执行表达式3 结果作为三元运算符的最终结果
注意事项:
1、表达式1必须是布尔表达式 2、如果三元运算符的结果是一个数据的时候: 要求表达式2和表达式3的结果类型和接收的变量的数据类型尽量一致
代码示例
public class TernaryOperatorDemo{ public static void main(String[] args) { int num1 = 123; int num2 = 54; // int max = num1 > num2 ? num1 : num2; // System.out.println(max); System.out.println( num1 > num2 ? num1 : num2); } }