03.java基础语法
基础语法
1.单行注释://+注释内容
2.多行注释:/* 注释内容*/
3.文档注释:/** 注释 */

-
所有的标识符都应以字母,美元符($)、或者下划线开始(__)
-
首字符之后可以是字母,美元符,下划线或数字的任意字符组合。
-
不能使用关键字作为变量名或方法名。
-
标识符是大小写敏感的。
-
可以使用中文命名,但一般不建议这样使用
-
数据类型
-
强类型语言
- 要求变量的使用要严格符合规定,所有的变量必须先定义后才能使用
-
弱类型语言
-
java的数据类型分为两大类
- 基本类型
- 引用类型

byte是JAVA中最小的数据类型,它在内存中占(1个字节)8位(8个bit),取值范围从-128到127
赋值:byte I = 127
short 短整型
short类型在内存中占2个字节,取值范围从 -32768到32767
赋值:short i = 32767;char 字符型
char类型在内存中占2个字节。表示一个字符,也可以使用ASCII码范围内的值来给char型的变量赋值。由于字符在内存中的取值不存在负数范围,所有取值范围从 0 到 65535
赋值:char i = ‘a’; 或者 char i = 97;int 整型
int型在内存中占4个字节。取值范围从 -2147483648 到 2147483647
赋值:int i = 10;
float 单精度浮点型
float型在内存中占4个字节。取值范围从 -3.4E38 到 3.4E38
赋值:float i = 1.0F;
long 长整型
long型在内存中占8个字节。取值范围从 -9223372036854775808 到 9223372036854775807赋值:long i = 123L;
double 双精度浮点型
double 型在内存中占8个字节。取值范围从 -1.7E308 到 1.7E308赋值:double i = 213.31232;
boolean 布尔型 只占1位
boolean类型只有两个值:true和false。 -
-
什么是字节?
-
位(bit):是计算及内部数据存储的最小单位,11001100是一个八位二进制数。
-
字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B表示,1B(byte,字节)=8bit(位)
-
字符:是计算机中使用的字母,数字,字和符号
1KB=1024B
1M=1024KB
1G=1024M
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RF6Kc2hY-1626159102088)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712133036605.png)]
-
最好避免浮点数比较(会产生误差)
-
所有的字符本质上还是数字
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h2zSM70t-1626159102095)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712173407707.png)]
-
类型转换
-
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xjQVTSDs-1626159102101)(C:\Users\LXK\AppData\Roaming\Typora\typora-user-images\image-20210712174503774.png)]
-
运算中,不同类型的数据先转化为同一类型的数据,然后进行运算
-
public class test1 { public static void main(String[] args) { int a = 128; //强制转换 格式:(类型)变量名 条件 :由高到低 byte b = (byte)a;//内存溢出 //自动转换 条件 :低到高 double c = a; System.out.println(a); System.out.println(b); System.out.println(c); } } -
注意点:
-
不能对布尔值进行转换
-
不能把对象类型转换为不相干的类型
-
再把高容量转到低容量的时候,强制转换
-
转换的时候可能存在内存溢出,或者精度问题!(浮点型到整型)
-
操作比较大的数时,注意溢出问题
public class test2 { public static void main(String[] args) { int money = 1000000000; int years = 20; int total1 = money*years;//溢出 long total2 = money*years;//默认是int,转换前已经出现问题 long total3 = money*((long)years);//先把一个数转换成long类型 System.out.println(total2); System.out.println(total1); System.out.println(total3); } }
变量
-
java是一种强类型语言,每个变量都必须声明其类型
-
java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
-
注意
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量必须是合法的标识符
- 变量声明是一条完整的语句,因此每个声明都必须以分号结束
-
public class test3 { public static void main(String[] args) { //int a,b,c;程序可读性 //int a=1,b=2,c=3;不建议这样写。 String name = "lxk"; char c = 'a'; double pi = 3.14; } } -
变量作用域
-
类变量
-
实例变量
-
局部变量
-
public class Test4 { //实例变量 boolean lxk; int age; String name; //类变量 static static double salary = 2500; //main方法 public static void main(String[] args) { //局部变量;必须声明和初始化值 int i = 10; System.out.println(i); //变量类型 变量名字 = new test4() Test4 test4 = new Test4(); System.out.println(test4.age); System.out.println(test4.name); System.out.println(test4.lxk); //类变量 static System.out.println(salary); } /* * 实例变量:从属对象;如果不进行初始化,这个类型的默认值为:0,0.0 * 布尔值:默认是false * 除了基本类型,其余默认值都是null * */ //其他方法 public void add(){ } }
-
-
-
变量的命名规范
-
所有的变量、方法、类名:见名知意
-
类成员变量:首字母小写和驼峰原则(除了第一个单词外,后面的单词首字母大写):monthSalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线:MAX_VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
-
-
常量
-
常量(constant):初始化(initialize)后不能再改变值!不会变动的值
-
所谓常量可以理解为特殊的变量,它的值被设定后,在程序运行过程中不允许在改变。
-
final 常量名 = 值; final double PI = 3.14; -
常量名一般用大写字符。
-
public class Test5 { //final为修饰符,不存在先后顺序 final static double PI = 3.14; public static void main(String[] args) { System.out.println(PI); } }
-
-
运算符
-
java语言支持如下运算符:
- 算术运算符:+,-,*,/,%(求余),++,–
- 赋值运算符=
- 关系运算符:>,<,>=,<=,==,!=,instanceof
- 逻辑运算符:&&(与),||(或),!(非)
- 位运算符:&,|,^,~,>>,<<,>>>(了解)
- 条件运算符?,:
- 扩展赋值运算符:+=,-=,*=,/=
-
package java_base_operator; public class Test1 { public static void main(String[] args) { // 二元运算符 // 快捷键Ctrl+D:复制当前行到下一行 int a=10; int b=20; int c=25; int d=25; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(c%b);//取余 System.out.println((double)a/b); System.out.println("================"); long e = 123123123123123L; int f = 123; short g = 10; byte h = 8; /*因为低级向高级不需要强制转换,而高级到低级则相反,所以结果类型为最高级别类型*/ System.out.println(e+f+g+h);//结果为Long类型 System.out.println(f+g+h);//结果为int 类型 System.out.println(g+h);//结果为 int类型 System.out.println("============"); int j = 10; int k = 20; //关系运算符,返回结果为布尔值:true/false System.out.println(j>k);//输出false System.out.println(j<k);//输出true System.out.println(j==k);//输出false System.out.println(j!=k);//输出true } }-
自增和自减
-
package java_base_operator; public class Test2 { public static void main(String[] args) { // ++(自增),--(自减),一元运算符 int a = 3; int b = a++; // 执行完这段代码后,先给b赋值,在自增 //a = a + 1; System.out.println(a); //a = a + 1 int c = ++a;// 执行这段代码前,先自增,再给b赋值 System.out.println(a);//结果为:5 System.out.println(b);//结果为:3 System.out.println(c);//结果为:5 //拓展:幂运算 2^3 = 2*2*2 = 8 很多运算,我们会使用一些工具类来操作! double pow = Math.pow(2,3); System.out.println(pow);//结果为8.0 } }
-
-
-
-
逻辑运算符
-
package java_base_operator; // 逻 辑 运 算 符 public class Text3 { public static void main(String[] args) { boolean a = true; boolean b = false; /* a&&b :逻辑与运算,当两个变量都为真时结果才为true * a||b :逻辑或运算,当两个变量有一个为真时,结果为true * !a , !b, 逻辑非运算,取反。 */ System.out.println("a&&b:"+(a&&b));// 输出结果为:a&&b:false System.out.println("a||b"+(a||b));// 输出结果为:a||b:true System.out.println("!(a&&b):"+!(a&&b));// 输出结果为:!(a&&b):true // 短 路 运 算 int c = 4; int d = 5; int e = 6; /* 在进行&&(与)运算时,当前一部分为假时,直接跳出此语句,后一部分不在执行 */ System.out.println((c>d)&&(c++>d));//输出结果为false System.out.println((d<e)&&(d++==e));//输出结果为false System.out.println(c);// 数结果为 4 System.out.println(d);// 输出结果为 6 } }
-
-
位运算符
-
package java_base_operator; // 位 运 算 (效率高(二进制层面)) public class Test4 { public static void main(String[] args) { /* A = 0011 1100 B = 0000 1101 ------------------------------------------ A&B = 0000 1100 (与) A|B = 0011 1101 (或) A^B = 0011 0001 (异或) ~A = 1100 0011 (非) ~B = 1111 0010 (非) eg: 2*8 = 16 2*2*2*2 << (左移) *2 >> (右移) /2 分析: 对于二进制: 0000 0000 0 0000 0001 1 0000 0010 2 ... 0000 0100 4 ... 0000 1000 8 ... 0001 0000 16 */ System.out.println(3<<2); // 结果为(3*2*2)= 12 System.out.println(2<<3); // 结果为(2*2*2*2)= 16 System.out.println(16>>3); // 结果为 (16/2/2/2)= 2 } }
-
-
条件运算符
-
拓展赋值运算符
-
package java_base_operator; public class Test5 { public static void main(String[] args) { int a = 10; int b = 20; a+=b; // a = a + b System.out.println(a);//输出结果为30 a-=b; // a = a - b System.out.println(a); //输出结果为10 /* 字符串连接符 + 如果字符串出现在前面,则后面的自动拼接(默认为字符串拼接) 相反如果字符串在后面,则进行运算 */ System.out.println(""+a+b); //输出结果为1020 System.out.println(a+b+""); // 输出结果为30 } }
-
-
三元运算符
-
package java_base_operator; // 三 元 运 算 符 public class Test6 { public static void main(String[] args) { /* X ? Y : Z 如果x==true,则结果为y,否则结果为z */ int score = 50; String type = score <60 ? "不及格" : "及格"; System.out.println(type); } }
-
-
运算符优先级
-
[点此查询]: http://c.biancheng.net/view/794.html ““运算符优先级””
package java_base_operator;
// 三 元 运 算 符
public class Test6 {
public static void main(String[] args) {
/* X ? Y : Z
如果x==true,则结果为y,否则结果为z
*/
int score = 50;
String type = score <60 ? "不及格" : "及格";
System.out.println(type);
}
}
```
-
运算符优先级

浙公网安备 33010602011771号