2.1 相关基础
Java所有的组成部分都需要名字。
类名、变量名以及方法名都被称为标识符。
标识符命名规则:
1、由字母、数字、下划线、$组成,不能以数字开头。
2、注意大小写敏感。即hello和Hello是不一样的。
3、不得使用java中的关键字和保留字。
标准的变量命名示例:
int localAreaCode
优秀的标识符命名习惯:
1、标识符要符合语义信息。
2、包名
:所有字母小写。
3、类名
:每个单词首字母大写,其它小写,如:TarenaStudent
4、变量和方法
:第一个单词小写,从第二个单词开始首字母大写,如:tarenaStudent
5、常量
:所有字母大写,每个单词之间用下划线"_"连接。如:final int ESCAPE_CODE = 27;
常量即程序运行过程中一直不变的值。声明常量在变量声明前加上关键字final,并指定初始值。
对于局部变量,在程序使用它之前(声明的时候是不赋值的),必须给它赋值,否则编译错误:
信息类型 变量名; //如:int length; 这是声明
信息类型 变量名1,变量名2; //如:String country,city,home;
信息类型 变量名=值; //如:int box = 345; 这是使用
类所属的包是使用package语句指定的,这种语句必须位于类的最前面:
package com.long.java //导入包示例
Java代码运行结果输出:
System.out.println("hahaha") //注意是printLn,易混淆字母大写可见
System.out.print("hahaha") //print为在一行输出,不管有多少个print
Java代码注意点:
1、以双斜杠的单行注释://
2、多行注释:/*---------这是注释---------*/
3、Java语句都以英文;
结尾
2.2 Java基本数据类型
1、基本数据类型一览表
类型名称 | 字节空间 | 其他说明 | 使用场景 |
---|---|---|---|
byte | 1字节(8位) | 范围:-2^7 ~ 2^7-1 | 存储字节数据(较常用) |
short | 2字节(16位) | 范围:-2^15 ~ 2^15-1 | 兼容性考虑(很少使用) |
int | 4字节(32位) | 范围:-2^31 ~ 2^31-1 | 存储普通整数(常用)(整数默认) |
long | 8字节(64位) | 范围:-2^63 ~ 2^63-1 | 存储长整数(常用) |
float | 4字节(32位) | \ | 存储单精度浮点数(不常用) |
double | 8字节(64位) | 存在舍入误差 | 存储双精度浮点数(常用)(浮点默认) |
char | 2字节(16位) | 单一的16位unicode字符 | 存储一个字符(常用) |
boolean | 1字节(8位) | 默认值是false | 存储逻辑变量(true/false)(常用) |
2、整数相除舍弃小数
int c = 5/3;
System.out.println(c); //c的值为1
3、整数过大溢出
int a = 2147483647;
int b = -2147483648;
a = a + 1;
b = b - 1;
System.out.println("a=" + a); //输出结果:a=-2147483648,溢出,过大突变为负数
System.out.println("b=" + b); //输出结果:b=2147483647。溢出,过小突变为正数
4、表示长整型要以L结尾
long a = 10000000000000L; //不加L程序会默认为int型,从而报错
5、长整型数运算
long a = 10000*365*24*60*60*299792458L; //必须有一个long型数参与运算的结果才是long型
System.out.println("a=" + a); //a=18762816316238618726381,结果正确
long b = 10000*365*24*60*60*299792458; //没有一个long型数据参与运算,程序默认int型
System.out.println("b=" + b); //b=-187628163,结果错误,溢出了
6、长整型获取时间
long time = System.currentTimeMillis();
System.out.println(time); //返回1970年1月1日0点到此时此刻的毫秒数,为long型
7、双精度浮点数运算
double pi = 3.14;
double r = 8;
double s = pi*r*r;
System.out.println("s=" + s); //输出结果为s=200.96
8、double类型的两种写法
3.14、0.236 //常规写法
1.25E2、1.25E-2 //科学记数法。1.25E2表示1.25乘以10的2次方
9、布尔型程序
int age = 18;
boolean ischild = age<16; //条件不成立,返回false
System.out.println(ischild); //输出false
boolean running = true; //布尔型赋值,只能赋予true或者false
boolean closed = false;
10、字符型程序
可以装入unicode字符编码集中的任何字符,字符直接量放在单引号之中。
只能一个字符一个字符的表示。
例'abcde'
是错误的,必须是'a'
,'b'
,'c'
,'d'
,'e'
char c1 = '中'; //c1中存的是[中]的unicode编码,Java字符类型采用unicode字符集编码
char c2 = '\u4e2d'; //char类型可以装入unicode集中的任何一个字符
System.out.println(c1); //输出汉字[中]
System.out.println(c2); //输出汉字[中]
常见转义字符
转移字符 | 含义 |
---|---|
\n | 表示回车符 |
\r | 表示换行符 |
\\ | 表示反斜杠:\ |
\’ | 表示单引号:’ |
\" | 表示双引号:" |
\f | 表示换页符 |
\b | 表示退格符 |
\0 | 表示空字符 |
\s | 表示字符串 |
\t | 表示制表符 |
11、常量修饰和变量修饰
final double PI=3.14159; //常量需要使用final修饰。通常使用大写字母使用常量
"hello world hahaha" //字符串常量包含在两个引号之间
char a='A'; //变量需要使用变量数据类型来修饰
12、基本类型之间的转换
自动类型转换:从小类型到大类型可以自动完成
byte --> short --> int --> long --> float --> double
-------- char ---> int //各种基本类型参与的运算中,运算结果会自动向大的类型转换
强制类型转换:从大类型到小类型需要强制转换符
需要转换成的类型 变量 //注意:那个小括号必须有。可能会造成精度损失或溢出
示例代码
char c1='a'; //定义一个char类型
int i1 = c1; //char自动类型转换为int
System.out.println("char转换为int后"+i1); //输出结果为:97
char c2 = 'A'; //定义一个char类型
int i2 = c2+1; //char 类型和 int 类型计算
System.out.println("char和int计算后"+i2); //输出结果为:66
2.3 表达式和运算符
1、Java算术运算符及衍生
运算符 | 表达式 | 计算 | 结果(假定x=10) |
---|---|---|---|
+、-、*、/、% | 加、减、乘、除、取余 | \ | \ |
+= | x += 5 | x = x + 5 | 15 |
-= | x -= 5 | x = x - 5 | 5 |
*= | x *= 5 | x = x * 5 | 50 |
/= | x /= 5 | x = x / 5 | 2 |
%= | x %= 5 | x = x % 5 | 0 |
<<=(左移位赋值) | x <<= 5 | x = x << 5 | 320 |
>>=(右移位赋值) | x >>= 5 | x = x >> 5 | 10 |
&=(按位与赋值) | x &= 5 | x = x & 5 | 0 |
^=(按位异或赋值) | x ^= 5 | x = x ^ 5 | 5 |
|=(按位或赋值) | x |= 5 | x = x | 5 | 5 |
2、自加和自减运算:++、–
num++; //相当于:num=num+1。++在后,先取值再增1
num--; //相当于:num=num-1
++num; //++在前,先增1再取值
----------------------------------------------------------------
int num = 5;
System.out.println(num++); //先取值再增1。输出结果:5
System.out.println(num); //已经自增完毕,此处输出:6
int num2 = 5;
System.out.println(++num2); //先增1再取值。输出结果:6
System.out.println(num2); //已经自增完毕,此处输出:6
3、Java关系运算符
大于(>)、小于(<)、大于等于(>=)、小于等于(<=)、等于(==)、不等于(!=)
关系运算符的结果均为布尔类型,关系成立返回true,关系不成立返回false
"=="比较的是地址、“equals”比较的是内容
-----------------------------------------------------------------------
int max = 10;
boolean b1 = max > 15;
System.out.println(b1); //输出结果为false
4、Java逻辑运算符
与(&&)、或(||)、非(!)
逻辑运算的变量或表达式都是boolean类型,运算结果也为boolean类型
--------------------------------------------------------------
int score = 80;
boolean b = score >= 60 && score < 90;
System.out.println(b); //输出结果为true
逻辑短路:
对于&&
来说,当第一个操作数为false时,将不再对后面的操作数进行计算处理。
对于||
来说,当第一个操作数为true时,将不再对后面的操作数进行计算处理。后面的代码得不到执行,将有可能影响之后的代码运算结果。
5、Java赋值运算符
赋值(=)
--------------------------------------------------------------------
int a,b,c;
a = b = c = 100; //a,b,c都是100
int a=1,b=2,c=3; //也可以这样书写。注意要先声明变量类型
6、字符串连接运算符
字符串连接(+)
两边都为数字做加法,若一边有字符则做字符串拼接。注意从左向右的先后顺序
-------------------------------------------------------------------------
int a = 100;
String msg = "a=" + a;
System.out.println(msg); //输出:a=100
msg = "" + 100 + 200;
System.out.println(msg); //输出结果为:100200
msg = 100 + 200 + "";
System.out.println(msg); //结果为:300
7、字符串长度
String site = "hello"; //字符串是双引号括起来的一系列字符
int len = site.length(); //Java使用length方法来返回字符串对象包含的字符数
System.out.println( "hello长度 : " + len ); //输出结果为5
8、Java Math类
Java的Math包含了基本数学运算的属性和方法,如初等指数、对数、平方根和三角函数。
System.out.println("90 度的正弦值:" + Math.sin(Math.PI/2));
System.out.println("0度的余弦值:" + Math.cos(0));
System.out.println("60度的正切值:" + Math.tan(Math.PI/3));
System.out.println("1的反正切值: " + Math.atan(1));
System.out.println("π/2的角度值:" + Math.toDegrees(Math.PI/2));
System.out.println("圆周率:" + Math.PI);
2.4 下断点调试
1、此时不能直接点run运行,而是点击debug运行,之后再F8单步运行。
2、下断点在于看清楚内存的变化,否则一闪而过什么都看不到。例如循环时,可以看到一个数一个数的变化,看清运行过程细节,发现过程中途的敏感数据。