变量
变量概述
变量是内存中装在数据的小盒子,只能用它来存数据和取数据。
计算机存储单元
计算机存储设备的最小存储单元是“位(bit)”,又称为“比特位”,计算机最小的存储单元叫“字节(byte)”,字节是由连续的8个位组成。计算机是采用二进制存储数据的。
常用存储单位:
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
基本类型之4类8种
变量必须有明确的类型,什么类型的变量装载什么类型的数据
整型:byte,short,int,long
浮点型:double,float
字符型:char
布尔型:boolean
常量与类型
Java中默认的整数类型是int,默认的浮点类型是double
尾缀加“F”的,代表float,尾缀加"L"的,代表long,大写,大写,小白开始就没理会,结果做一道题的时候自己把自己弄蒙圈了,题目中有道题小白是这么定义的int =352l,弄了2个多小时,才发现尾缀那个是L,但小白开始一直把它当成1了,自己给自己挖了个坑O(∩_∩)O哈哈~
3.14没有后缀,所以它是double类型;
5.28D为double类型;
1.26F为float类型。
定义变量
定义变量的语法格式:数据类型 变量名 = 数据值;
int a = 100;
使用变量的注意事项
1.变量定义后可以不赋值,使用时再赋值,不赋值不能使用
2.变量使用时有作用域
3.变量不可以重复定义(同一变量名,定义不同的类型是不可以的)
数据类型转换
不同的数据类型可以在一起运算,但要先进行类型转换再运算,数据类型转换遵循原则:
范围小的数据类型值(如byte),可以直接转换为范围打的数据类型值(如int)
范围打的数据类型值(如int),不可以直接转换为范围小的数据类型值(如byte)
数据类型从小打大排序:byte -> short -> int -> long -> float -> double
自动类型转换
//表示范围小的数据类型转换成范围大的数据类型
int i = 100;
double d = i;
强制类型转换
//表示范围大的数据类型转换成范围小的数据类型
double d = 3.14;
int i = (int)d;
运算符
算术运算符
运算符是用来计算数据的符号,数据可以是常量,也可以是变量。被运算符操作的数我们称为操作数
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
+ | 正号 | +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;a++/++a | 2 |
– | 自减 | int b=3;a–/--a | 2 |
注意事项
1.加法熨衣服在链接字符串时要注意,只有直接与字符串相加才会转成字符串
2.除法“/”当两边为整数时,取整数部分,舍余数。当其中一边为浮点型时,按正常规则相除
3.“%”为整除取余符号,小数取余没有意义。结果符号与被取余的符号相同
4.整数做被除数,0不能做除数,否则报错
算术运算符++、–的使用
++运算符,会在原有值的基础上自增1
- -运算符,会在原有值的基础上自减1
//++和--运算符,如果是在后边,则是先运算,后自增,如果是在前边,则是先自增,后运算
//强调一下,++,--运算符前置时,先将变量a的值自增1或者自减1,然后使用更新后的新值参与运算操作
int a =3,b=3;
System.out.println(a++);//此时a的值是3,先运算,后自增
System.out.println(a++);//此时a的值是上边a自增后的结果,所以是4
int i = 3;
System.out.println(++i);//此时i的值是4,先自增,后运算
赋值运算
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
= | 赋值 | 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);//运行结果是30
}
比较运算符
运算符 | 运算规则 | 范例 | 结果 |
---|---|---|---|
== | 相等于 | 4==3 | False |
!= | 不等于 | 4!=3 | True |
< | 小于 | 4<3 | False |
> | 大于 | 4>3 | True |
<= | 小于等于 | 4<=3 | False |
>= | 大于等于 | 4>=3 | True |
这里需要注意一下:
赋值运算符的 = 符号与比较运算符的 == 符号是有区别的,如下:
赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;
比较运算符的 == 符号,是用来判断 == 符号 左右变量的值是否相等的。
逻辑运算符
l 逻辑运算符通常连接两个其他表达式计算后的布尔值结果
l 当使用短路与或者短路或时,只要能判断出结果则后边的部分就不再判断。
boolean b = 100>10;
boolean b2 = false;
System.out.println(b&&b2); // 打印结果为 false
System.out.println(b||b2); //打印结果为 true
System.out.println(!b2); //打印结果为 true
System.out.println(b && 100>10); //打印结果为 true,
运算符的规律:
l 短路与&&:参与运算的两边数据,有false,则运算结果为false;
l 短路或||:参与运算的两边数据,有true,则运算结果为true;
l 逻辑非! : 参与运算的数据,原先是true则变成false,原先是false则变成true。
三元运算符
格式: (条件表达式)?表达式1:表达式2;
表达式:通俗的说,即通过使用运算符将操作数联系起来的式子,例如:
3+2,使用算数运算符将操作数联系起来,这种情况,我们称为算数表达式。
3>2,使用比较运算符(也称为条件运算符)将操作数联系起来,这种情况,我们称为条件表达式。
其他表达式,不再一一举例。
三元运算符运算规则:
先判断条件表达式的值,若为true,运算结果为表达式1;若为false,运算结果为表达式2。
方式一:
System.out.println( 3>2 ? “正确” : “错误” );
// 三元运算符运算后的结果为true,运算结果为表达式1的值“正确”,然后将结果“正确”,在控制台输出打印
方式二:
int a = 3;
int b = 4;
String result = (a==b) ? “相等” : “不相等”;
//三元运算符运算后的结果为false,运算结果为表达式2的值“不相等”,然后将结果赋值给了变量result
方式三:
int n = (3>2 && 4>6) ? 100 : 200;
//三元运算符运算后的结果为false,运算结果为表达式2的值200,然后将结果200赋值给了变量n
商场库存清单案例
public class Test {
public static void main(String[] args) {
d1();
}
public static void d1(){
System.out.println("---------------商品库存清单---------------");
System.out.println("品牌" + "\t"+"尺寸" + "\t"+"价格" + "\t"+"库存");
String macBrand = "苹果";
double macSize = 16.6;
double macPrice =1888.66;
int macCount = 44;
String huaweiBrand = "苹果";
double huaweiSize = 18.6;
double huaweiPrice =3888.88;
int huaweiCount = 16;
System.out.println(macBrand+ "\t"+macSize+ "\t"+macPrice+ "\t"+macCount);
System.out.println(huaweiBrand+ "\t"+huaweiSize+ "\t"+huaweiPrice+ "\t"+huaweiCount);
int totalCount = huaweiCount+macCount;
double totalPrice = huaweiPrice*huaweiCount+macCount*macPrice;
System.out.println("-----------------------------------------");
System.out.println("库存宗苏: " +totalCount);
System.out.println("库存商品总金额: " +totalPrice);
}
}
运行结果:
作业
1.什么是变量?变量的定义格式?要使用变量需要注意什么?
变量是内从中装载数据的小盒子,只能用它来存储数据,通俗讲就是可变的量
定义变量的格式:数据类型 变量名称 = 数据值
变量必须有明确的数据类型,什么类型的变量装载什么类型的数据 同一范围内不能重复 不赋值不能使用
2.Java中的数据类型分几类?基本数据类型有哪些?
分两类:
基本数据类型:byte,short,char,int,long,float,double,boolean
引用数据类型:类,接口,枚举,数组
3.数据类型转换:
隐式转换:由低级专向高级(自动转换)
强制转换:由高级专向低级(强制转换)
面试题
第一题:
byte b1=3,b2=4,b;
b=b1+b2;//错误 因为他们最终是要转向int类型 而int类型的值不能赋值给byte
b=3+4;//正确 因为他们都是常量 具有常量类型优化机制 可以直接识别为byte
第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
有问题 因为这个数超出了byte的取值范围 要用byte类型进行强制转换 结果是-126
第三题:
byte b = 10;
b++;
b = b + 1;//失败 因为在和一个int类型的常量进行相加的时候b自动转换成int类型 而一个int类型的数据是没办法直接赋值给byte类型的变量的
哪句是编译失败的呢?为什么呢?
4.常见的算术运算符有哪些?
答:+ - * / %
(1)+运算符的作用有哪些?
可以作为数学运算符 也可用作字符串拼接符
(2)除法和取余的区别?
除法是数学运算机型相初操作 取余数运算符是对除法操作之后取其余数进行操作的
(3)++和–的使用规则?
分别为自增 自减 在放在 变量前面就是先进行运算放在后面就是后进行运算
5.常见的赋值运算符有哪些?
答:= += -= *= /= %=
(1)+=运算的作用是什么?
a += b;== a = a + b;
(2)扩展的赋值运算符有什么特点?
会进行自动强制数据类型转换
6. short s = 1; s = s + 1;有没有问题?如果有怎么解决?
有问题 因为short类型的专用字节数比int小 但是1是int类型 在表达式进行运算的时候就吧其值提升为int类型了 而int类型不能直接赋值给short类型的变量可以同过强制数据类型转换来解决
short s = 1; s += 1;有没有问题?如果有怎么解决?
没有问题 因为使用的是扩展赋值运算符 这样的话就会实现自动强制数据类型转换
7.分析以下需求,并用代码实现:
(1)已知一个三位数,请分别获取该三位数上每一位的数值
以下是课堂给的答案
public static void main(String[] args) {
@SuppressWarnings(“resource”)//这个注释百度了半天没弄明白到底啥意思
//下边的代码通过百度到是看明白了
char chs[] = String.valueOf(new Scanner(System.in).nextInt()).toCharArray();
System.out.println(“个位是:”+chs[2]+"\n十位是:"+chs[1]+"\n百位是:"+chs[0]);
}
//这是我自己的做法
System.out.println("个位是:" + (678 % 10) + "\n十位是:" + (678 / 10 % 10)
+ "\n百位是:" +(678 / 100));
8.看程序说结果,请不要提前运行?
public class Test1 {
public static void main(String[] args) {
int x = 4;
int y = (--x)+(x--)+(x*10);
/*
(--x)由于--在前边,所以先自减再运算,此时X值为3+(x--)这里的--在后边,
所以先用此时X的值3做运算,运算完成后自减,到后边X*10的时候,X的值已经
是2了+(x*10)
*/
System.out.println("x = " + x + ",y = " + y);
}
}
x = 2
y = 26