Java基础语法
一、注释、标识符、关键字
-
注释
注释是给人看的,书写注释是一个非常好的习惯,平时写代码一定要规范。
单行注释:注释一行文字
//
多行注释:注释一段文字
/* */
文档注释
/** */
-
标识符
Java所有组成的部分都需要名字,类名、变量名及方法名都被称为标识符。
-
-
关键字
二、数据类型
1.强类型语言(java)
要求变量的使用严格符合规定,所有的变量都必须先定义后才能使用
2.弱类型语言(js:JavaScript)
3.java数据类型
1.基本类型
基本数据类型(primitive type)
数值类型
整数类型
byte 占一个字节(-127~+127)
short 占两个字节
int 占四个字节
long 占八个字节
浮点类型
float 占四个字节
double 占八个字节
字符类型
char 占2个字节
布尔类型(ture和false)
boolean 占一位
2.引用类型
引用数据类型(reference type)
类、接口、数组
4.浮点数拓展
最好完全使用浮点数(double)进行比较
float是字长是有限的 离散的,存在舍入误差的,是个大约, 它接近但不等于
银行业务使用BigDecimal(数学工具类)
//浮点型数据 //最好完全使用浮点数(double)进行比较 //float是字长是有限的 离散的,存在舍入误差的,是个大约, 它接近但不等于 //========================================== float i5 = 0.1f; //0.1 double i6 = 1.0/10; //0.1 System.out.println(i5==i6); System.out.println(i5); System.out.println(i6); System.out.println("========================================="); float i7 = 122349898786f; double i8 = i7 + 1; System.out.println(i7==i8);
5.字符拓展
所有的字符本质还是数字
运行代码: char a1 = 'a'; char a2 = '中'; System.out.println(a1); System.out.println((int)a1); //强制转换 System.out.println(a2); System.out.println((int)a2); //强制转换 输出结果为: a 97 中 20013
Unicode编码 0-65536(U0000-UFFFF)
2个字节
.xls:65536行
6.转义字符扩展
\t 制表符
\n 换行
7.字符串扩展
运行代码: String b1 = new String("aaa"); String b2 = new String("aaa"); System.out.println(b1==b2); String b3 = "aaa"; String b4 = "aaa"; System.out.println(b3==b4); 运行结果: false ture
8.boolean扩展
boolean flag = true //以下两行是同一句代码 if(flag == true){} if(flag){}
三、类型转换
1.强制类型转换(高->低)
强制转换:(类型)变量名 高-->低 运行代码: int i = 128; byte b = (byte)i; System.out.println(i); System.out.println(b); 运行结果: 128 -128 原因:强制转换,内存溢出
2.自动类型转换(低-->高)
自动转换:低-->高 运行代码: int i = 128; double bo = i; System.out.println(i); System.out.println(bo); 运行结果: 128 128.0
3.注意点
1.不能对布尔值进行转换 2.不能把对象类型转换为不相干的类型 3.在把高容量转换到低容量的时候,需强制转换 4.转换的时候可能存证内存溢出,或者精度问题
精度问题: 运行代码: System.out.println((int)23.7); System.out.println((int)-58.59f); 运行结果: 23 -58
自动类型转换 运行代码: char c = 'a'; int d = c + 1; System.out.println(d); System.out.println((char)d); 运行结果: 98 b
溢出问题:操作比较大的时候,注意溢出问题 运行代码: int money = 10_0000_0000; int years = 20; int total = money*years; System.out.println(total); //-1474836480 计算的时候溢出了 long total2 = money*years; System.out.println(total2); //-1474836480 默认是int,转换之前已经存在问题了 long totla3 = money * ((long)years); //先把一个数转为long System.out.println(totla3); 运行结果: -1474836480 -1474836480 20000000000
4.扩展
JDK新特性:数字之间比较大的时候可以用下划线分割 运行代码: int e = 100_00_00; System.out.println(e); 运行结果: 1000000 代码规范: 数字后面加字母“L”或者字母“l”指的是Long类型,通常来说我们使用“L",因为字母“l”我们经常把他看成是数字1。
四、变量、常量
1.变量
变量是什么? 就是可以变化的量
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
组成结构: 数据类型 变量名 = 值; type name = value; int i = 2; char a = 'X'; double pi = 3.14; //不建议在一行里面定义多个值,这样看起来很麻烦(程序可读性差) 多个值(不建议使用这种方式); type name [=value][{,name[=value]}]; int f,g,h; int f=1,g=2,h=3;
2.注意事项
-
每个变量都有类型,类型可以是基本类型和引用类型。
-
变量名必须是合法的标识符。
-
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
代码 局部变量:必须声明变量和初始化值。 代码: public static void main(String[] args) { double pi = 3.14; System.out.println(pi); } public void test(){ System.out.println(pi); //编译报错 } 结果: 3.14 实例变量:从属于对象。如果不自行初始化,输出这个类型的默认值 null、0、0.0。 //布尔值的默认值是false。除了基本类型,其余的默认值都是null。 运行代码: public class BasicGrammar { String name; int age; public static void main(String[] args) { BasicGrammar basicGrammar = new BasicGrammar(); System.out.println(basicGrammar.age); } } 运行结果: null 0 类变量:关键字:static 运行代码: public class BasicGrammar { static double salary = 2500; //工资 public static void main(String[] args) { System.out.println(salary); } } 运行结果: 2500.0
3.程序可读性
程序可读性:让大多数人一眼就能理解明白程序的思路与用意。
4.常量
常量(Constant):初始化(initialize)以后不能改编的值!不会变动的值。
可以将常量理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变。
关键字:final
final 类型 常量名 = 值; final double salary = 2500; 运行代码: public class BasicGrammar { static final double salary = 2500; //工资 public static void main(String[] args) { System.out.println(salary); } } 运行结果: 2500.0
注意:常量名一般使用大写字符
修饰符不存在先后顺序
5.变量的命名规范
-
所有变量、方法、类名:见名知意。
-
类成员变量:首字母小写和驼峰原则: monthSalary局部变量:首字母小写和驼峰原则。
-
常量:大写字母和下划线:MAX_VALUE。
-
类名:首字母大写和驼峰原则: Man, GoodMan方法名:首字母小写和驼峰原则: run(), runRun)。
-
方法名:首字母小写和驼峰原则: run(), runRun)。
便于阅读
五、运算符 优先级()
1.算数运算符
算术运算符:+,-,*,l,%,++,--
算数运算符: 运行代码: public class operator { public static void main(String[] args) { System.out.println("===================二元运算符======================"); //Ctrl + D : 复制当前行到下一行 int a = 10; int b = 20; System.out.println(a+b); System.out.println(a-b); System.out.println(a*b); System.out.println(a/b); //内存溢出 long c = 5848524L; int d = 123; short e = 10; byte f = 8; System.out.println(c+d+e+f); System.out.println(d+e+f); System.out.println(e+f); //++ -- System.out.println(a++); System.out.println(++a); System.out.println(a--); System.out.println(--a); } } 运行结果: //+ - * /: 30 -10 200 0 //不同类型相加: 5848665 141 18 //++ --: 10 12 12 10
2.赋值运算符
赋值运算符:=
3.关系运算符
关系运算符:>,<,>=,<=,==,!=, instanceof
关系运算符:返回值为布尔值:true false 运行代码: public class operator { public static void main(String[] args) { int a = 10; int b = 20; //返回值为布尔值:true false System.out.println(a>b); System.out.println(a<b); System.out.println(a==b); System.out.println(a!=b); } } 运行结果: false true false true
4.逻辑运算符
逻辑运算符:&&,||,!
逻辑运算符:与(&&):and,或(||):or,非(!):取反 运行代码: boolean x = true; boolean y = false; //逻辑与运算:两个变量都为真,结果才为true System.out.println("x && y : "+(x && y)); //逻辑与运算:一个变量为真,结果为true System.out.println("x || y : "+(x || y)); //逻辑与运算:如果为真,取反为假。如果是假,取反为真 System.out.println("!(x && y) : "+!(x && y)); 运行结果: x && y : false x || y : true !(x && y) : true 短路运算:第一个为假,则为假 运行代码: int z = 5; System.out.println((z<4) && (++z<10)); System.out.println(z); 运行结果: false 5
5.位运算符
位运算符(效率极高):&,|,^,~,>>,<<,>>>(了解! ! ! )
介绍: A = 0011 1100 B = 0000 1101 A&B = 0000 1100 //如果都是1,为1,否则为0 A|B = 0011 1101 //如果都是0,为0,否则为1 A^B = 0011 0001 //如果都相同,为0,否则为1 ~B = 1111 0010 //取反 2 * 8 = 16 2*2*2*2 效率极高! <<: *2 >>: /2 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 运行代码: System.out.println(2<<3); 运行结果: 16
6. 条件运算符
条件运算符:?
条件运算符:也叫三元运算符 结构 :x ? y : z 如果x == true ,结果为y,否则为z。 score : 成绩 运行代码: int score = 60; String type = score < 60 ? "不及格" : "及格"; System.out.println(type); 运行结果: 及格
7.扩展赋值运算符
扩展赋值运算符:+=,-=,*=,/=
运行代码: int a = 10; int b = 20; System.out.println(a+=b); System.out.println(""+a+b); System.out.println(a+b+""); 运行结果: 10 1020 30
六、包机制
包的本质就是文件夹
-
为了更好的组织类,java提供了包机制,用于区别类名的命名空间。
-
包机制的语法格式为:
package pkg1[.pkg2[.[pkg3]]]
-
一般利用公司域名倒置作为包名。 例如:www.baidu.com 包名为:www.baidu.com
-
为了能够使用某一个包的成员,我们需要在java程序中明确导入该包,使用“import”语句可以完成此功能。
import package1[package2...].(classname|*);
七.JavaDoc
javadoc命令式用来生产自己aPI文档的。
参数信息:
@author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws 异常抛出情况 DOS命令行生成javaDoc文档: javadoc -encoding UTF-8 -charset UTF-8 Doc.java idea生成javaDoc文档: Tools-->Generate JavaDoc-->如下图配置