---恢复内容开始---
1、变量
变量是内存中装载数据的小盒子,你只能用来把它来存数据和取数据。
2、计算机存储单元
计算机最小存储单元叫“字节(byte)”,用B表示;计算机存储设备的最小信息单元叫“位(bit)”,用b表示。
当程序只需要1个位的空间,操作系统最小会分配给程序1个字节。
换算:
1B(字节)=8bit;
1KB=1024B;
1MB=1024KB;
1GB=1024MB;
1TB=1024GB;
1PB=1024TB
3、基本类型:四类八种
整数常量可以根据所在范围来确定类型,Java中默认的整数类型是int类型。
Java中默认的浮点类型是double类型。
4、创建变量
格式语法:
数据类型 变量名 = 数据值
int a = 100;
1 public class Variable{ 2 public static void main(String args[]){ 3 //定义整数类型,字节类型,byte类型 4 byte b=100; 5 System.out.println(b); 6 7 //定义整数类型,短整型,short类型 8 short s=200; 9 System.out.println(s); 10 11 //定义整数类型,短整型,int类型 12 int i=5000; 13 System.out.println(i); 14 15 //定义整数类型,长整型,long类型 16 long l=123456789123456789L; 17 System.out.println(l); 18 19 //定义浮点型数据,单精度float类型 20 float f=1.0F; 21 System.out.println(f); 22 23 //定义浮点型数据,双精度double类型 24 double d=2.2; 25 System.out.println(d); 26 27 //定义字符型数据,char 28 char c=‘我‘; 29 System.out.println(c); 30 31 //定义布尔类型,boolean 32 boolean bool=true; 33 System.out.println(bool); 34 } 35 }
运行结果:
处理java错误“编码 GBK 的不可映射字符”:首先记事本打开java源文件,然后另存为,选择ANSI编码,覆盖,再试一下,ok,编译通过。
5、定义字符串变量
1 public class Variable_1{ 2 public static void main(String args[]){ 3 //定义变量,字符串类型,数据类型,String表示字符串的数据类型 4 String s="我爱Java"; 5 //String属于引用类型,定义方式和基本类型一样 6 System.out.println(s); 7 8 } 9 }
运行结果:
6、变量定义和使用的注意事项
①定义变量后,不赋值,不可以使用;
②变量是有自己的作用范围,变量的有效范围是定义的一对大括号内;
③变量不允许重复定义。
7、数据类型转换
范围小的数据类型值可以转换成范围大的数据类型值;
范围大的数据类型值不可以转换成范围小的数据类型值;
范围从小到大:byte→short→int→long→float→double
(一)自动类型转换:范围小的数据类型转换成范围大的数据类型;
格式:范围大的数据类型 变量=范围小的数据类型值;
1 public class DataConvert{ 2 public static void main(String args[]){ 3 double d=1000;//出现了类型的自动转换,int自动转成double 4 System.out.println(d); 5 6 int i=100; 7 double d2=i;//出现了类型的自动转换,int自动转成double 8 System.out.println(d2); 9 10 byte b=10; 11 int j=b;//出现了类型的自动转换,byte自动转成int 12 System.out.println(j); 13 } 14 }
(二)强制转换:数据类型取值范围大的,转成取值范围小的类型
格式:被转后的数据类型 变量名 = (被转后数据类型)要被转的数据类型
1 public class DataConvert_1{ 2 public static void main(String args[]){ 3 //double浮点,转成整数int 4 double d=3.14; 5 //被转后的数据类型 变量名 = (被转后数据类型)要被转的数据类型 6 int i=(int)d; 7 System.out.println(i); 8 9 byte b=(byte)200; 10 System.out.println(b); 11 } 12 }
运行结果:
关于byte b=(byte)200;为什么输出的是-56?
byte类型的范围是-128到127.
b+200=203超过范围了,java中就得用补码进行存储。
所谓补码,就是符号位不变,其余位取反,最后+1.
符号位指的是二进制中的第一位,比如1100 0011中,第一个1就是符号位。(1表示负数,0表示正数)
203的二进制位:1100 1011
取补码: 1011 0100=52(注意符号位不参与运算) ,结果+1=53。又因为符号位是1,所以是-53。
8、运算符
①算术运算符
+ 加法,连接符
- 减法
* 乘法
/ 除法
% 取模,获取余数
++ 自增1
-- 自减1
1 public class Operator{ 2 public static void main(String args[]){ 3 //+ 连接作用,将一个连接符和其他数据连接起来 4 //+ 遇到字符串,变成连接符号“5+5=55” 5 //+ 任何字符只要和字符串+。所有的数据都变成了字符串 6 System.out.println("5+5="+5+5); 7 8 //除法运算 9 int i=100; 10 int j=9; 11 System.out.println(i/j);//输出11,两个整数相除,得到的一定是整数 12 13 //取模运算,两个数相除,获取的是余数 14 int k=6; 15 int m=4; 16 System.out.println(k%m);//输出2 17 18 //自增运算 ++ 19 int a=3; 20 int b=4; 21 22 a++;//变量a自己增加1 23 System.out.println(a);//输出4 24 25 ++b; 26 System.out.println(b);//输出5 27 } 28 }
运行结果:
++a和a++的区别
1 public class Operator_1{ 2 public static void main(String args[]){ 3 //符号写在前面和写在后面,在变量独自运算的时候没有区别,但是变量要是参加了运算,就有区别了 4 int i=5; 5 int j=i++;//++后算,先将i的值,赋值j,i自己再++ 6 System.out.println(i);//6 7 System.out.println(j);//5 8 9 int m=5; 10 int n=++m;//++先算,变量m++ 6 变量赋值给n 11 System.out.println(m);//6 12 System.out.println(n);//6 13 } 14 }
运行结果:
②赋值运算符
=
+= -= *= /= %=
特别注意:=是赋值,==是等于
1 public class Operator_2{ 2 public static void main(String args[]){ 3 //=赋值运算符,将右边的值赋值给左边的变量 4 int i=3; 5 i=i+3; 6 System.out.println(i);//6 7 8 //+=赋值运算符 i+=3 i=i+3 9 int j=5; 10 j+=6;//j=j+6 11 System.out.println(j); 12 13 byte b=1; 14 b=(byte)(b+1); 15 System.out.println(b); 16 17 byte b1=1; 18 b1+=b1;//等同b1=(byte)(b1+1); 19 System.out.println(b); 20 } 21 }
运行结果:
③比较运算符
比较运算符,又叫关系运算符,它是用来判断两个操作数的大小关系及是否相等关系的,结果是布尔值true或者false
==
!=
>
<
>=
<=
1 public class Operator_3{ 2 public static void main(String args[]){ 3 int i=3; 4 int j=4; 5 System.out.println(i=j);//4,已经将4赋值给i 6 System.out.println(i==j);//true 7 8 System.out.println(2==1);//false 9 System.out.println(2!=1);//true 10 } 11 }
运行结果:
④逻辑运算符
& 与 一假则假
| 或 一真则真
^ 异或 两边相同为false,不同为true
! 非 取反 !true=false !true=false
&& 短路与 短路与,一边是false,另一边不运行
|| 短路或 短路或,一边是true,另一边不运行
1 public class Operator_4{ 2 public static void main(String args[]){ 3 System.out.println(false&true);//flase 4 System.out.println(true|true);//true 5 System.out.println(true^true);//false 6 System.out.println(!true);//false 7 8 System.out.println("-----------------------------------"); 9 int i=3; 10 int j=4; 11 System.out.println(3>4 && ++j>2); 12 System.out.println(i);//3 13 System.out.println(j);//4,一假则假,++j>2不运行 14 15 System.out.println(3==3 || ++j>2); 16 System.out.println(i);//3 17 System.out.println(j);//4,4,一真则真,++j>2不运行 18 } 19 }
运行结果:
⑤三元运算符
布尔表达式 ? 结果1:结果2;
布尔表达式结果是true,三元运算符的结果就是结果1;
布尔表达式结果是false,三元运算符的结果就是结果2;
1 public class Operator_5{ 2 public static void main(String args[]){ 3 System.out.println(3>2?99:88);//99 4 5 String s= 0==0?"哈哈":"呵呵"; 6 System.out.println(s);//哈哈 7 } 8 }
运行结果:
9、小案例
实现商品库存清单案例
(一)需求分析,打印
(二) 步骤:
(1)实现表头,是固定数据,直接输出语句 sop;
(2)表格中间,商品数据,采用变量形式,定义变量,找对数据类型;
输出所有变量
(3)表格尾巴,一部分数据固定;
另一部分,商品数据进行数学计算,运算符
(三)代码
1 public class Shopp{ 2 public static void main(String args[]){ 3 //输出表头固定数据 4 System.out.println("----------商场库存清单----------"); 5 System.out.println("品牌型号 尺寸 价格 库存数"); 6 //定义表格中的数据变量 7 //品牌型号 String;尺寸,价格 double;库存 int 8 String macBrand="MacBookAir"; 9 double macSize=13.3; 10 double macPrice=6988.88; 11 int macCount=5; 12 13 String thinkBrand="ThinkPadT450"; 14 double thinkSize=14; 15 double thinkPrice=5999.99; 16 int thinkCount=10; 17 18 String asusBrand="ASUS-FL5800"; 19 double asusSize=15.6; 20 double asusPrice=4999.5; 21 int asusCount=18; 22 //商品价格信息变量进行打印,变量之间加入一定的字符串空格 23 System.out.println(macBrand+" "+macSize+" "+macPrice+" "+macCount); 24 System.out.println(thinkBrand+" "+thinkSize+" "+thinkPrice+" "+thinkCount); 25 System.out.println(asusBrand+" "+asusSize+" "+asusPrice+" "+asusCount); 26 27 //计算库存总数,所有商品数量库存求和 28 int totalCount=macCount+thinkCount+asusCount; 29 //计算所有商品库存的中金额,每个商品价格*库存数 30 double totalMoney=macCount*macPrice+thinkCount*thinkPrice+asusCount*asusPrice; 31 //输出表格底部 32 System.out.println("总库存数:"+totalCount); 33 System.out.println("商品库存总金额:"+totalMoney); 34 } 35 }
运行结果: