Java中的注释
基本注释
以下是必须加的基本注释:
-
类(接口)的注释。
-
构造函数的注释。
-
方法的注释。
-
全局变量的注释。
-
字段/属性的注释。
-
注:简单的代码做简单注释,注释内容不大于10个字即可。另外,持久化对象或VO对象的getter、setter方法不需加注释。
特殊注释
以下是必须加注释的特殊程序代码:
-
典型算法必须有注释。
-
在代码不明晰处必须有注释。
-
在代码修改处加上修改标识的注释。
-
在循环和逻辑分支组成的代码中加注释。
-
为他人提供的接口必须加详细注释。
-
此类注释格式自行定义,要求注释内容准确简洁。
注释格式
-
单行(single—line)注释:
//...
-
块(block)注释:
/*...*/
-
文档(doc)注释:
@author:对类的说明,标明开发该类模块的作者。 @version:对类的说明,标明该类模块的版本。 @see:对类、属性、方法的说明,参考转向,也就是相关主题。 @param:对方法的说明,对方法中某参数的说明。 @return:对方法的说明,对方法返回值的说明。 @exception:对方法的的说明,对方法可能抛出的异常进行说明。
Java的关键字与标识符
关键字
访问权限修饰符的关键字
-
public:公有的。
-
protected:受保护的。
-
private:私有的。
类、接口相关的关键字
-
class:类。用于声明一个类。
-
interface:接口。用于声明一个接口。
-
abstract:抽象。用于声明一个类、方法是抽象的。
-
implements:实现。用于类继承一个接口,A implements B。
-
extends:继承。用于类继承类,A extends B。
-
new:创建新对象。主要用来实例化一个类,即创建一个新的对象。
修饰方法、类、属性和变量的关键字
-
static:静态的。属性和方法都可以用static修饰,直接使用类名、属性和方法名,只有内部类可以使用static关键字进行修饰。
-
final:最终的。属性、方法和类都可以用final来修饰。被final修饰的类是不能被继承的,被final修饰的方法是不能被子类重写的,被final修饰的属性就是常量,也是无法更改的。
-
super:主要用于调用父类的方法。
-
this:主要用于调用当前类中的属性、方法等。
-
native:本地。主要是Java和其他语言(如C++)进行协作时用的,native关键字声明的函数都是操作系统实现的,java只能调用。
-
strictfp:严格。用了strictfp来声明一个 类、接口或者方法时,那么所声明的范围内Java的编译器以及运行环境会完全依照浮点规范IEEE-754来执行。
-
synchronized:线程同步。一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。
-
transient:短暂。让被修饰的成员属性变量不被序列化。
-
volatile:易失。用以声明变量的值可能随时会别的线程修改,使用volatile修饰的变量会强制将修改的值立即写入主存,主存中值的更新会使缓存中的值失效(非volatile变量不具备这样的特性,非volatile变量的值会被缓存,线程A更新了这个值,线程B读取这个变量的值时可能读到的并不是是线程A更新后的值)。volatile会禁止指令重排。
异常和错误相关的关键字
-
try:用于捕获异常,与catch一起使用。
-
catch:用于处理异常。当try的方法块中抛出异常,则catch块开始执行处理异常的操作。
-
finally:无论有无捕获异常都执行。
-
throw:抛出一个异常对象。
-
throws:声明一个异常可能被抛出。把异常交给他的上级管理,自己不进行异常处理。
部分引用于Java基础--Java常用关键字_Wyong9802的博客-CSDN博客
标识符
Java标识符的命名规则
-
Java中的标识符只能使用字母大小写、数字0-9、美元符号$、下划线_
-
Java中的标识符不能使用关键字、保留字、特殊值,例如class、viod、public、static
-
不能使用空格
-
不能以数字开头
-
Java标识符严格区分大小写
Java标识符的命名规范
-
见名知意,让项目组的其他成员一看就知道这个是什么意思。
-
类名、接口名,每一个单词的首字母都要求大写,形式:WwwYyyZzz 例如:HelloWord
-
变量名、方法名,要求从第二个单词开始,首字母大写,其他小写,形式:xxxYyyZzz 例如:nextInt()
-
Java包名要求字母都小写,单词以.隔开,形式:xxx.yyy.zzz 例如:java.io
-
常量名,要求所有字母大写,以_隔开,形式:XXX_YYY_ZZZ 例如:PI(圆周率)、MAX_VALUE(最大值)
Java的数据类型
基本类型 (primitive type)
-
整型
-
字节型(byte)1个字节
-
短整型(short)2个字节
-
整型(int)4个字节
-
长整型(long)8个字节
long num = 30L;//Long数据类型要在数字后面加个L。
-
-
字符型(char)2个字节
字符串类: 字符串用string来表示,但是,string不是关键字它表示一个类。 string name = "郝晓阳";
-
浮点型(float)
-
单精度(float)4个字节
1. float num = 50.1f;//float数据类型要在数字后面加个F。 2. 银行业务怎么表示?数学工具类:BigDecimal 3. float a = 0.1f; double b = 1.0/10; System.out.println(a == b);//false float d1 = 23131312312312313f; float d2 = d1 + 1; System.out.println(d1 == d2);//true /*因为float具有‘有限、离散、舍入误差、大约、接近但不等于’这些特点,导致float数据类型存在一些问题,所以最好完全避免用float类型进行比较*/
-
双精度(double)8个字节
-
-
布尔型(boolean)1位
引用类型 (reference type)
-
类(class)
-
接口(interface)
-
数组
类型转换
-
由于Java是强类型语言所以要进行运算的时候,需要用到类型转换。
/*低--------------------------->高*/ byte,short,char->int->long->float->double
-
运算中,不同类型的数据先转化为同一类型,然后进行运算。
强制类型转换 (由高到低)
-
格式:(类型)变量名
-
public class Demo01 { public static void main(String[] args) { // 操作比较大的数的时候,注意溢出问题 int money = 10_0000_0000; int years = 20; int total1 = money * years;//-1474836480 ,计算的时候溢出了 long total2 = money * years;//-1474836480,先运算在转换,转换之前运算的时候已经溢出 long total3 = (long)money * years;//20000000000,这样就OK了 } }
自动类型转换(由低到高)
注意点
-
不能对布尔值进行转换
-
不能把 对象类型 转换为不相干的类型
-
把高容量转换到低容量时用强制转换
-
转换的时候可能出现内存溢出或者精度问题
变量
-
Java是一种强类型语言,每个变量都必须声明其类型
-
Java变量是程序中最基本的存储单元,其要素包含变量名、变量类型和作用域
变量作用域
类变量
-
其本质就是全局变量(static)
实例变量
//实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null;
String name;
int age;
Demo01 Demo01 = new Demo01(); // 10 /* 变量类型 变量名字 = new Demo08();*/
System.out.println(Demo01.age); // 0
System.out.println(Demo01.name); // null
//实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null;
局部变量
-
局部变量 是在方法里的,必须声明和初始化值,只在所在方法中有效
常量
-
常量(constant):初始化后不能在改变其值。
-
可以理解为特殊的变量。
final 数据类型 常量名 = 常量值
变量的命名规范
-
所有变量名、方法、类名:见名知义。
-
类成员变量:除了第一个单词外,后面的单词首字母大写——驼峰原则。
-
局部变量:除了第一个单词外,后面的单词首字母大写——驼峰原则。
-
常量:大写字母与下划线。
-
类名:除了第一个单词外,后面的单词首字母大写——驼峰原则。
-
方法名:除了第一个单词外,后面的单词首字母大写——驼峰原则。
public class Demo01 { /*在类里可以定义属性,也可以理解为定义变量*/ // 类变量 static(本质就是全局变量) static double salary = 25000; // 类变量 static(本质就是全局变量) //实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null; String name; int age; //实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null; // main方法 public static void main(String[] args) { // 局部变量 是在方法里的,必须声明和初始化值,只在所在方法中有效 int i = 10; System.out.println(i); // 局部变量 是在方法里的,必须声明和初始化值,只在所在方法中有效 //实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null; String name; int age; Demo01 Demo01 = new Demo01(); // 10 /* 变量类型 变量名字 = new Demo08();*/ System.out.println(Demo01.age); // 0 System.out.println(Demo01.name); // null //实例变量:从属于对象,是在类里的,如果不自行初始化,这个类型的默认值 0,0.0,u0000;布尔值:默认为false;除了基本类型其余的默认值都为null; // 类变量 static(本质就是全局变量) System.out.println(salary); // 类变量 static(本质就是全局变量) } // main方法 // 其他方法 public void add(){ } // 其他方法 }
运算符
1.算术运算符:+ - * / % ++ --
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 123123123123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d);// 结果为long类型
System.out.println(b+c+d);// 结果为int类型
System.out.println(c+d);// 结果为int类型
/*如果有一个操作数为long/double类型,则结果为long/double类型;如果没有long/double类型,结果都为int类型;*/
// 幂运算 2^3 2*2*2=8 很多运算,我们会使用一些工具类来操作。
double pow = Math.pow(2,3);
System.out.println(pow);
}
}
2.赋值运算符:= 3.关系运算符:> < >= <= == != instanceof 4.逻辑运算符:&& || !
package operator;
public class Demo03 {
public static void main(String[] args) {
// 与 或 非
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a && b));// a && b:false 逻辑与运算:两个变量都为真,结果才为true
System.out.println("a || b:"+(a || b));// a || b:true 逻辑或运算:两个变量有一个为真,结果就为true
System.out.println("!(a || b):"+!(a || b));// !(a || b):false 逻辑非运算:取反
// 短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4);
System.out.println(d);// false
System.out.println(c);// 5 说明进行到(c<4)这一步时已经短路,不再进行(c++<4)
}
}
5.位运算符:& | ^ ~ >> << >>> (了解即可) A = 0011 1100 B = 0000 1101 ---------------- A & B = 0000 1100(与位运算 AND:如果上下两位都是 1 才为 1 ) A | B = 0011 1101(或位运算 OR:如果对应位都是 0 才为 0 ) A ^ B = 1100 1110(异或位运算 XOR:如果对应位相同则为 1 不同则为 0 ) ~B = 1111 0010(非位运算 NOT:取反) ------------------------------------------------------------------------------------ 0000 0000 0 0000 0001 1 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 ----------------- >> 左移 /2 << 右移 *2 面试题:2*8计算机怎样运算最快? 2 * 8 = 2 * 2 * 2 * 2 = 16 运用右移位运算最快:2 << 3 读作:2左移3位 6.条件运算符:?……: 7.扩展赋值运算符:+= -= /= *=