java中有三种注释方式,单行注释,多行注释,文档注释。
1.单行注释
快捷键Ctrl+/再次按撤销注释,常用于注释局部变量,代码中的解释性注释,提高代码的可读性。代码中的单行注释,描述功能,解释代码作用。
2. 多行注释:Ctrl+shift+/ 撤销Ctrl+shift+\
可用来注释文件头、算法实现、方法中的复杂代码块、修改记录
很常用的就是注释废弃方法,主要目的:保留代码,防止误用。常用在Utils工具类里,注释同名废弃方法。
3.文档注释:shift+alt+j
可用来注释类、接口、静态方法、成员方法、静态变量、成员变量、常量。
文档注释通常用于解释功能和关于类、方法、代码等一些信息的记录。
一、变量
1、变量的定义
变量是内存中的一个存储区域,该区域有自己的名称(变量名)和类型(数据类型)。java中每个变量必须先声明,后使用 该区域的数据可以在同一类型范围内不断变化。
2、变量的分类
1)按数据类型分类:基本类型和引用类型
a、基本类型
数值型[ 整数类型(byte、short、int、long)]、浮点型(float、double)、字符型(char)、布尔型(boolean)
注意:boolean类型数据只允许取值true和false,无null
b、引用类型
类(class)、接口(interface)、数组等
2)按照声明的位置
在方法体外,类体内声明的变量称为成员变量;在方法体内部声明的变量称为局部变量
注意:在jdk1.8以前,静态存储区是存放在方法区的,而方法区不属于堆;在jdk1.8以后,将方法区干掉,方法区中的静态存储区改到堆中存储。
二、类型转换
自动类型转换 整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
转换从低级到高级。
低 ------------------------------------> 高
byte,short,char—> int —> long—> float —> double
数据类型转换必须满足如下规则:
- 1. 不能对boolean类型进行类型转换。
- 2. 不能把对象类型转换成不相关类的对象。
- 3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
- 4. 转换过程中可能导致溢出或损失精度
三、常量
常量是一种特殊的变量,它的值被设定后,在程序运行过程中不允许改变,一般用大写字符
语法:final 常量名 = 值;如:final String LOVE = 'java';
注意:必须要在常量声明的时候就对其进行初始化,否则会出现编译错误。常量一旦初始化后就无法再改动
字符型常量的三种表现形式:
1.字符常量是用单引号(‘ ’)括起来的单个字符,涵盖世界上所有书面语的字符。例如:char c1 = 'a'; char c2 = '中'; char c3 = '9';
2.Java中还允许使用转义字符‘\’来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’; // '\n'表示换行符
3.直接使用 Unicode 值来表示字符型常量:‘\uXXXX’。其中,XXXX代表一个十六进制整数。如:\u000a 表示 \n
/**
* Java语言支持的变量类型有:
* <p>
* 类变量:独立于方法之外的变量,用 static 修饰。
* 实例变量:独立于方法之外的变量,不过没有 static 修饰。
* 局部变量:类的方法中的变量。
*/
public class InitializerExamples {
/**
* 类变量(静态变量)
* 1.类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
* 2.无论一个类创建了多少个对象,类只拥有类变量的一份拷贝。
* 3.静态变量除了被声明为常量外很少使用。常量是指声明为public/private,final和static类型的变量。
* 4.常量初始化后不可改变。
* 5.静态变量储存在静态存储区。经常被声明为常量,很少单独使用static声明变量。
* 6.静态变量在第一次被访问时创建,在程序结束时销毁。
* 7.与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为public类型。
* 8.默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。
* 9.变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
* 10.静态变量可以通过:ClassName.VariableName的方式访问。
* 11.类变量被声明为public static final类型时,类变量名称一般建议使用大写字母。
* 12.如果静态变量不是public和final类型,其命名方式与实例变量以及局部变量的命名方式一致。
*/
public static int count;//类变量
/**
* 实例变量
* 1.实例变量声明在一个类中,但在方法、构造方法和语句块之外;
* 2.当一个对象被实例化之后,每个实例变量的值就跟着确定;
* 3.实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
* 4.实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
* 5.实例变量可以声明在使用前或者使用后;
* 6.访问修饰符可以修饰实例变量;
* 7.实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。
* 8.通过使用访问修饰符可以使实例变量对子类可见;
* 9.实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。
* 10.变量的值可以在声明时指定,也可以在构造方法中指定;
* 11.实例变量可以直接通过变量名访问。但在静态方法以及其他类中,
* 12.就应该使用完全限定名:ObejectReference.VariableName。
*/
private int i;//实例变量,该变量在实例化后被默认初始化为0
/**
* Java 局部变量
* 局部变量声明在方法、构造方法或者语句块中;
* 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
* 访问修饰符不能用于局部变量;
* 局部变量只在声明它的方法、构造方法或者语句块中可见;
* 局部变量是在栈上分配的。
* 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
*/
{
System.out.println("Instance Initializer");
i = 6;//局部变量
count = count + 1;
System.out.println("Count when Instance Initializer is run is " + count);
}
public static void main(String[] args) {
InitializerExamples example = new InitializerExamples();
InitializerExamples example1 = new InitializerExamples();
InitializerExamples example2 = new InitializerExamples();
}
}
该代码运行结果为:
Instance Initializer
Count when Instance Initializer is run is 1
Instance Initializer
Count when Instance Initializer is run is 2
Instance Initializer
Count when Instance Initializer is run is 3