不积跬步,无以致千里;
不积小流,无以成江海。
那么什么是变量呢?
变量即是计算机中一块存储空间,是用来存储数据的基本单元。
变量的组成部分?
数据类型 变量名 = 数据;
数据类型:
(1) 数据类型:决定变量在内存中空间大小
(2) 变量名:方便查找变量对应空间数据
(3) 数据:存在变量对应空间中内容
变量语法:
(1) 先声明再赋值:
数据类型 变量名; // 声明
变量名 = 值; // 赋值
int a;
a = 3;
(2) 声明的同时并赋值:
数据类型 变量名 = 数据;
int a = 3;
(3) 同时声明多个同类型的变量:
数据类型 变量名1,变量名2,变量名3=数据;
int a = 1,b,c;
数据类型(8个)【重点】
字节:
Byte简写为 B
1B = 8b (bit 位)
1024B = 1KB
1024KB = 1MB
1024MB = 1GB (G)
1024GB = 1TB 10.24 程序猿节日
(4个整数类型)
整数类型 | 字节 | 取值范围 |
---|---|---|
byte | 1B | -128~127 |
short | 2B | -32768~32767 |
int | 4B | -2147483648~2147483647 |
long | 8B | -922京~922京-L |
注意:
long字面值后面需要加 大写L或是 小写l,建议加L区分数据1;存储整数应用 int较多。
(2个小数类型)
小数类型/浮点类型 | 精度 | 字节 |
---|---|---|
float | 单精度 | 4B |
double | 双精度 | 8B |
注意:
a. float字面值后面必须加 小写f或是大写 F
b. double字面值后面可以加 d或是D,也可以不加;存储小数应用 double较多。
(1个字符类型)
字符类型 | 字节 |
---|---|
char | 2B |
字面值有以下三种方式:
a. 单引号引起来的一个字符(字母、符号+汉字)
char c = 'x';
char c1 = '可';
b. 利用 整数进行赋值:0~65535
char c = 65; // A
char c2 = 29233; //'爱'
c. 利用 unicode编码(十六进制)存储:
char c = '\u0041'; // 转换为十进制为 65->A
(1个布尔类型)
布尔类型 | 字节 |
---|---|
boolean | 1B |
注意:
Java中boolean只能接受 true/false (字面值)
true:代表关系成立
false:关系不成立
引用数据类型(对象数据类型)→String
(1) 理解:数组、对象、接口、集合等数据类型都为对象类型/引用类型
(2) 以String为例理解对象类型:
a. 利用 双引号 引起来的 一个或是多个字符
b. String str = "HelloJava";
String s="你好";
数据类型之间的转换:
Java是一种强类型的语言,对应的数据必须存储在对应类型的变量!
自动类型的提升?
(1) 应用场景:小数据类型的变量赋值给大数据类型的变量
注意:衡量数据大小,从存储的数据范围考量 。
(2) 自动类型提升的规则:
byte->short->int->long ->float ->double
注意:float和double采用科学计数法形式进行存储,所以存储的数据范围会远远大于long
char -> int ->long ->float->double
强制类型转换?
(1) 应用场景:大数据类型的变量赋值小数据类型的变量,需要使用强制类型 转换
(2) 语法: 源数据类型 变量名 = 值;
// double d = 2.5;
目标数据类型 变量名 = (目标数据类型)源数据类型的变量名;
// int a= (int)d;
(3) 强制转换的结果:
a. 如果大数据类型的变量中存储的数据合理(在小数据的存储范围内), 结果不丢失数据 。
int a = 10;
byte b = (byte)a; // 10
b. 如果大数据类型的变量中存储的数据不合理,则数据丢失部分
double d = 2.6;
int a =(int)d; // 2
什么是表达式?
由字面值、运算符、变量组成式子称为表达式,通常有一个结果
表达式的结果的类型规则如下:
(1) 如果表达式中有一个为double类型,则结果为double类型
(2) 如果表达式中没有double类型,有一个为float类型,则结果为float类 型
(3) 如果表达式中没有double/float,有一个为long类型,则结果为long类 型
(4) 如果表达式中没有double/float/long,其余结果都为int类型
byte+byte byte+short short+short
int+int byte+int short+int
↑这几种情况结果都为int类型
什么是运算符?
算术运算符:
(1) + - *(乘法) /(除法) %(取模、取余数)
(2) 注意:Java中的 + 有两种应用:
a. 如果+两端都为数值类型,则 + 为加法运算
b. 如果+两端有一端为字符串(String),则+为字符串拼接
赋值运算符:
(1) = += -= *= /= 等
(2) 举例:
int a = 1;
a += 1 ;
// 结果上:a = a+1
(3) 综合赋值运算符应用层没有自动类型提升:
byte b = 1;
b+=1;
// 编译通过,运行结果为2;
b = (byte)(b+1)
一元运算符:
(1) ++(自增) --(自减)
(2) 举例:
int a = 5;
a++ :或者写成 ++a, 执行一次,a变量中的数据自动加1
a-- :或者写成 --a,执行一次,a变量中的数据自动减1
关系运算符:
(1) >(大于) >= (大于等于 ) <(小于)
<=(小于等于) == (等于) !=(不等于)
(2) 布尔表达式:
被关系运算符连接的表达式,如果关系成立,则结果为true;
关系不成立,结果为false,结果为布尔类型的表达式称为布尔表达式
逻辑运算符:
(1) &&:逻辑与,可以理解为大白话"并且"
两端都必须为布尔表达式,同时为true,结果才为true,只 有有一端为false, 结果为false
(2) ||: 逻辑或,两端都必须为布尔表达式,只要有一端为true,结果为 true,同时为false,结 果为false
(3) !:逻辑非:在布尔表达式的结果上取反
三元运算符:
(1) 语法: 布尔表达式 ? 表达式1:表达式2
(2) 执行原理:
判断布尔表达式的结果为是否为true,为true,则执行表达 式1的结果, 如果布尔表达式的结果为false,则执行表达式2的结果
(3) 举例:
int i= a>b ? a+b:a-b;
// 1>2
关系是否成立,不成立-执行表 达式2 a-b
System.out.println("i="+i);