一、变量:存储数据
局部变量 & 成员变量
-
变量的格式:
//声明一个变量并赋值 数据类型 变量名 = 值; 如: int var = 10; //声明一个变量 数据类型 变量名; 如: int var; //为变量赋值 变量名 = 值; 如:var = 10;
2.变量的概念:
1. 在内存中开辟一块内存空间
2. 该空间有名称(变量名),有类型(数据类型)。
3. 变量可以在指定的范围内不断的变化
3.变量的注意:
①变量作用在所属的大括号内。
②局部变量在使用前必须赋初始值
③变量先声明,后使用
④在同一个作用范围内,变量名不能重复。
一、变量的数据类型:
基本数据类型(8种):
整型:byte(8位) short(16位) int(32位)-默认类型 long(64位)
浮点型:float(32位) double(64位)-默认类型
字符型:char(16位-2个字节)
布尔型:boolean
引用数据类型:
|--类(class) ------------------ String 字符串
|--接口(interface)
|--数组([])
二、声明变量的注意:
①声明 long 型变量时,值后需要加 l 或 L. long var = 1243283747L;
②声明 float 型变量时,值后必须加 f 或 F. float f1 = 15.6F;
③声明 double 型变量时,值后可以加 d 或 D. double d1 = 15.6d;
④声明 char 型变量时,值必须使用单引号,并且只能存储单个字符。采用 Unicode 编码存储(ASCII、中文、日文、特殊字符等。)
char c1 = 'a';
char c2 = '%';
char c3 = '中';
char c4 = 'u0000';
⑤声明 String 型变量时,值必须使用双引号。 String str = "威武!";
一、数据类型之间的转换:
自动类型转换(自动升级):小容量转大容量.系统自动完成。
①byte short char ---> int ---> long ---> float ---> double
②byte short char 三者之间不做运算,若运算都将自动提升为 int 再做运算。
char c1 = 'A';
char c2 = 'B';
int res = c1 + c2;
③boolean 不参与运算。
④任何基本数据类型与 String 使用 + 连接符,都将自动“串接”成 String 。
强制类型转换:大容量转小容量。需要使用强转符 “(需要转换的类型)”
可能引发损失精度的问题。
//byte b = 10;
//int a = b;
int a = 10;
byte b = (byte)a;
运算符
一、
算数运算符: + - + - * / % 前++ 后++ 前-- 后-- +(连接符)
int a = 1234 / 1000 * 1000; //1000;
System.out.println(-1 % 5);
int a = 10;
//int b = a++;
a = a++; //10
System.out.println(b);
赋值运算符:= += -= *= /= %=
short a = 5;
a = a + 1; //编译?NO
short a = 5;
a += 1; //a = (short)(a + 1)编译?YES
比较运算符(关系运算符): > < >= <= != ==
注意:比较运算符结果都为 boolean 值
位运算符: & | ^ ~ << >> >>>
【面试题】如何最快的速度计算 2 * 8 的结果?
int a = 2 << 3;
逻辑运算符: &&-短路与 ||-短路或 !-逻辑非 ^-逻辑异或 &-逻辑与 |-逻辑或
//需求:判断一个数是否是大于2小于5
int a = 5;
//boolean b = 2 < a < 5; 错误的语法
boolean b = a > 2 && a < 5;
【面试题】&& 与 & 的区别?
&& :称为短路与,当左边表达式结果 false 时,右边表达式将不再计算
& :是位运算符,当用于逻辑运算时,无论左边表达式结果为 true 还是 false,右边表达式都计算。
三元运算符(三目运算符):
格式:
条件表达式 ? 表达式1 : 表达式2;
注意:
①当条件表达式结果为 true 时,执行表达式1,否则执行表达式2
②表达式1和表达式2结果的数据类型需要保持一致!