目录
1.变量
1.1.变量的概述
在程序执行的过程中,在某个范围内其值可以发生改变的量。
1.2.为什么要定义变量
用来不断的存放同一类型的数据,并可以重复使用。
1.3.变量的定义格式
数据类型 变量名 = 初始化值
(注意:格式是固定的,记住格式,以不变应万变)
1.4.数据类型
Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存分配了不同大小的内存空间。
1.5.数据类型范围
整数默认:int 小数默认:double
Java各整数类型有固定的表数范围和字段长度,其不受具体操作系统的影响,以保证Java程序的可移植性。
Java语言的整型常量默认为 int 型,声明 long 型变量可以后加 ‘l’ 或 ‘L’,如:
int num = 300; //正确 long num = 8888888888888L; //必须加 ‘l’ 或 ‘L’ 否则会出错
与整数类型类似,Java浮点类型有固定的表数范围和字段长度,不受平台影响。
Java浮点类型常量有两种表示形式:
十进制数形式,如:3.14 314.0
科学计数法形式,如:3.14e² 3.14*10²
Java浮点型常量默认为 double 型,如要声明一个常量为 float 型,则需在数字后面加 f 或 F
如: double d = 12345.6; //正确 float f = 12.3f; //必须加 f 或 F 否则会出错
char 型数据用来表示通常意义上的“字符”
字符常量为用单引号括起来的单个字符,例如:char ch1 = 'a'; char ch2 = '中';
Java字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示。
注:Unicode 是全球语言统一编码。
System.out.println(12+""+22); //1222
System.out.println('a'+1+"hello"); //98hello
boolean 类型适用于逻辑运算,一般用于程序流程控制
boolean 类型数据只允许取值 true 或 false ,不可以 0 或非 0 的整数替代 true 和 false,这点和C语言不同。
1.6.变量的注意点
01-作用域
变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。
02-初始化值
没有初始化值不能直接使用!
03-定义变量
在一行上建议只定义一个变量
可以定义多个,但是不建议
2.数据类型转换
一般来说,参与运算的数据类型,我们需要保持一致。
2.1.默认转换
//直接输出加法计算
System.out.println(3+4);
//定义两个int变量
int x = 3;
int y = 4;
System.out.println(x+y);
//定义int变量接收
int x = 3;
int y = 4;
int z = x+y;
System.out.println(z);
//int 和 byte 计算
int x = 3;
byte y = 4;
System.out.println(x+y);
int x = 3;
byte y = 4;
byte z = x+y;
System.out.println(z);
默认转换(从小到大)
byte,short,char—int—long—float—double
byte,short,char相互之间不转换,它们参与运算时首先转换为 int 类型
2.2.强制转换
int x = 3;
byte y = 4;
byte z = (byte) (x+y);
System.out.println(z);
强制转换格式:
目标类型 变量名 = (目标类型) (被转换的数据);
强制类型转换的前提:
数据类型是兼容的,比如就不可以把字母转换成数字。
开发小结:
我们到底用哪种转换呢?
一般建议,最好不要随意使用强制类型转换,容易造成数据精确度的损失。
(1)容量大的数据类型转换成容量小的数据类型时,要加上强制转换符,但可以造成精确度降低或溢出;使用时要格外注意。
(2)有多重类型的数据混合运算时,系统首先自动的将所有数据转换成容量最大的那一种数据类型,然后再进行计算。
3.字符串操作
请写出下列程序结果
System.out.println('a'); //a
System.out.println('a'+1); //98
- 在这里引入ASCII 码表
- 任何数据和字符串进行操作,结果都是字符串类型。但是要注意运算的顺序。
4.常量
4.1.概述
常量也是一个特殊的变量,特别在这个变量中的值是固定的,不可以修改!
声明这个变量的同时就必须要给它赋一个值。
final int a = 10; //被 final 修饰的变量就变成了常量
一般来说声明常量的时候,常量的名称全部大写
常量概述
在程序执行的过程中其值不可以发生改变
Java中常量分类
字面值常量
自定义常量
4.2.常量分类
- 字符串常量 用双引号括起来的内容
- 整数常量 所有整数 12,23
- 小数常量 所有小数 12.23 , 34.58
- 字符常量 用单引号括起来的内容 ‘a’ ,‘A’ ,‘0’
5.运算符
5.1.概述
- 运算:
对常量和变量进行操作的过程称为运算- 运算符:
对常量和变量进行操作的符号称为运算符- 操作数:
参与运算的数据称为操作数- 用运算符把常量或者变量连接起来符合Java语法的式子就可以称为表达式。
不同运算符连接的式子体现的是不同类型的表达式
5.2.运算符分类
- 算术运算符
- 赋值运算符
- 比较运算符
- 逻辑运算符
- 位运算符
- 三目运算符
5.3.算术运算符
5.3.1.算术运算符常见运算符演示
int x = 10;
int y = 3;
System.out.println(x+y); //13
System.out.println(x-y); //7
System.out.println(x*y); //30
System.out.println(x/y); //3
System.out.println(x*1.0/y); //3.3333333333333335
5.3.2. %取余(取模)
int x = 3;
int y = 4;
System.out.println(x%y); //3
System.out.println(y%x); //1
5.3.3. +符号的常见用法
加法
正数
字符串连接符
//加法
System.out.println(3+4);
//正号
System.out.println(+4);
System.out.println('a');
System.out.println('a'+1); //这里是加法
//字符串连接符
System.out.println("hello"+'a'+1); // helloa1
System.out.println('a'+1+"hello"); // 98hello
5.3.4.自增和自减运算符使用(初级)
int x = 2;
int y = 2;
x++;
//++x;
System.out.println("x:"+x); //3
y--;
//--y;
System.out.println("y:"+y); //1
自增(++)和自减(--)运算符的作用
让变量的值进行自增 1 或者自减 1
单独使用时,符号放在前面或者后面效果都是一样的。
5.3.5.自增和自减运算符使用
int a = 3;
int b = 4;
int c = a++;
int d = b--;
System.out.println(a); //4
System.out.println(b); //3
System.out.println(c); //3
System.out.println(d); //4
int a = 3;
int b = 4;
int c = ++a;
int d = --b;
System.out.println(a); //4
System.out.println(b); //3
System.out.println(c); //4
System.out.println(d); //3
总结:
1.如果是放在操作数的前面,先进行自增或自减,然后再去参与运算
2.如果是放在操作数的后面,先参与运算,然后再去进行自增或自减
练习Test
/**
int a = 10;
int b = 10;
int c = 10;
a = b++;
c = --a;
b = ++a;
a = c--;
请分别计算出a,b,c的值
*/
int a = 10;
int b = 10;
int c = 10;
a=b++; //a10 b11 c10
c=--a; //a9 b11 c9
b=++a; //a10 b10 c9
a=c--; //a9 b10 c8
System.out.println(a); //9
System.out.println(b); //10
System.out.println(c); //8
int a = 4;
int b = (a++)+(++a)+(a*10);
//int b = 4+6+(60)
//注意:运算符的优先级
System.out.println(a); //6
System.out.println(b); //70
5.4.赋值运算符
符号:
= ,+= ,-= ,*=,/=,%=
=为基本的赋值运算符,其他的为扩展的赋值运算符
int x = 10;
x += 20;
//相当于 x = x+20;
System.out.println(x);
5.5.关系运算符(比较运算符)
总结:
1.比较运算符的结果都是boolean型,也就是要么是true,要么是false
2.比较运算符 “==” 不能误写成 “=”
5.6.逻辑运算符
5.6.1.概述
- 逻辑运算符用于链接布尔型表达式,在Java中不可以写成 3<x<6 ,应该写成 x>3&&x<6
- "&"和"&&"的区别
单 & 时,左边无论真假,右边都进行运算;
爽 && 时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
“|” 和 “||” 的区别同理,双或 "||" 时,左边为真,右边不参与运算- 异或(^)与或(|)的不同之处是:当左右都为 true 时,结果为 false
5.6.2.逻辑运算符实战
实战1:逻辑与 &
int a = 2;
int b = 3;
int c = 4;
System.out.println((a>b)&(a>c)); // 错&错——》错false
System.out.println((a>b)&(a<c)); // 错&对——》错false
System.out.println((a<b)&(a>c)); // 对&错——》错false
System.out.println((a<b)&(a<c)); // 对&对——》对true结论:
&逻辑与:有 false 则 false
实战2:逻辑或 |
int a = 2;
int b = 3;
int c = 4;
System.out.println((a>b)|(a>c)); // 错|错——》错false
System.out.println((a>b)|(a<c)); // 错|对——》对true
System.out.println((a<b)|(a>c)); // 对|错——》对true
System.out.println((a<b)|(a<c)); // 对|对——》对true总结:
| 逻辑或:有 true 则 true
实战3:逻辑异或 ^
int a = 2;
int b = 3;
int c = 4;
System.out.println((a>b)^(a>c)); //错^错——》错false
System.out.println((a>b)^(a<c)); //错^对——》对true
System.out.println((a<b)^(a>c)); //对^错——》对true
System.out.println((a<b)^(a<c)); //对^对——》错false总结:
^ 逻辑异或:相同为 false ,不同为 true
实战4:逻辑非 !
取反
实战5:双与 &&
int a = 2;
int b = 3;
int c = 4;
System.out.println((a>b)&&(a>c)); //错^错——》错false
System.out.println((a>b)&&(a<c)); //错^对——》错false
System.out.println((a<b)&&(a>c)); //对^错——》错false
System.out.println((a<b)&&(a<c)); //对^对——》对true
int x = 3;
int y = 4;
boolean b1 = (x++==3 & y++==4); //对&对——》对true
System.out.println(x); //4
System.out.println(y); //5
System.out.println(b1); //对true
boolean b2 = (x++==3 && y++==4); //错&&错——》错false
System.out.println(x); //5
System.out.println(y); //5
System.out.println(b2); //错false
boolean b3 = (++x==3 && y++==4); //错&&错——》错false
System.out.println(x); //6
System.out.println(y); //5
System.out.println(b3); //错false
总结:
&& 双与:同 true 才 true,有 false 则false
左边只要是 false ,右边就不执行
实战6:双或 ||
当有两个条件的时候,只要有一个成立,整体都为真,只有当两个条件都不成立的时候,才返回假。
5.7.三目运算符(三元运算符)if-else 简写
三木运算符(三元运算符)
- 三目运算符格式:
条件表达式?表达式1:表达式2- 条件表达式:
条件表达式无论多么复杂,结果一定是布尔类型(true、false)- 三目运算符的执行流程:
先判断条件表达式的结果 true 还是 false
如果条件表达式的结果是 true ,那么返回表达式1的值
如果条件表达式的结果是 false ,那么返回表达式2的值int x = 2;
int y = 3;
int z;
z = (x>y)?x:y; //3
System.out.println(z);