一、变量
1.变量:计算机中存储数据的基本单元。
2.定义:
数据类型 变量名 = 数据;
(1) 先声明,再分配空间:
数据类型 变量名; int a; // 声明
变量名 = 数据; a = 9; // 分配空间存储数据
(2) 声明的同时并存储数据: 数据类型 变量 = 数据;
int a = 5;
(3) 同时定义多个同类型的变量:
数据类型 变量名1,变量名2=值,变量名3;
二、数据类型:基本数据类型和引用数据类型
(1) 整数类型
byte 1B -128~127
short 2B -32768~32767
int 4B -2147483648~2147483647
long 8B -922京~922京-1
注意:
a. 字面值:程序中可以给变量赋的值
b. long的字面值:如果存储的数据超过int范围,给long类型的变量赋值时,需要字面值后面加l或是L(建议,区分字面l和数字1)
(2) 小数类型:浮点类型,java中浮点可以采用科学计数法进行存储
float:4B,单精度,字面值后面必须加f或者F
double:8B,双精度,字面值后面可以加 d或是D,也可以不加
思考:8B的long和4Bfloat,哪一个存储的数据范围更大?
4B的float存储范围更大,因为 float和double 都是可以采用科学技术法进行存储。
float l = 123456789123456789123f;
//21位 ,1.2345679E20 1.2345679^20 -> 科学技术法
System.out.println(l);
(3) 字符类型: char 2B
字面值的形式一:单引号引起来 一个 字符,
char c = 's';
char c2 = '中';
char c3 = '+';
char c4 = '8';
字面值的形式二:采用整数进行赋值,0~65535
常见的转义字符:改变原有含义的字符 【了解】
'\t' : 水平跳格(tab)
'\n':换行
'\\':反斜杠
'\'':单引号
(4) 布尔类型:boolean 字面值 true/false 1B
a. true:关系成立 ; false:关系不成立
b. Java中的boolean类型只能存储true/false,和0、1任何关系,区分于C语言
(5)引用数据类型:除了8种基本数据类型以外的,数组、接口、集合、字符串等都是对象类型
注意:
存储整数通常使用:int
存储小数通常使用:double
布尔类型通常使用在今后的判断中(true-关系成立;false-关系不成立)
字符串开发中常用:多个字符内容存储时,使用String
写出以下数据存储时对应的数据类型:
年龄 int age = 18;
姓名 String name = "改革";
成绩 double score = 99.5;
电话 String tel = "17710131197";
性别 char sex = '男';
int n = 0; // 0-男 1-女
boolean bn = true; // true-男 false-女
身份证号 String id = "745737543475375x";
家庭地址 String addr = "北京市海淀区";
三、数据类型之间的转换
1.自动类型提升
(1) 应用场景:小数据类型的变量 赋值给 大数据类型的变量 (存储数据的范围越大,代表数据类型为大类型)
(2) 规则:
byte->short->int->long->float->double
char -> int -> long -> float -> double
2.强制类型转换
(1) 应用场景:大数据类型的变量 赋值给 小数据类型的变量,需要强制类型转换
(2) 语法:
源数据类型 变量名1 = 值; // 大数据类型
目标类型 变量名 = (目标类型)变量名1; // 目标类型-小数据类型
int a = 23;
byte b = (int)a;
(3) 强制类型转换的结果:
a. 大数据类型的变量中存储数据在小数据类型的范围内,不会丢失精度
int a = 23;
byte b = (byte)a; // 23
b. 大数据类型的变量中存储数据不在小数据类型的范围内,可能会丢失内容:
double d = 8.9;
int i = (int)d; // 将小数直接截断,结果为 8
四、表达式
1.由变量、字面值、运算符组成式子,通常有一个结果
int a = 3;
int b = 5;
System.out.println(a+b);
2.表达式的结果规则:
(1) 如果表达式中有double类型,结果为 double类型
(2) 如果表达式中没有double类型,有float,结果float类型
(3) 如果表达式中没有double、float,有long类型,结果为 long类型
(4) 其余结果为 int类型
byte+byte byte+short byte+int
short+short short+int int+int
五、运算符
1.算数运算符
+ - *(乘法) /(除法) %(取模、取余数)
注意:java中的+两种用法:
第一种用法:如果+两端都为数值类型,为加法运算
第二种用法:如果+两端只要有一端为字符串类型,为字符串拼接,则结果为字符串类型
System.out.println("hello"+1);
2.赋值运算符
= += -= *= /= %=
int a = 3;
a+= 1 ; // 结果上等价于 a=a+1;
面试题目:分析以下代码是否编程成功,成功,写出对应的结果;否则-写出原因。
(1) byte b= 1;
b = b+1;
System.out.println(b);
(2) byte b2 = 1;
b2+=1;
System.out.println(b2);
分析:代码片段1编译报错,b+1结果类型自动提升为int类型,存储在 byte变量中报错;
代码片段2编译成功, += 没有自动类型提升,结果为2
3.关系运算符
> 大于
>= 大于等于
< 小于
<= 小于等于
== 等于
!= 不等于
被关系运算连接的表达式为布尔表达式;结果为 true/falsee;
true-代表关系成立
false-代表关系不成立
4.逻辑运算符
(1) &&:逻辑与(并且),两端连接的都为布尔表达式,两端同时为结果才为true,只要有一端为false,结果为false
5.三元运算符
(1) 语法:布尔表达式 ? 表达式1:表达式2
(2) 执行原理:如果布尔表达式的结果为true,则执行表达式1,否则执行表达式2