一、标识符
标识符可以简单的理解成一个名字。
在Java中,我们需要标识代码的很多元素,包括类名、方法、字段、变量、包名等等。
一个正确的标识符需要遵循以下规则:
-
标识符可以由字母、数字、下划线(_)、美元符($)组成,但不能包含 @、%、空格等其它特殊字符
-
不能以数字开头。如:123name不合法
-
标识符严格区分大小写。如:tmooc 和 Tmooc是两个不同的标识符
-
标识符的命名最好能反映出其作用,做到见名知意。
-
标识符不能是Java的关键字
二、关键字
在Java中,有一些单词被赋予了特定的意义,一共有53个关键字。
这53个单词都是全小写,其中有两个保留字:const和goto。
三、变量与常量
在JAVA中,我们需要记录一些数据,但这些数据的值是不固定的,总在变,
我们可以把这些数据理解为变量。
我们通过三个元素来描述变量:变量类型 变量名以及变量值。
int age = 18; //声明int类型的变量并赋值
String tel ; //声明String类型的变量
在程序运行过程中,值一直不会改变的量成为常量。
练习:输出个人信息
需求: 在控制台打印: java架构师今年20岁,月薪100000.99,感慨java是世界上最好的语言
public class Test1_Info {
//1.创建程序的入口函数
public static void main(String[] args) {
System.out.println("欢迎来到Java世界,可爱的程序猿~");
/**定义变量的规则: 数据类型 变量名 变量值*/
String name = "李逵";
int age = 18;
double salary = 100000.99;
System.out.println("我叫"+name);
/**如果是在中间进行拼接,用 " "+变量+" " 的格式*/
System.out.println("java架构师"+name+"今年"+age+"岁,月薪"+salary+",Java是世界上最好的语言");
}
四、数据类型
基本类型介绍(八种)
标题
字符类型
【1】Java中使用单引号来表示字符常量,字符型在内存中占2个字节。
char
类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占2个字节,可允许有65536个字符。
【2】转义字符:
五、扩展:进制转换问题
1Byte = 8 bits (1字节 = 8 位)
1KB = 1024Bytes 1MB = 1024KB 1GB=1024M
【1】二进制转换为十进制:
二进制: 1101
1*2^3 + 1*2^2 + 0*2^1 + 1*2^0
= 8 + 4 + 0 + 1
= 13
【2】十进制转换为二进制:
十进制 13
【3】八进制转换十进制:
八进制: 16
18^1 + 68^0
= 8 + 6
=14
【4】十进制转换为八进制:
十进制14:
【5】八进制转换为十六进制:
把十进制当做一个中转站:
八进制—》十进制—》十六进制
实际上根本不用自己转换这么麻烦:我们可以直接用系统中提供给我们的计算器:
六、学习Scanner接收键盘输入
import java.util.Scanner;
* 需求:求出指定半径圆的面积
* 公式:圆的面积:π*r*r
public class Test3_CircleArea {
public static void main(String[] args) {
//1.提示用户输入要计算的半径值:
System.out.println("请输入您要计算的半径值:");
//2.定义变量r用来保存半径值
//接收用户输入的半径值
//Scanner使用时需要导包:import java.util.Scanner;
double r = new Scanner(System.in).nextDouble();
//3.根据用户在键盘上输入的半径值计算圆的面积
double circleArea = 3.14*r*r;
//4.打印计算完毕的结果
System.out.println("圆的面积为:"+circleArea);
}
七、变量交换
import java.util.Scanner;
* 需求:接收用户输入的两个值,假设a=2,b=1,并将这两个变量的值进行互换
public class Test4_ValueExchage {
//0.创建入口函数main()
public static void main(String[] args) {
//1.提示并接收用户输入的两个值
System.out.println("请输入a的值:");
int a = new Scanner(System.in).nextInt();
System.out.println("请输入b的值:");
int b = new Scanner(System.in).nextInt();
//2.查看用户输入的原来的值
System.out.println("a的值:"+a);
System.out.println("b的值:"+b);
//3.定义第三个变量用来值交换
int t ;
//t = 1;//把数字1交给变量t保存
t = a;//把变量a中保存的值交给变量t来保存
a = b;//把变量b中保存的值交给变量a来保存
b = t;//把变量t中保存的值交给变量b来保存
//4.把交换后的两个变量的值打印在控制台
System.out.println("交换后,a的值为:"+a);
System.out.println("交换后,b的值为:"+b);
}
基本类型的字面值(5条)
1、整数字面值是int类型(byte1 short2 int4 long8 float4 double8)
int x = 99999;//对,右面数据的字面值是int类型
int x = 99999999999;//错,右面数据的字面值是int类型,但是已经超出int的取值范围。
2、 byte,short,char三种比int小的整数可以用范围内的值直接赋值
byte b1=127;//对,可以用范围内的值直接赋值
byte b2=128;//错,超出byte范围
3、浮点数的字面值是double类型
double r =3.14;//对,小数字面值类型就是double
float r =3.14;//错,右面的数据字面值是double,float是4字节存不下double类型的数据
4、字面值后缀L D F
long x =99999999999L;//字面值是int类型,需转成long类型的数据,加字面值后缀L即可
float b = 3.0F;//3.0字面值是double类型,加后缀F会变成float类型
double d = 3D;//3字面值是int类型,加后缀D,会变成double类型
5、进制前缀
0b - 标识这是2进制 ,如:0b0101
0 - 标识这是8进制, 8进制是三位,如: 023
0x - 标识这是16进制,如: 0x0001
\u -标识这是char类型,属于16进制
基本类型的类型转换
【1】什么是类型转换:
在赋值运算或者算数运算的时候,要求数据类型一致,就要进行类型的转换。
【2】类型转换的种类:
自动转换,强制转换
小到大(隐式转换)
byte m = 120;
int n = m;//小转大,右面的m是小类型,给左面的n大类型赋值,可以直接使用
float f = 3.2f; double d = f; -->可以执行
大到小(显示转换、强制类型转换)
int x = 999;
byte y =(byte)x;//大转小,右面x给左面的y小类型赋值,不可以,需要强制类型转换
容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 转换过程中可能导致溢出或损失精度
例如:int i =128;
byte b = (byte)i; //打印的结果是-128
因为 byte 类型是 8 位,最大值为127,所以当 int 强制转换为 byte 类型时,值 128 时候就会导致溢出。
- 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入
例如:float a = 32.9f;
int b =(int) a; //打印的结果是32
- 不能对boolean类型进行类型转换。
口诀:
小到大,直接转 大到小,强制转 浮变整,小数没
低 ---------------------------------------> 高
byte,short,char—> int —> long—> float —> double
运算规则(5条)
1、计算结果的数据类型,与最大数据类型一致
System.out.println(3/2);//1,int/int,得到的结果类型还是int
System.out.println(3/2d);//1.5,int/double。得到的结果是double
2、 byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a = 1;
byte b = 2;
byte c = (byte)(a+b);
//a+b会自动提升成int类型,右面得运算结果就是int大类型
//给左面的byte小类型赋值,不可以,需要强转。
3 、整数运算溢出
整数运算,类似于一个钟表,转到最大时,再转会回到最小。
计算:光速运行一年的长度是多少米?3亿m/s
//溢出的现象:
//因为做了大的整型数据的运算,会超出int取值范围。解决方法:把整数提升成long类型。
System.out.println(300000000L*60*60*24*365);
4、 浮点数运算不精确
1-0.8 (这是一个现象,后续会学习解决方案)
5、浮点数的特殊值
Infinity 无穷大 3.14/0
NaN not a number 0/0.0 或 0.0/0