day02-字面量、变量、运算符1
1).在我们昨天编写的程序中: 4).注意:
如果一个表达式中做“多件事情”,++和--在变量的前面或者后面将会影响最终结果:
【注意】
1).main:也要求必须这样写,也都是小写,但它不是“关键字”;
2).String、System、out,println这些都不是关键字,但也必须都这样写!!
1).字面量:指在Java中可以直接存储、并处理的“数据”。
2).Java中可以存储、处理的“字面量”数据有“六种”类型:
1).在我们程序中,尽量不要使用“字面量”,尤其在“多次重复使用某个数据时”:
例如:我们要打印3次学生的年龄:24
System.out.println(24);
System.out.println(24);
System.out.println(24);
2).我们可以“为这个数据起一个名字”——定义变量
例如:我们要打印3次学生的年龄:24
int age = 24;//为24起了一个名字:age
System.out.println(age);//24
System.out.println(age);//24
System.out.println(age);//24
3).变量:就是为一个数据起的一个名字,后续代码可以通过这个“名字”来访问这个值!!更加方便管理
1).定义变量的格式:
数据类型 变量名 = 值;
例如:要存储一个学生的年龄:24
int age = 24;
1).定义变量时,必须要指定某一个“数据类型”。“数据类型”是Java中预先定义好的,不能乱写。
Java中有两类的数据类型:
A).基本数据类型:day01-day04:只能存储“一个值”
四类八种:
1.整数:
1).byte: 1字节(8位) -128到+127
2).short: 2字节(16位) -3万多到+3万多
3).int: 4字节(32位) -21亿多 到 +21亿多【常用】
4).long: 8字节(64位) 很大、很大.....
例如:要存储一个学生的年龄:24
int age = 24;
2.小数:
5).float: 4字节
6).double: 8字节 【常用】
例如:要存储一个学生的身高:1.85
double height = 1.85;
3.字符:
7).char: 2字节
例如:要存储一个学生的性别:男
char sex = ’男’;
4.布尔:
8). boolean: 一个布尔变量占4字节。后面会讲到数组,一个boolean的数组,每个元素占用1个字节。
例如:要存储一个学生“婚否”:已婚/未婚
boolean marry = true;//已婚
B).引用数据类型:day05开始:可以存储“多个值”
1).String:字符串。
例如:存储一个学生的姓名:”刘德华”
String name = ”刘德华”;
2).后面还会讲到:数组、类等等都是“引用类型”
2).”数据类型”的作用:告诉Java,我们要存储的数据是“什么类型的”,以及“申请多大的空间”
3).变量存储的数据,都是存储在“内存”中,都是“临时存储”。
1).在我们的源码中:类名、变量名、方法名等一些元素,都是我们程序员来命名的,在程序内部使用的一个“名字”,它们被统一称为:标识符。
2).这些“标识符”的命名是有规则,也有规范:【全部背下来】
1).规则:必须遵守的
1).组成:字母(中文)、数字、_和$符号
int stu-age = 24;//错误的
2).开头:数字不能开头。
int 2age = 24;//错误的
int age2 = 24;//正确的
int $$ = 24;//正确的
int __ = 24;//正确的
3).关键字:不能和关键字同名
int void = 24;//错误的
int Void = 24;//正确的-Void首字母大写,所以不是“关键字”
int myvoid = 24;//正确的myvoid作为一个整体,不是关键字
4).空格:名称中不能包含空格
int stu age = 24;//错误
2).规范:建议遵守的
1).一条:见名知意、驼峰命名
1).见名知意:int age = 24;,不要使用:int a = 24;
如果英文不熟练,可以用“拼音”。
2).驼峰命名:大小写组合。
a).大驼峰:首字母大写,后续每个单词首字母都要大写。“类名”建议采用这种
publi class HelloWorld{
}
b).小驼峰:首字母小写,后续每个单词首字母要大写。“变量名”和“方法名”用小驼峰。
int stuAge = 24;
1).定义变量时,赋的“值”一定符合以下要求:
1).必须是左边声明的类型的值:
int a = “字符串”;//编译错误,类型不匹配
String b = 24;//编译错误,类型不匹配。
2).也可以是左边类型“兼容”的值:
char a = ‘c’;
char a = 99;//也可以——char类型底层就是“数值”类型,所以可以赋值为一个整数。
double b = 20;//也可以——小数类型都会兼容整数类型。(整数不能兼容小数)
1).关于“整数字面量”:在Java中,所有的“整数字面量”,Java统一默认采用:int类型存储
例如:
int a = 20;//1.先用int类型来存储20;2.然后为这个存储空间绑定一个int类型的变量:a
这就会有一个问题:int类型最大能存储21亿
int a = 2200000000;//编译错误,先用int存22亿时,就出错了。
long b = 2200000000;//编译错误,先用int存22亿时,就出错了。
long b = 2200000000L;//OK了,先用long存22亿,然后再绑定long类型的变量:b
大家记住:对于“整数字面量”如果超过int的最大值(21亿多),可以在后面加一个L/l(小写),表示:用long类型来存储这个值。
2).关于“小数字面量”:在Java中,所有的“小数字面量”,Java统一默认采用:double类型存储。
例如:
float f = 0.1;//编译错误。先用double存储0.1,然后绑定float类型时,出错。
float f = 0.1F;//OK了,告诉编译器,用float存储0.1,不要用double存储。
但对于整数,可以直接赋给小数:
float f = 20;//OK的
1).见上面:存储学员信息、存储手机信息
1).我们之前都是一次定义一个变量:
int a = 10;
也可以先声明,后赋值:
int a;
System.out.println(a);//编译错误——因为此时a还没有值
a = 10;
2).也可以一次定义多个“同类型”的变量:
int a = 10 , b = 20 , c = 30;
【注意】
1).b和c绝对不能带int数据类型
2).三个变量中间用了逗号,隔开。
相当于:
int a = 10;
int b = 20;
int c = 30;
1).我们经常在程序中使用各种类型来存储数据。
对于“基本数据类型”的四类八种,除boolean以外,其它七种,相互之间都可以互相转换。
2).有两种转换方式:
A).自动转换:数据类型大小一样的,或者将小类型赋给大类型时。
int a = 10;
int b = a;
或者:
int a = 10;
long b = a;
byte a = 10;//自动转换,因为高位全是0,舍掉的都是0,所以给转
float b = 0.1;//编译错误,因为高位有1,所以不给自动转。
B).强制转换:将大类型的数据存储到小类型中。
long a = 10;
int b = (int)a;
【注意】:
1).小数类型可以强转为整数
double x = 3.79;
int a = (int)x;//舍掉小数部分,只保留整数部分。
System.out.println(a);//3
注意:
byte,short,int,long转char类型,都需要“强转”:因为char不能存储负数
1).三个步骤:
A).导包:在定义类的上方:
import java.util.Scanner;
B).创建对象:在main()方法中
Scanner sc = new Scanner(System.in);
C).接收数据:在创建对象之后
A).接收字符串:
sc.next();//缺点:不能接收带空格的字符串。优点:可以和nextInt()以及nextDouble()一起使用【常用】
sc.nextLine();//优点:可以接收带空格的字符串。缺点:不能和nextInt()以及nextDouble()等其它方法一起使用
B).接收一个整数
sc.nextInt();
C).接收一个小数:
sc.nextDouble();
2).注意:
1).从控制台不能接收一个“字符”:
我们程序中可以存储数据,接下来,程序就需要对数据进行“处理”:
1).对数据进行算术运算
2).对数据进行判断
1).算术运算符:+、-、*、/、%(取余,取除法的余数 )
2).示例:
1).混合运算的问题:
2).“短整型(byte,short,char)”在运算时,会自动提升为int类型,所以:结果必须是int类型。
byte a = 10;
byte b = 20;
int c = a + b;//JVM在执行 a+b时,会将a和b自动提升为int类型,所以结果必须是:int类型。
--------------------------------------------------------------------------------
short t1 = 10;
short t2 = 20;
int t3 = t1 + t2;//结果必须得是:int类型
--------------------------------------------------------------------------------
char c1 = ‘a’;//在内存中变量c1存储的是:‘a’字符对应的编码值(97)
char c2 = ‘b’;//‘b’字符对应的编码值(98)
int c3 = c1 + c2;//97 + 98,结果必须是一个int值。
3).不同类型数据进行混合运算时,不足int的会提升为int,如果有高于int类型的,结果将是这个表达式中的最大类型的。
byte a = 10;
int b = 20;
double c = 30;
double d = a + b + c;
-------------------------------------------------
long a = 10; //8个字节
float b = 0.1F; //4个字节(比long大,因为小数的存储机制不同,如果存储整数,可以存储很大的整数)
float c = a + b;
数据类型的大小,从小到大:
byte-->short、char-->int-->long-->float-->double
4).对于String类型可以使用+符号:做“字符串拼接”
String s = “我爱”;
String s2 = s + “你”;
System.out.println(s2);//”我爱你”
------------------------------------------------------------------
任何类型都可以和“字符串”做“拼接”:
System.out.println(3 + “abc”);//”3abc”
System.out.println(2 + 3 + “abc” + 4);//”5abc4”
System.out.println(5 + 5 + “5 + 5 =“ + 5 + 5);
//1->10 + “5 + 5 = “ + 5 + 5
//2->”105 + 5 = “ + 5 + 5
//3->”105 + 5 = 5” + 5
//4->”105 + 5 = 55”
1).赋值运算符:=、+=、-=、*=、/=、%=
注意:+=、-=、*=、/=、%=都隐式的带“强制转换”
2).作用:更改变量的值:
int a = 10;//赋值语句,执行顺序:从右向左
a += 20;//相当于:a = a + 20;
System.out.println(a);//30
4).注意:
如果一个表达式中做“多件事情”,++和--在变量的前面或者后面将会影响最终结果:
1).自增自减运算符:++,--
2).作用:更改变量的值,加1或者减1
++和--放在变量的前面或者后面都可以:
4).注意:
如果一个表达式中做“多件事情”,++和--在变量的前面或者后面将会影响最终结果: