常量:
常量是一种标识符,它的值在运行期间恒定不变,并且常量在程序中只能被引用,而不能被重新赋值。
常量的命名规则:
1.在 Java 中,在变量声明中加入 final 关键字代表常量,加入 static 关键字代表类变量。一般结合起来声明一个变量;
2.尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串;
public static final double PI = 3.1415926;
在 Java 接口中声明一个变量,编译时会自动加上 public static final 的修饰符,自动声明为全局变量,因而在 Java 中接口是存放常量的最佳地点。
变量:
Java 程序中最基本的存储单元,其要素包括变量名,变量类型和作用域;
每一个变量都属于特定的数据类型,在使用前必须对其声明;
从本质上讲,变量其实是内存中的一小块内存,使用变量名来访问这块区域;
因此,每一个变量在使用前必须要先申报(声明),然后必须进行赋值(填充内容),才能使用。
局部变量和成员变量:
局部变量:方法或语句块内部定义的变量
public void addData () {
int a = 10; // 变量 a 就是局部变量,在方法的大括号之外是无法使用 a 的。
}
成员变量:方法外部、类的内部定义的变量;
public class TestAdd{
static final int B = 10; // 变量 B 是成员变量,在整个类的内部都可以使用。
}
成员变量又可以分为:类变量和实例变量
类变量:又叫静态变量,用 static 修饰,它可以直接用类名调用,也可以用对象调用,而且所有对象的用一个类变量都是共享同一块内存空间。static final 变量必须在声明的时候初始化或者在 static 静态块里面初始化。
实例变量:不用 static 修饰,只能通过对象调用,而且所有对象的同一个实例变量是使用不同的内存空间。
注意:如果某个方法中的局部变量的名字与全局变量的名字相同,则该全局变量在这个方法中暂时失效。
逻辑型:
boolean 类型数据只允许取值 true 或 false,不能以 0 或非 0 的整数代替 true 和 false,并且一定要小写。
字符型:
char 在 java 中是 2 个字节,java 采用 unicode,2 个字节(16 位)来表示一个字符,而一个中文字符的 Unicode 就是 2 个字节。
注意:Java 中不推荐使用 char 类型存储字符数据,通常使用 string 或者 stringbuffer 存储。
整数型:
取值范围:
能够表示的范围越大,占用的内存空间就越大,选择合适的类型定义整数。
浮点型:
float 是单精度型,占用 32 位内存空间,而 double 是双精度型,占用 64 位内存空间。
float 可以精确到 7 位有效数字;double 可以精确到 16 位有效数字,
访问权限:
使用访问控制符来控制对类、变量、方法和构造方法的访问,有如下四种方法权限:
接口中的变量都隐式声明为: public static final,而接口里的方法默认情况下访问权限为 public
注意一下继承规则:
父类为 public,子类必须为 public
父类为 protected,子类只能为 protected 和 public
父类为 private 的方法,不能够被继承,
即:子类的访问级别要等于或者高于父类的级别。
位运算符:
<< 按位左移运算符,移一位相当于乘以2
>> 按位右移运算符,移一位相当于除以2
switch分支:
语法格式如下;
switch中的变量类型:可以自动转换为整型的(byte、short、int),String 类型,枚举类型
break控制:
主要用在循环语句或者 switch 语句中,用来跳出整个语句块;
跳出最里层的循环,并且继续执行循环下面的语句。
continue控制:
让程序立刻跳转到下一次循环;
break 是跳出当前循环,执行循环外的下一句代码;continue 是停止当前循环,进入下一次循环,并没有跳出循环。
StringBuffer 和 StringBuilder 类:
它们的对象可以被多次的修改,并且不产生新的未使用的对象;
StringBuilder 不是线程安全的(不能同步访问);
由于 StringBuilder 相对于 StringBuffer 有速度优势,多数情况下建议使用 StringBuilder,要求线程安全时,必须使用 StringBuffer 类;
String 与 StringBuffer
简单地说,就是一个变量和常量的关系。
StringBuffer 对象的内容可以修改;而 String 对象一旦产生后就不可以被修改,重新赋值其实是两个对象。
StringBuffer 的内部实现方式和 String 不同,StringBuffer 在进行字符串处理时,不生成新的对象,在内存使用上要优于 String 类。所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用 StringBuffer 要更加适合一些。
String:String 定义的字符串具有一个很大的优点: 编译器可以把字符串设为共享的。
StringBuffer: 避免添加多个字符对字符串重新分配内存。
StringBuffer 是线程安全的,执行效率慢。