1.变量的概述
就是容器,可以临时存储的.
2.计算机存储单元
计算机中最小的存储单元是字节,
1B(字节) = 8bit
1KB = 1024b
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
3.java中的数据类型四类八种
整型
byte 1字节 -128~127
short 2
int 4
long 8
浮点
float 4
double 8
字符型
char 2
布尔
booelan 1
4.常量和数据类型
程序中如果是整型且在范围内,那么它是int类型,除非指定类型 整理默认类型是int
同上在浮点数中,如果定义的浮点数要是float那么在后面必须添加F浮点数默认类型是double
5.变量创建的三要素
变量名 数据类型 值
6.定义所有的基本类型数据
7.定义字符串变量
8.定义变量注意事项
public class demo{
public static void main(String[] args){
//错误1,定义了没赋值不能使用,所以定义和赋值一起声明 int i = 3;
int i;
System.out.println(i);
//变量的作用域 {}
{
int y = 9;
}
System.out.println(y);
}
}
9.类型转换-自动转换
不同类型之间的计算,会先转换后计算.
范围小的会先转换为大的后计算(short转换到int之后计算) (自动转换)
范围大的不能转换到小的后计算(会有精度的丢失需要强转)
boolean类型不参与转换
下面是转换顺序
byte-short-int-long-float-double
10.类型湖州那还-强制转换
public class demo{
public static void main(String[] args){
int x = (int)111.222;
System.out.println(x);
}
}
11.算数运算符1
+ - * / % ++ --
注意+在字符串中是连接的意思 任何类型只要和字符串做+操作,所有的数据都变成了字符串.
12.算数运算符2
++ -- 在前面和后面的区别
1.在变量自己计算,在前在后没区别.
2.参与了别的计算
public class demo{
public static void main(String[] args){
int a = 3;
int b = a++;
System.out.println(a); //4
System.out.println(b); //3
int y = 3;
int z = ++y;
System.out.println(y);
System.out.println(z);
}
}
13.赋值运算符
= += -= /= %=
a+=3 比a=a+3 效率高,且有隐式的转换
14.比较运算符
== != < > <= >=
15.逻辑运算符
& | ^ 与 或 异或
! && || 非 短路与 短路或
&只要有一边是false就是false,只有两边都是true才是true
|只要有一边是true就是true,只有两边都是false才是false
^两边相同为false,两边不同为true
!取反
&&短路与 一边有false另一边就不运行了,提高效率
||短路或 一边有true另一边就不运行了,提高效率
16.三元运算符
布尔表达式?结果1:结果2;
17.商场库存案例需求和分析
18.代码实现
public class demo{
public static void main(String[] args){
String macname = "MacBookAir";
double maccc = 13.3;
double macprice = 6988.8;
int mackc = 3;
String lenname = "ThinkpadY600";
double lencc = 14.0;
double lenprice = 5888.8;
int lenkc = 5;
String asusname = "ASUS FL6800";
double asuscc = 15.6;
double asusprice = 4999.9;
int asuskc = 10;
System.out.println("-----------------------商品库存清单-----------------");
System.out.println("品牌型号"+" "+"尺寸"+" "+"价格"+" "+"库存数");
System.out.println(macname+" "+maccc+" "+" "+macprice+" "+mackc);
System.out.println(lenname+" "+lencc+" "+" "+lenprice+" "+lenkc);
System.out.println(asusname+" "+asuscc+" "+" "+asusprice+" "+asuskc);
System.out.println("----------------------------------------------------");
System.out.println("总库存数:"+(mackc+lenkc+asuskc));
System.out.println("库存商品总金额:"+(mackc*macprice+lenkc*lenprice+asuskc*asusprice));
}
}
课后作业
1.什么是变量?变量的定义格式?要使用变量需要注意什么?
2.Java中的数据类型分几类?基本数据类型有哪些?
3.数据类型转换:
面试题:
第一题:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
第二题:
byte by = 130;有没有问题?有问题如何解决?结果是多少呢?
第三题:
byte b = 10;
b++;
b = b + 1;
哪句是编译失败的呢?为什么呢?
4.常见的算术运算符有哪些?
答:+ - * / %
(1)+运算符的作用有哪些?
可以作为数学运算符 也可用作字符串拼接符
(2)除法和取余的区别?
除法是数学运算机型相初操作 取余数运算符是对除法操作之后取其余数进行操作的
(3)++和--的使用规则?
分别为自增 自减 在放在 变量前面就是先进行运算放在后面就是后进行运算
5.常见的赋值运算符有哪些?
答:= += -= *= /= %=
(1)+=运算的作用是什么?
a += b;== a = a + b;
(2)扩展的赋值运算符有什么特点?
6. short s = 1; s = s + 1;有没有问题?如果有怎么解决?
short s = 1; s += 1;有没有问题?如果有怎么解决?
7.分析以下需求,并用代码实现:
(1)已知一个三位数,请分别获取该三位数上每一位的数值
代码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]);
}
代码2:
System.out.println("个位是:" + (354 % 10) + "\n十位是:" + (354 / 10 % 10) + "\n百位是:" +(354 / 100));
(2)例如:123的个位、十位、百位,分别是3、2、1
(3)打印格式"数字123的个位是 3, 十位是 2, 百位是 1"
8.看程序说结果,请不要提前运行?
public class Test1 {
public static void main(String[] args) {
int x = 4;
int y = (--x)+(x--)+(x*10);
System.out.println("x = " + x + ",y = " + y);
}
}
答案:
1.就是可变的量
数据类型 变量名 = 数值;
同一范围内不能重复定义
不赋值不能使用
2.两大类
基本数据类型
byte(1) short(2) int(4) long(8) float(4) double(6) char(2) boolean(1)
引用数据类型
类 接口 数组 枚举
3.
隐式转换:由低级专向高级
强制转换:由高级专向低级
//错误 因为他们最终是要转向int类型 而int类型的值不能赋值给byte
//正确 因为他们都是常量 具有常量类型优化机制 可以直接识别为byte
有问题 因为这个数超出了byte的取值范围 要用byte类型进行强制转换 结果是-126
//失败 因为在和一个int类型的常量进行相加的时候b自动转换成int类型 而一个int类型的数据是没办法直接赋值给byte类型的变量的
会进行自动强制数据类型转换
有问题 因为short类型的专用字节数比int小 但是1是int类型 在表达式进行运算的时候就吧其值提升为int类型了 而int类型不能直接赋值给short类型的变量可以同过强制数据类型转换来解决
没有问题 因为使用的是扩展赋值运算符 这样的话就会实现自动强制数据类型转换