02_1.变量概述
变量是内存中装载数据的小盒子,你只能用它来存数据和取数据。
02_2.计算机存储单元
1.计算机中储存和运算的最小单位是一个字节,也就是一个byte.
02_3.Java中数据类型
1.数据类型:四类八种
四类 八种 字节数 数据表示范围
整型 byte 1 -128~127
short 2 -32768~32767
int 4 -2147483648~2147483648
long 8 -263~263-1
浮点型 float 4 -3.403E38~3.403E38
double 8 -1.798E308~1.798E308
字符型 char 2 表示一个字符,如('a','A','0','家')
布尔型 boolean 1 只有两个值true与false
02_4.常量和数据类型
1.整形常量默认是int类型
2.小数常量默认是double类型
3.定义长整形数据如果值超过int取值范围后面要+“L”
4.定义float类型的数据后面要+“f” 否则默认是double
02_5.变量创建的三要素
1.定义变量的语法格式:
数据类型 变量名 = 变量值;
int a = 100;
02_6.定义所有的基本数据类型变量
/*
定义Java中的变量
定义出所有数据类型的变量
四类八种
*/
public class Variable {
public static void main(String[] args){
//定义整数类型,字节类型 byte类型
//内存中1个字节, -128 127
byte b = 100;
System.out.println(b);
//定义整数类型,短整型, short类型
//内存中2个字节, -32768 32767
short s = 200;
System.out.println(s);
//定义整数类型, 整型, int类型
//内存中4个字节, -2147483648 2147483647
int i = 500006;
System.out.println(i);
//定义整数类型, 长整型, long类型
//内存中8个字节
long l = 21474836407L;
System.out.println(l);
//定义浮点数据, 单精度 float类型
//内存中4个字节
float f = 1.0F;
System.out.println(f);
//定义浮点数据, 双精度 double类型
//内存中8个字节
double d = 2.2;
System.out.println(d);
//定义字符类型, char
//内存中2个字节, 必须单引号包裹,只能写1个字符
char c = '我';
System.out.println(c);
//定义布尔类型, boolean
//内存中1个字节, 数据值, true false
boolean bool = true;
System.out.println(bool);
}
}
02_7.定义字符串变量
1.创建字符串数据类型变量
2.String 是引用数据类型
/*
常量: 字符串,双引号,包裹, "0-n"
*/
public class Variable_1{
public static void main(String[] args){
//定义变量,字符串类型,数据类型 String 表示字符串的数据类型
String s = "我爱java";
//String 属于引用类型,定义方式,和基本类型一样
System.out.println(s);
int i =10;
}
}
02_8变量定义使用注意事项
1.变量定义后可以不赋值,使用时再赋值。不赋值不能使用。
public static void main(String[] args) {
int x;
x = 20; //为x赋值20
System.out.println(x);//读取x变量中的值,再打印
}
2.变量使用时有作用域的限制。
public static void main(String[] args) {
int x = 20;
{
int y = 20;
}
System.out.println(x);//读取x变量中的值,再打印
System.out.println(y);//读取y变量中的值失败,失败原因,找不到y变量,因为超出了y变量作用范围,所以不能使用y变量
}
- 变量不允许重复定义
public class Variable_2{
public static void main(String[] args){
int i = 5;
System.out.println(i);
{
int j = 10;
System.out.println(j);
}
int i =1;
}
}
02_9数据类型转换_自动转换
-
转换的过程中,数据遵循一个原则:
范围小的数据类型值(如byte),可以直接转换为范围大的数据类型值(如int);
范围大的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte) -
将各种数据类型按照数据范围从小到大依次列出:
byte -> short -> int -> long -> float -> double -
表示范围小的数据类型转换成范围大的数据类型,这种方式称为自动类型转换
-
自动类型转换格式:
范围大的数据类型 变量 = 范围小的数据类型值; 如: double d = 1000; 或 int i = 100; double d2 = i;
02_10数据类型转换_强制转换
1.表示范围大的数据类型转换成范围小的数据类型,这种方式称为强制类型转换
2.强制类型转换格式:
范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值;
如:
int i = (int)6.718; //i的值为6
或
double d = 3.14;
int i2 = (int)d; //i2的值为3
02_11算数运算符_1
-
常见操作
运算符 运算规则 范例 结果 + 正号 +3 3 + 加 2+3 5 + 连接字符串 “中”+“国” “中国” - 负号 int a=3; -a -3 - 减 3-1 2 * 乘 2*3 6 / 除 5/2 2 % 取模 5/2 1 ++ 自增 int a=1; 2 a++/++a -- 自减 int b=3; a--/--a 2
2.注意事项
* a:加法运算 符在连接字符串时要注意,只有直接与字符串相加才会转成字符串。
* b:除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除。
* c:“%”为整除取余符号,小数取余没有意义。结果符号与被取余符号相同。
* d:整数做被除数,0不能做除数,否则报错。
* e:小数做被除数,整除0结果为Infinity,对0取模结果为NaN
02_12算数运算符_2(++在变量前和在变量后的区别)
- 符号写在前面,还是后面,在变量自己独立计算的时候,没有区别
- 但是变量,要是参与了其他运算,有区别了
- a++,a–运算符后置时,先使用变量a原有值参与运算操作,运算操作完成后,变量a的值自增1或者自减1;
- ++a,–a运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作。
02_13赋值运算符
运算符 运算规则 范例 结果
= 赋值 int a=2 2
+= 加后赋值 int a=2,a+=2 4
-= 减后赋值 int a=2,a-=2 0
*= 乘后赋值 int a=2,a*=2 4
/= 整除后赋值 int a=2,a/=2 1
%= 取模后赋值 int a=2,a%=2 0
- 诸如+=这样形式的赋值运算符,会将结果自动强转成等号左边的数据类型。
/*
* 赋值运算符
* +=, -=, *=, /=, %= :
* 上面的运算符作用:将等号左右两边计算,会将结果自动强转成等号左边的数据类型,再赋值给等号左边的
* 注意:赋值运算符左边必须是变量
*/
public class OperatorDemo2 {
public static void main(String[] args) {
byte x = 10;
x += 20;// 相当于 x = (byte)(x+20);
System.out.println(x);
}
02_14比较运算符
运算符 运算规则 范例 结果
!= 不等于 4!=3 True
< 小于 4<3 False
> 大于 4>3 True
>= 大于等于 4>=3 True
- 比较运算符,计算结果只有2个可能,true,false,结算结果的数据类型, boolean类型
- 赋值运算符的 = 符号与比较运算符的 == 符号是有区别的,赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;比较运算符的 == 符号,是用来判断 == 符号 左右变量的值是否相等的。
02_15逻辑运算符
运算符 运算规则 范例 结果
& 与 false&true False
| 或 false|true True
^ 异或 true^flase True
! 非 !true Flase
&& 短路与 false&&true False
|| 短路或 false||true True
1.&:一假则假,一边是false,运算结果就是false
2. |:一真则真,一边是true,运算结果就是true
3. ^:同假异真,两边相同为false,不同为true
4. !:取反
5. &&:一边是false,另一边不运行
6. ||:一边是true,另一边不运行
02_16三元运算符
1.格式: (布尔表达式) ? (结果1):(结果2);
2.布尔表达式结果是true,三元运算符的结果,就是 结果1
布尔表达式结果是false,三元运算符的结果,就是 结果2
02_17运算符优先级
优先级 描述 运算符
1 括号 ()、[]
2 正负号 +、-
3 自增自减,非 ++、–、!
4 乘除,取余 、/、%
5 加减 +、-
6 移位运算 <<、>>、>>>
7 大小关系 >、>=、<、<=
8 相等关系 ==、!=
9 按位与 &
10 按位异或 ^
11 按位或 |
12 逻辑与 &&
13 逻辑或 ||
14 条件运算 ?:
15 赋值运算 =、+=、-=、=、/=、%=
16 位赋值运算 &=、|=、<<=、>>=、>>>=
02_18.商场库存清单案例
1.案例分析.
* a:观察清单后,可将清单分解为三个部分(清单顶部、清单中部、清单底部)
* b:清单顶部为固定的数据,直接打印即可
* c:清单中部为商品,为变化的数据,需要记录商品信息后,打印
经过观察,我们确定一项商品应该有如下几个属性:
品牌型号: 即商品名称,String型
尺寸:物品大小,double型
价格:物品单价,double型
配置:这一项为每种商品的配置信息,String型
库存数:这一项为每种商品的库存个数,int型
* d:清单底部包含了统计操作,需经过计算后,打印
我们发现两个单独的可变化量
总库存数:所有商品总个数,int型
库存商品总金额:所有商品金额,double型
2.案例代码实现
```java
//步骤一: 创建Demo01库存清单.java文件,编写main主方法
public class Demo01库存清单 {
public static void main(String[] args) {
}
}
//步骤二: 记录每种库存商品信息
//苹果笔记本电脑
String macBrand = "MacBookAir";
double macSize = 13.3;
double macPrice = 6988.88;
int macCount = 5;
//联想Thinkpad笔记本电脑
String thinkpadBrand = "ThinkpadT450";
double thinkpadSize = 14.0;
double thinkpadPrice = 5999.99;
int thinkpadCount = 10;
//华硕ASUS笔记本电脑
String ASUSBrand = "ASUS-FL5800";
double ASUSSize = 15.6;
double ASUSPrice = 4999.50;
int ASUSCount = 18;
//步骤三: 统计库存总个数、库存总金额
int totalCount = macCount + thinkpadCount + ASUSCount;
double totalMoney = (macCount * macPrice) + (thinkpadCount * thinkpadPrice) + (ASUSCount * ASUSPrice);
//步骤四: 列表顶部
System.out.println("------------------------------商城库存清单-----------------------------");
System.out.println("品牌型号 尺寸 价格 库存数");
//步骤四:打印库存清单中部信息
//列表中部
System.out.println(macBrand+" "+macSize+" "+macPrice+" "+macCount);
System.out.println(thinkpadBrand+" "+thinkpadSize+" "+thinkpadPrice+" "+thinkpadCount);
System.out.println(ASUSBrand+" "+ASUSSize+" "+ASUSPrice+" "ASUSCount);
//打印库存清单底部信息
//列表底部
System.out.println("-----------------------------------------------------------------------");
System.out.println("总库存数:"+totalCount);
System.out.println("库存商品总金额:"+totalMoney);