JavaSE基础day02变量、数据类型与运算符
一、变量
(一)变量的概念
变量: 在程序运行过程中,其值可以发生改变的量
举例 : 年龄, 手机号码, 家庭住址, 产品单价...
(二)变量的定义和使用
1. 变量定义步骤
变量的定义分为两步:
(1) 变量的声明: 确定了变量名 和 变量的数据类型
(2) 变量的赋值: 为变量进行初始化赋值
2. 变量定义语法
(1) 方式1: 先声明 再赋值
语法:
数据类型 变量名; --> 变量的声明
变量名 = 变量值; --> 变量的赋值
案例:
int a;
a = 10;
(2) 方式2: 声明的同时并赋值
语法:
数据类型 变量名 = 变量值;
案例:
int a = 20;
3. 变量的使用:
变量的访问 : 直接通过变量名访问变量值
变量的赋值 : 变量名 = 新的变量值;
4. 变量的内存理解:
(三)变量定义和使用注意事项
1. 变量的作用域:只能在变量的作用域范围内访问该变量
作用域: 指可以访问到变量的范围区域,从定义的位置开始,到所在的距离最近的代码块{}结束
2. 在方法中可以定义同名的两个局部变量,但是要求两个同名的局部变量不能有重合的作用域(局部变量即定义在方法中的变量)
举例 : 同一班级(重叠作用域)中有两个同名学生(两个同名变量), 于是老师通过名字区分学员, 出现矛盾情况
3. 局部变量在使用之前必须先赋值
4. 相同数据类型的变量可以连续定义, 但不建议使用
public static void main (String[]args){ // 1. a自定义起,使用范围在main方法中 int a = 15; System.out.println(a);// 15 }
{ int b = 30; System.out.println(a + b);// 45 } // 变量b超出使用范围, 于是代码报错 // System.out.println(b); // 2. 相同的作用域(局部变量)变量, 名字不要重复 // 局部变量: 定义在方法中的变量 int x = 89; // int x = 95; System.out.println(x); { int y = 99; } { int y = 77; } // 3. 局部变量没有赋值不能使用 int t; // t变量没有赋值 // System.out.println(t); // 4. 相同数据类型变量可以连续定义(了解) int q = 99, w = 11, e = 12; } }
(四) 计算机存储单元
1. 概述: 计算机底层是采用二进制的方式存储数据的,计算机中存储的最小信息单位叫比特位(bit),通常用 b 表示,8个比特位构成计算机中最基本的存储单位叫字节(Byte),通常用 B 表示.
2. 存储单位之间的换算关系:
8bit = 1B
1024B = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB
1024TB = 1PB...
(五) JAVA数据类型
5.1数据类型分类
Java语言是一门强类型语言, 定义一个变量时, 必须要指定这个变量的数据类型; 因为不同的数据类型在内存中占有的空间位置和大小不同, 表示的数据也不同
5.2基本数据类型
5.2.1整数类型
注意事项:
1. 整数类型中字面值常量的默认类型是int类型
2. long类型的变量在定义的时候,当字面值超过int范围需要在字面值后加 L / l,建议 L
5.2.2小数(浮点)类型
注意事项:
1. 小数类型的字面值常量默认类型是 double类型
2. float 类型变量在定义的时候,需要在字面值后加 F / f,建议F
3. double 类型的变量在定义的时候,可以在字面值后加 D / d,也可以不加.
4. 浮点型存储的数据是不精确的数据,所以在运算过程中,其结果也有可能不精确.
例如:
double a = 0.1;
double bbb = 0.2;
System.out.println(a + bbb);// 0.30000000000000004
5.2.3字符类型
1. 字符类型变量的赋值方式:
(1) 通过 '' 形式赋值
案例:
char c = 'A';
(2) 通过ASCII码表赋值
案例:
char c = 65;
常用的ASCII码表值
'A' -- 65 'a' -- 97 '0' -- 48
(3) 通过unicode编码赋值
案例:
char c = '\u0041';
说明: unicode编码采用16进制的形式进行赋值
十六进制就是0到15,逢十六进一,都有 0 1 2 3 4 5 6 7 8 9 a b c d e f
(4) 通过unicode编码赋值,使用十进制的形式赋值
案例:
char c = 34888;
2. ASCII编码表 : 别称’字符集’,最开始只有英文、数字和英文状态的特殊符号,定义在ASCII编码表中
规律:数字本身连续,数字到大写字母不连续;大写字母本身连续,大写字母到小写字母不连续;小写字母本身连续
5.2.4布尔类型
5.3字符串类型
String 类是字符串,在定义String类型的变量的时候,使用 "" 括起来表示字符串常量内容
举例 : String str = “写任意字符序列”;
注意: String类是引用数据类型
代码
public static void main(String[] args) { // 1. 整数类型 byte b = 56; // byte b1 = 270; short s = 1500; int i = 1600000; long lo = 123456789; // 注意事项: 如果定义出的整数, 使用long类型表示, 而数值超出了int范围之外 // 那么需要在long类型数据后面添加一个 L/l, 表示这个long类型数据 long lo1 = 12345678918L;// L大写 long lo2 = 12345678918l;// l小写 System.out.println(67);// 67就是int类型数据 }
(一) 基本数据类型转换
6.1基本数据类型转换概念
(1) 转换原因: Java是强类型语言,数据类型之间不能随意转换,但运算时数据类型不匹配,所以需要转换.
(2) 数据类型转换分类:
a : 自动类型提升
b : 强制类型转换
6.2自动类型提升
1. 范围小的数据类型可以直接转换为范围大的数据类型
2. 数据类型范围大小排序:
3. boolean类型不参与大小排序
4. 注意事项:
int类型以下运算提升为int,int以上计算提升为较大类型
6.3强制类型转换
1. 大范围数据类型的变量/常量 赋值 给一个小范围数据类型的变量,需要进行强制转换.
2. 格式:
目标数据类型 变量名 = (目标数据类型)原数据类型变量名或原常量值;
3. 注意事项:
(1) 强制类型转换可能会损失精度,得到错误的数据.
(2) 小数类型强制转换为整数类型时,直接舍去小数部分,只保留整数部分.
6.4常量优化机制
在编译时,整数常量的计算会直接算出结果,并且会自动判断该结果是否在该数据类型取值范围内
例如: byte b = 10 + 20 ; 编译器会在编译阶段 直接进行 10 + 20 的计算得出30的结果,并判断30是否在byte范围之内.
二. 运算符
(一) 运算符概述
1.运算符概念
对常量或者变量进行操作的符号,通常用于数据的比较或运算
2.举例
(1) 10 + 20中, +是运算符中的算术运算符
(2) 销售产品, 验证库存量 >= 购买数量, >= 是比较运算符
3.运算符分类
算术运算符、赋值运算符、比较运算符、逻辑运算符、位移运算符、三元运算符
(二) 算术运算符
1. 算术运算符概念:对常量或变量进行算术运算的符号
2. 表达式概念:由常量,变量,运算符组成符合java语法的式子就称为表达式,表达式都有结果,结果就是表达式的值
举例
double price = 22.9;
int count = 2;
double total = price * count;
*:运算符, 并且是算术运算符, 表示乘法运算
price * count:是表达式, 由于 * 是算术运算符, 因此这个表达式叫算术表达式
3. 算术运算符
4. + : 加法运算
1)数值加法运算
做两个数据的加法, 3 + 5 = 8;
2)字符加法运算
字符类型进行"+"操作时,通过编码表将字符类型转换成计算机底层存储的数值来进行计算
案例1:
定义字符类型变量:char ch = 'A'; ch + 10 结果是什么类型数据,数值结果为多少?将计算结果再转换成char类型,对应的字符结果为多少?
3)字符串加法(拼接)
字符串类型与任意数据类型相加,都将其他类型转成字符串类型后拼接,结果仍然是字符串类型
案例1:
定义字符串 String s = "ujiuye"; 请得出以下表达式的运行结果
1) s + 6
2) 6 + s
3) s + 6 + 66
4) 6 + 66 + s
5) s + (6 + 66)
6) s + 'A'
7) s + "good"
案例2: 得出输出结果
int x = 5;
int y = 10;
System.out.println(x + y + "x" + "y"+ x + y);
5. - : 减法运算
1)单独使用在某变量或常量数据之前,表示负数
2)数据减法运算
6. * : 乘法运算
1)数据乘法运算
7. / : 除法运算
1)取结果的商
2)特殊情况:
a:整数除法运算只能得到整数
b:运算中有浮点类型参与才能得到小数
8. % : 取余(取模)运算
1) 两数相除, 获取余数
特殊情况:取余结果的符号只和%前面的操作数的符号有关
2) 作用:获取余数;判断是否整除;判断奇偶;获取各个位数字等等,通常用作数据的筛选.
案例 : 获取出345这个数据上个位,十位,百位上的数字
9. ++,--运算:
(1) ++: 自增运算符,表示每次让变量值+1
(2) -- : 自减运算符,表示每次让变量值-1
注意:自增自减运算符, 只能使用在变量之上
(3) ++,--运算符的使用(以自增运算++举例说明,--使用完全一致)
1.自增运算符既可以写在变量的前面,也可以写在变量的后面
2.当a++和++a作为一个单独的语句存在时,没有任何区别,都是表示自增的动作,都可以把a自增1
3.当a++和++a作为一个表达式一部分存在时,表示的数据值是有区别的:
a++先获取a的值,然后再自增
++a先自增,然后再获取a的值
案例1:定义变量 int a = 10;int b = 5;
分别计算a++和++a的结果; 以及--b和b--的结果;
案例2:定义变量 int x = 20;int y = 15;
依次计算以下结果:
++x + y;
y-- + x;
x++ + y;
(三) 赋值运算符
1) 基本算数运算符 : = 赋值功能
2) 扩展赋值运算符:
+= -= *= /= %=
格式:
变量名称 += 表达式
变量名称 -= 表达式
变量名称 *= 表达式
变量名称 /= 表达式
变量名称 %= 表达式
注意:
1)等价于:
变量名称 = (左边变量数据类型)(变量名称 + (- * / %) 表达式);
2)不同:
扩展赋值运算符,包含了强制类型转换,转化为左边变量的类型.
案例 : short s = 5; s = s + 1; 代码是否有错?
short s = 5; s += 1; 代码是否有错?
(四) 比较运算符
1. 用于比较是否相等和大小关系的符号,计算结果为boolean.
2. 使用格式:
表达式1 == 表达式2
表达式1 != 表达式2
表达式1 > 表达式2
表达式1 < 表达式2
表达式1 >= 表达式2
表达式1 <= 表达式2
案例: 定义一个变量i,利用比较运算符== != > < >= <=与常量5进行比较.
(五) 逻辑运算符
1.用于连接逻辑数据的运算符,只能运算boolean类型的数据,运算结果为boolean.
2. 逻辑与: & (并且,同时,和, 要求多个条件同时成立的场景下使用)
格式:
表达式1 & 表达式2
基本用法:
true & true 结果为true
true & false 结果为false
false & true 结果为false
false & false 结果为false
总结: 全真为真, 一假则假,表达式1和表达式2要同时为true,结果才能为true.
案例: 定义一个字符, 判断这个字符是否是大写字母
3. 逻辑或: |
格式:
表达式1 |表达式2
基本用法:
true | true 结果为true
true | false 结果为true
false | true 结果为true
false | false 结果为false
总结: 一真为真, 全假为假,表达式1和表达式2要同时为false,结果才能为false.
案例: 判断一个字符是否是英文字母
4. 逻辑异或: ^
格式:
表达式1 ^ 表达式2
基本用法:
true ^ true 结果为false
true ^ false 结果为true
false ^ true 结果为true
false ^ false 结果为false
总结: 相同为假, 不同为真,表达式1和表达式2结果相同,表示false,结果不同,表示true.
5. 逻辑非: !
基本用法:
!true 结果为false
!false 结果为true
总结:
取表达式结果的相反结果.
6. 短路逻辑与: &&
格式:
表达式1 && 表达式2
基本用法:
true && true 结果为true
true && false 结果为false
false && true 结果为false
false && false 结果为false
总结:
用法同&,但是,与&不同的是,左边表达式1计算为假则不计算右边表达式2.整个结
果为假. 更加高效
案例1: 定义出一个整数变量i , 判断i是不是5到10之间的整数
案例2: int a = 10 ; a < 3 && (++a) > 7 ,判断变量a的值为多少
7. 短路逻辑或: ||
格式:
表达式1 || 表达式2
基本用法:
true || true 结果为true
true || false 结果为true
false || true 结果为true
false || false 结果为false
总结:
用法同|,但与|不同的是,左边表达式1计算为真则不计算右边表达式2.整个结
果为真. 更加高效
案例1 : int a = 10 ; a > 3 || (++a) > 7,判断变量a的值为多少
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理