目录
一、注释
注释不会被程序执行,书写注释是一个非常重要的习惯
单行注释:// 文本
eg : //123456789
多行注释:/* 文本 */
eg : /* 123456789
123456789
123456789 */
二、标识符
关键字
Java 语言目前定义了 51 个关键字,这些关键字不能作为变量名、类名和方法名来使用。以下对这些关键字进行了分类。
-
数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
-
流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
-
修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
-
动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
- 保留字:true、false、null、goto、const。
注意:由于 Java 区分大小写,因此 public 是关键字,而 Public 则不是关键字。但是为了程序的清晰及可读性,要尽量避免使用关键字的其他形式来命名。
标识符注意点
-
所有的标识符都应该以字母(A-Z或者a-z),美元符($),或者下划线(_)开始
-
首字符之后可以是字母(A-Z或者a-z),美元符($),或者下划线(_)或数字的任何数字组合
-
不能使用关键字作为变量名或者方法名
-
标识符是大小写敏感的
-
不建议使用中文拼音去命名
三、数据类型
Java要求变量的使用要严格符合规定,所有变量必须要先定义才能使用
Java中主要有八种基本的数据类型:
数据类型扩展
1.整数扩展
二进制:0b 八进制:0 十六进制:0x
示例:
int i1=10;
int i2=010;
int i3=0x10;
System.out.println(i1);//十进制10
System.out.println(i2);//八进制8
System.out.println(i3);//十六进制16
2.字符扩展
char a='袁';
char b='a';
//所有的字符本质还是数字
System.out.println(a);
System.out.println((int)a);//强制转换
System.out.println(b);
System.out.println((int)b);//强制转换
//Unicode编码 最多可以表示65536个字符
char c='\u0063';// \u是转义字符,将Unicode编码0063转义为a
System.out.println(c);//输出的结果是a
3.转义字符
转义字符 | 意义 | ASCII码值(十进制) |
---|---|---|
\a | 响铃(BEL) | 007 |
\b | 退格(BS) ,将当前位置移到前一列 | 008 |
\f | 换页(FF),将当前位置移到下页开头 | 012 |
\n | 换行(LF) ,将当前位置移到下一行开头 | 010 |
\r | 回车(CR) ,将当前位置移到本行开头 | 013 |
\t | 水平制表(HT) (跳到下一个TAB位置) | 009 |
\v | 垂直制表(VT) | 011 |
\ | 代表一个反斜线字符''' | 092 |
' | 代表一个单引号(撇号)字符 | 039 |
" | 代表一个双引号字符 | 034 |
\0 | 空字符(NULL) | 000 |
\ddd | 1到3位八进制数所代表的任意字符 | 三位八进制 |
\xhh | 1到2位十六进制所代表的任意字符 | 二位十六进制 |
4.布尔值扩展
boolean flag=true;
if(flag==true){}
if(flag){}//两者等价
//代码越精简越好,代码要精简易读
四、类型转换
低------------------------------------------------------------------->高
byte,short,char --> int --> long --> float --> double
强制类型转换:高-->低,格式:(类型)变量名
隐式转换:低-->高,可直接转换,不需要另外操作
示例:
int i=100;
char a=(char)i;//int->char,高->低,需要强制类型转换
System.out.println(a);
double b=i;//int->double,低->高,不需要强制类型转换
System.out.println(b);
/*
注意点:
1.不能对布尔值进行强制类型转换
2.不能把对象类型转换为不相干的类型
3.把高容量转换为低容量,需要强制类型转换
4.转换的时候可能存在内存溢出或者精度问题
*/
System.out.println((int)23.7);//输出的结果为23,丢失了一定的精度
五、变量和常量
1.变量
变量就是可以变化的量。
Java是一种强类型语言,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,其要素包括变量名、变量类型和作用域。
2.变量作用域
-
类变量
-
实例变量
-
局部变量
public class Yyf{
String name;
int age;//实例变量:从属于对象,如果不初始化值,默认值为0(整数)或者0.0(小数)
//布尔值默认是false,字符类型默认是null
//除了基本类型,其它的默认值都是null
static int a=100;//类变量 static
public static void main(String[] args){
int i=10;//局部变量:必须声明和初始化值
System.out.println(i);
Yyf yyf=new Yyf();
System.out.println(yyf.name);
System.out.println(yyf.age);//实例变量的使用
System.out.println(a);//类变量的使用,可以直接输出
}
}
3.常量
常量:初始化之后不会再改变的值。
final 常量名=值;
final double PI=3.14;
常量名一般使用大写字母
public class Yyf{
static final int a=100;
final static int b=100;//修饰符,不存在先后顺序
public static void main(String[] args){
System.out.println(a);
System.out.println(b);
}
4.变量的命名规范
-
所有变量、方法、类名:见名知意
-
类成员变量:首字母小写和和驼峰原则,例如:moneySalary
-
局部变量:首字母小写和驼峰原则
-
常量:大写字母和下划线,例如:MAX__VALUE
-
类名:首字母大写和驼峰原则:Man,GoodMan
-
方法名:首字母小写和驼峰原则:run(),runRun()
六、基本运算符
Java中的运算符可以分为以下几种:
-
算术运算符
-
赋值运算符
-
关系运算符
-
逻辑运算符
-
条件运算符
1.算术运算符
假设,整数变量A的值为10,变量B的值为20:
操作符 | 描述 | 例子 |
---|---|---|
+ | 加法 - 相加运算符两侧的值 | A + B等于30 |
- | 减法 - 左操作数减去右操作数 | A – B等于-10 |
* | 乘法 - 相乘操作符两侧的值 | A * B等于200 |
/ | 除法 - 左操作数除以右操作数 | B / A等于2 |
% | 取模 - 右操作数除左操作数的余数 | B%A等于0 |
+ + | 自增 - 操作数的值增加1 | B + +等于21 |
- | 自减 - 操作数的值减少1 | B - -等于19 |
注意:其中,++ 和 -- 既可以出现在操作数的左边,也可以出现在右边,但结果是不同的
a++:先操作,再自增
++a:先自增,再操作
示例:
public class Demo01 {
public static void main(String[] args) {
int a = 3;
int b = (++a) + (a++) + (a*10);
System.out.println(a);//输出结果为a=5
System.out.println(b);//输出结果为b=58
}
}
自增和自减运算符只能用于操作变量,不能直接用于操作数值或常量!例如 5++ 、 8-- 等写法都是错误的。
2.赋值运算符
下面是Java语言支持的赋值运算符:
操作符 | 描述 | 例子 |
---|---|---|
= | 简单的赋值运算符,将右操作数的值赋给左侧操作数 | C = A + B A + B得到的值赋值给C |
+= | 加和赋值操作符,左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
-= | 减和赋值操作符,左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
*= | 乘和赋值操作符,左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/= | 除和赋值操作符,左操作数和右操作数相除赋值给左操作数 | C / = A等价于C = C / A |
%= | 取模和赋值操作符,左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<<= | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>>= | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^= | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
|= | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
注意:扩展赋值运算符,内部自带强制类型转换
public class Demo02 {
public static void main(String[] args) {
short s = 1;
s += 1;//s = (short)(s + 1);
System.out.println(s);//s = 2;
//s = s + 1是错误的,s为short类型,s+1会向范围大的类型转换为int
double a = 12.3;
int b = 2;
b += a;//b =(int)(b + a);
System.out.println(b);//b = 14;
}
}
3.关系运算符
下面是Java支持的关系运算符,假设,整数变量A的值为10,变量B的值为20,则:
操作符 | 描述 | 例子 |
---|---|---|
== | 检查如果两个操作数的值是否相等,如果相等则条件为真 | (A == B)非真 |
!= | 检查如果两个操作数的值是否相等,如果值不相等则条件为真 | (A = B)为真 |
> | 检查左操作数的值是否大于右操作数的值,如果是那么条件为真 | (A> B)非真 |
< | 检查左操作数的值是否小于右操作数的值,如果是那么条件为真 | (A <B)为真 |
>= | 检查左操作数的值是否大于或等于右操作数的值,如果是那么条件为真 | (A> = B)非真 |
<= | 检查左操作数的值是否小于或等于右操作数的值,如果是那么条件为真 | (A <= B)为真 |
注意:
1、 > 、 < 、 >= 、 <= 只支持左右两边操作数是数值类型。
2、 == 、 != 两边的操作数既可以是数值类型,也可以是引用类型。
4.逻辑运算符
操作符 | 描述 | 说明 |
---|---|---|
& | 逻辑与 | 并且,遇 false 则 false |
| | 逻辑或 | 或者,遇 true 则 true |
! | 逻辑非 | 取反 |
^ | 逻辑异或 | 相同为 false,不同为 true |
除此以外,Java中还存在短路逻辑运算符:
示例:
public class Demo03 {
public static void main(String[] args) {
int x = 3;
int y = 4;
boolean result1 = ++x > 5 & y-- < 4;
System.out.println(x);
System.out.println(y);//不具有短路效果,&符号右边仍要继续执行
System.out.println(result1);
//此时 x = 4,y = 3
boolean result2 = ++x > 5 && y-- < 4;
System.out.println(x);
System.out.println(y);//具有短路效果,&&符号右边不需要继续执行,y的值仍为3
System.out.println(result2);
}
}
运行结果为:
4
3
false
5
3
false
5.条件运算符
条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。该运算符的主要作用是决定哪个值应该赋值给变量。
格式:判断条件 ?值1 :值2
执行流程:首先计算判断条件的值,如果值为true,值1就是运算结果,如果值为false,值2就是运算结果
示例:
public class Yyf {
public static void main(String args[]){
int a , b;
a = 10;
b = (a == 1) ? 20: 30;
System.out.println( "Value of b is : " + b );
b = (a == 10) ? 20: 30;
System.out.println( "Value of b is : " + b );
}
}
运行结果为:
Value of b is : 30
Value of b is : 20
6.instanceOf 运算符:
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。instanceof运算符使用格式如下:
( Object reference variable ) instanceOf (class/interface type)
如果运算符左侧变量所指的对象,是操作符右侧类或接口(class/interface)的一个对象,那么结果为真。 下面是一个例子:
String name = = 'James';boolean result = name instanceOf String; // 由于name是Strine类型,所以返回真
如果被比较的对象兼容于右侧类型,该运算符仍然返回true。 看下面的例子:
class Vehicle {}
public class Car extends Vehicle {
public static void main(String args[]){
Vehicle a = new Car();
boolean result = a instanceof Car;
System.out.println( result);
}
}
结果为true
7.Java运算符的优先级
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部:
类别 | 操作符 | 关联性 |
---|---|---|
后缀 | () [] . (点操作符) | 左到右 |
一元 | + + - !? | 从右到左 |
乘性 | * /% | 左到右 |
加性 | + - | 左到右 |
移位 | >> >>> << | 左到右 |
关系 | >> = << = | 左到右 |
相等 | == != | 左到右 |
按位与 | & | 左到右 |
按位异或 | ^ | 左到右 |
按位或 | | | 左到右 |
逻辑与 | && | 左到右 |
逻辑或 | | | | 左到右 |
条件 | ?: | 从右到左 |
赋值 | = + = - = * = / =%= >> = << =&= ^ = | = | 从右到左 |
逗号 | , | 左到右 |
七、包机制
为了更好的组织类,Java提供了包机制,用于区别类名的命名空间。
包语句的语法格式为:package pkg1.[.pkg2[.pkg3...]];
一般利用公司域名倒置作为包名
为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用"import"语句可以完成此功能:import package1[.package2...].(classname|*);
八、JavaDoc生成文档
javadoc命令是用来生成自己API文档的
参数信息:
-
@author 作者名
-
@version 版本号
-
@since 指明需要使用的最早的jdk版本
-
@param 参数名
-
@return 返回值情况
-
@throws 异常抛出情况