day02
目录
变量
什么是变量
- 变量是存储数据的“容器”
- 变量具有复用性: 一次定义多次使用
- 变量具有可变性:随时随地多次使用
为何使用变量(操作题)
实现:计算边长为3的正方形的面积和周长
public static void main(String[] args) {
System.out.println("正方形的边长是:");
System.out.println(3);
System.out.println("正方形的面积是:");
System.out.println(2*2);
System.out.println("正方形的周长是:");
System.out.println(2*4);
}
实现:计算边长为4的正方形的面积和周长
public static void main(String[] args) {
System.out.println("正方形的边长是:");
System.out.println(4);
System.out.println("正方形的面积是:");
System.out.println(4*4);
System.out.println("正方形的周长是:");
System.out.println(4*4);
}
出现的问题:
1.多次使用同一个数据需要重复编写
2.数据变化时需要大量改动代码
如何解决
定义一个存储数据的“容器”(x)---->变量,而通过改变变量来保存、修改数据。
public static void main(String[] args) {
int x = 2;
System.out.println("正方形的边长是:");
System.out.println(x);
System.out.println("正方形的面积是:");
System.out.println(x*x);
System.out.println("正方形的周长是:");
System.out.println(x*4);
}
总结:
- 变量是存储数据的“容器”
- 变量具有复用性: 一次定义多次使用
- 变量具有可变性:随时随地多次使用
声明
- 变量的声明,需要包含两部分数据类型和变量名
练习
变量的声明:相当于在银行开个帐户
int a; //声明一个整型的变量,名为a
int b,c,d; //声明三个整型的变量,名为b,c,d
//int a; //编译错误,变量不能同名
初始化
"= ": 读作赋值,第一次赋值称为初始化
int a =5;//声明同时初始化
int b; //先声明
b= 5; //后初始化
练习
变量的初始化:相当于给帐户存钱
int e = 250; //声明整型变量e并赋值为250----开户的同时存钱
int f; //声明整型变量f-------先开户
f = 250; //给变量f赋值为250----后存钱
f = 360; //修改变量f的值为360
int g=5,h=8,i=10; //声明三个整型变量g,h,i,并分别赋为5,8,10
访问
- 对变量的访问就是对其所存数据的访问
- println()输出是若不加双引号,则为变量
int a = 5; //取出a的值5,加10后,再赋值给a
int b=a+10; //取出a的值5,加上10后,再赋值给整型变量b
a =a + 10; //在a本身基础之上增加10 ----------->应用效率高
System.out.prinln(b); //输出变量b的值15
System.out.prinln("b"); //输出b,双引号中的原样输出
注意:
在访问变量之前,必须声明并初始化
System.out.println(i); //编译错误,变量i未声明
int i;
Systemt.out.println(i);//编译错误,变量i未初始化
练习
变量e访问:方位的账户里面的钱
int j = 5; //声明整型变量并赋值5
int k = j+10;//取出j的值5,加10后,在赋值给变量k
System.out.println(k);//输出变量k的值15
System.out.println("k");//输出k,双引号中的原样输出
j = j+10;//在j本身基础之上加10
System.out.println(j);//15
int balance = 5000; //账户余额
balance = balance +1000;//存入1000
System.out.println(balance);//6000
//System.out.println(m); 编译错误,变量m未声明
int m;
//System.out.println(m); 编译错误,变量m未初始化
命名
Java变量的命名规则如下:
- 变量名称必须以字母、下划线或美元($)符号开始不可以是数字。
- 变量名称后面可以是字母、数字、下划线或美元符号的组合。
- 变量名称是区分大小写的,即变量名"myVariable"和"myvariable"是不同的。
- 变量名称不可以使用Java关键字和保留字,如class、public、if等。
- 变量名称最好使用有意义的英文单词或简短的缩写,以提高代码的可读性。
以下是一些变量命名的示例:
(数据类型 变量名)
int age; String myName; double averageScore;
boolean isDone; final int MAX_VALUE;
float $weeklySalary; private int _count;
练习
//4)变量的命名:相当于给账户起名
int a1,a_5$,_3c,$5b;
//int a*b; //编译错误,不能包含*号等特殊符号
//int 1b; //编译错误,不能以数字开头
int aa= 5;
//System.out.println(aA);//编译错误,严格区分大小写
//int class;// 编译错误,不能使用关键字
int 年龄;//正确但不建议
int nianling;//必须杜绝
int age;//建议“英文的见名知意”
int score,myScore,myJavaScore;//建议”小驼峰命名法“
基本类型
Java基本类型包括:
1. 整型(Integer)
- byte:1字节
- short:2字节
- int:4字节
- long:8字节
2. 浮点型(Floating-point)
- float:4字节
- double:8字节
3. 字符型(Character)
- char:2字节
4. 布尔型(Boolean)
- boolean:占用系统相关大小 (通常1字节)
主要了解上图中框起来的数据类型
变量(数据)存储在内存中,内存是有大小的
变量到底占用多大内存,是由它的数据类型控制的
int
- 整型,占4个字节,范围-2^31~2^31-1(大致±21个多亿)
int a = 5;//a在内存中占用4个字节
int b = 500000000;//b在内存中也占用4个字节
- 特点:整数直接量默认为int类型,但不能超过范围,如果超范围则会发生编译错误
两个整数相除,结果还是整数,小数无条件舍去(不会进行四舍五入)
运算时如果超出范围,则发生溢出(溢出不会报错,但是要避免出现)
ps:溢出问题可以搜索补码相关内容
int a = 25 //25 为整数直接量,默认为int类型
//int b = 10000000000;//编译错误,100亿默认为int类型,超出范围
//int c = 3.14;//编译错误,整型变量中只能装整数
System.out.println(5/2); //2
System.out.println(2/5); //0
System.out.println(5/2.0); //2.5 Java会将整数值隐式地转换
int d = 2147483647; //int的最大值
d = d+1;
System.out.println(d); //-2147483648(int的最小值),发生溢出
long
- 长整型,8个字节,范围-2^63~2^63-1(±9.2亿亿多)
- 特点:表示长整型直接量,需要在数字后面加L或l(建议写L)
运算时有可能溢出,建议在第一个数字后加L
long a = 25L;
//long b = 10000000000; //编译错误,100亿默认值int类型,超出范围
long c = 10000000000L; //加L为长整型直接量
//long d = 3.14; //编译错误
long e = 10000000000*2*10L;
System.out.println(e); //200亿
long f = 10000000000*3*10L;
System.out.println(f); //不是300亿,溢出
long g = 10000000000L*3*10;
System.out.println(g); //300亿
double
- 双精度,占用8个字节
- 特点:小数直接默认为double型,想要表示float需要在数字后加F或f
不能表示精确数据,运算时可能会发生舍入误差
注:精确场合不能使用double和float 可以采用BigDecimal
double a = 3.14; //3.14 为小数直接量,默认为double型
float b = 3.14F; //3.14F 为float直接量
double c =3.0 , d = 2.9;
System.out.println(c-d); //0.10000000000009, 有可能发生舍入误差
boolean
- 布尔型,占用1个字节
- 特点:只能存储true或false(具体应用在,运算符的应用)
boolean a = true; //true为布尔直接量
boolean b = false; //false为布尔直接量
//boolean c = 250; //编译错误,布尔型只能存储true或false
char
- 字符型,占用2个字节
- 特点:放在单引号中,有且只有一个
采用Unicode编码格式(Unicode编码 :一个字符对应一个码
‘a’ -> 97 ‘A’ -> 65 '0' -> 48)
特殊符号需要通过\来转义
char c1 = '女' ; //字符女
char c2 = 'f' ; //字符f
char c3 = '6' ; //字符6
char c4 = ' ' ; //空格符
//char c5 =女 ;//编译错误,字符类型直接量必须放在单引号中
//char c6 ='10';//编译错误,只能存储一个字符
//char c7 ='' ;//编译错误,必须有字符
char c8 = 65; //0到65535之间
System.out.println(c8);//println()会依据变量的类型做类型输出展示
//c8为char型,会以字符的形式输出
char c9 = '\\';
System.out.println(c9); // \
预告
基本类型间的转换
运算符
如有问题欢迎指正