目录
[访问控制符] [修饰符] 数据类型 变量名 [ = 初始值];
每个变量都有类型,类型可以是基本类型,也可以是引用类型。
变量名必须是合法的标识符。
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
逐一声明每一个变量可以提高程序可读性。
类变量(静态变量: static variable):独立于方法之外的变量,用 static 修饰。
从属于类,生命周期伴随类始终,从类加载到卸载。 如果不自行初始化,他会自动初始化成该类型的默认初始值。(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)
- public class Employee {
- //salary是静态的私有变量
- private static double salary;
- // DEPARTMENT是一个常量
- public static final String DEPARTMENT = "开发人员";
- public static void main(String[] args){
- salary = 10000;
- System.out.println(DEPARTMENT+"平均工资:"+salary);
- }
- }
局部变量(lacal variable):类的方法中的变量。
在使用前必须先声明和初始化(赋初值)。局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。
- public static void main(String[] args) {
- int i=10;
- int j = i+5 ;
- System.out.println(j);
- }
实例变量(成员变量:member variable):独立于方法之外的变量,不过没有 static 修饰。
从属于对象,生命周期伴随对象始终。如果不自行初始化,他会自动初始化成该类型的默认初始值(数值型变量初始化成0或0.0,字符型变量的初始化值是16位的0,布尔型默认是false)。
- public class Test {
- // 这个实例变量对子类可见
- public String name;
- // 私有变量,仅在该类可见
- private double salary;
- ...
- }
final 常量名=值;
final double PI=3.14; final String LOVE="hello";
有变量、方法、类名:见名知意。
类变量、实例变量和局部变量首字母小写,并且遵循驼峰原则。比如:nextMonth。
常量大写字母和下划线。比如:MIN_VALUE。
类名首字母大写,并且遵循驼峰原则。比如:HelloWorld。
方法名首字母小写,并且遵循驼峰原则。比如:twiceJump()。
四、运算符(operator)
instanceof 运算符

- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- int c = 25;
- int d = 25;
- System.out.println("a + b = " + (a + b) );
- System.out.println("a - b = " + (a - b) );
- System.out.println("a * b = " + (a * b) );
- System.out.println("b / a = " + (b / a) );
- System.out.println("b % a = " + (b % a) );
- System.out.println("c % a = " + (c % a) );
- System.out.println("a++ = " + (a++) );
- System.out.println("a-- = " + (a--) );
- // 查看 d++ 与 ++d 的不同
- //首先在控制台输出,然后d自增为26
- System.out.println("d++ = " + (d++) );
- //首先将d自增为27,然后在控制台输出
- System.out.println("++d = " + (++d) );
- }
-
运行结果:
- a + b = 30
- a - b = -10
- a * b = 200
- b / a = 2
- b % a = 0
- c % a = 5
- a++ = 10
- a-- = 11
- d++ = 25
- ++d = 27
注意:
除法运算,两个操作数是整型的,结果也会是整型的,舍弃掉小数部分;如果有一个数是浮点数,结果将自动转型为浮点型
取余运算,两个操作数是整型的,结果也会是整型的,如果有一个数是浮点数,结果将自动转型为浮点型
自增自减运算,a++ 相当于 a = a + 1, a++ 是先运用在计算,++a 先计算在运用

- public class Test {
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- int c = 0;
- c = a + b;
- System.out.println("c = a + b = " + c );
- c += a ;
- System.out.println("c += a = " + c );
- c -= a ;
- System.out.println("c -= a = " + c );
- c *= a ;
- System.out.println("c *= a = " + c );
- a = 10;
- c = 15;
- c /= a ;
- System.out.println("c /= a = " + c );
- a = 10;
- c = 15;
- c %= a ;
- System.out.println("c %= a = " + c );
- c <<= 2 ;
- System.out.println("c <<= 2 = " + c );
- c >>= 2 ;
- System.out.println("c >>= 2 = " + c );
- c >>= 2 ;
- System.out.println("c >>= 2 = " + c );
- c &= a ;
- System.out.println("c &= a = " + c );
- c ^= a ;
- System.out.println("c ^= a = " + c );
- c |= a ;
- System.out.println("c |= a = " + c );
- }
- }
运行结果:
- c = a + b = 30
- c += a = 40
- c -= a = 30
- c *= a = 300
- c /= a = 1
- c %= a = 5
- c <<= 2 = 20
- c >>= 2 = 5
- c >>= 2 = 1
- c &= a = 0
- c ^= a = 10
- c |= a = 10

- public class Test {
-
- public static void main(String[] args) {
- int a = 10;
- int b = 20;
- System.out.println("a == b = " + (a == b) );
- System.out.println("a != b = " + (a != b) );
- System.out.println("a > b = " + (a > b) );
- System.out.println("a < b = " + (a < b) );
- System.out.println("b >= a = " + (b >= a) );
- System.out.println("b <= a = " + (b <= a) );
- }
- }
运算结果:
- a == b = false
- a != b = true
- a > b = false
- a < b = true
- b >= a = true
- b <= a = false
示例:- public class Test {
- public static void main(String[] args) {
- boolean a = true;
- boolean b = false;
- System.out.println("a && b = " + (a&&b));
- System.out.println("a || b = " + (a||b) );
- System.out.println("!(a && b) = " + !(a && b));
- }
- }
运行结果:
- a && b = false
- a || b = true
- !(a && b) = true

- public class Test {
- public static void main(String[] args) {
- int a = 60; /* 60 = 0011 1100 */
- int b = 13; /* 13 = 0000 1101 */
- int c = 0;
- c = a & b; /* 12 = 0000 1100 */
- System.out.println("a & b = " + c );
-
- c = a | b; /* 61 = 0011 1101 */
- System.out.println("a | b = " + c );
-
- c = a ^ b; /* 49 = 0011 0001 */
- System.out.println("a ^ b = " + c );
-
- c = ~a; /*-61 = 1100 0011 */
- System.out.println("~a = " + c );
-
- c = a << 2; /* 240 = 1111 0000 */
- System.out.println("a << 2 = " + c );
-
- c = a >> 2; /* 15 = 1111 */
- System.out.println("a >> 2 = " + c );
-
- c = a >>> 2; /* 15 = 0000 1111 */
- System.out.println("a >>> 2 = " + c );
- }
- }
运行结果:
- a & b = 12
- a | b = 61
- a ^ b = 49
- ~a = -61
- a << 2 = 240
- a >> 2 = 15
- a >>> 2 = 15
variable x = (expression) ? value if true : value if false
- //基本格式:variable x = (expression) ? value if true : value if false
- public static void main(String[] args){
- int a , b;
- a = 10;
- // 如果 a 等于 1 成立,则设置 b 为 20,否则为 30
- b = (a == 1) ? 20 : 30;
- System.out.println( "Value of b is : " + b );
-
- // 如果 a 等于 10 成立,则设置 b 为 20,否则为 30
- b = (a == 10) ? 20 : 30;
- System.out.println( "Value of b is : " + b );
- }
运行结果:
- 输出结果:
- Value of b is : 30
- Value of b is : 20
该运算符用于操作对象实例,检查该对象是否是一个特定类型(类类型或接口类型)。
( Object reference variable ) instanceof (class/interface type)
- 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
我们小学都学过:先加减,后乘除,所以优先级我们并不陌生。
当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。
下表中具有最高优先级的运算符在的表的最上面,最低优先级的在表的底部。
