二、变量、常量
1.变量:简而言之,就是可以变化的量!
在Java中每个变量都必须声明其类型,Java中的变量是程序中最基本的存储单元,其要素包括(变量名、变量类型、以及作用域)。
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法的标识符。
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域:分为三种类变量、实例变量、局部变量。如:
public class Demo4 {
// 类变量也叫全局变量 // 在类型前面必须要加static关键字
static int i1 = 100000;
// 属性变量
// 实例变量;从属于对象 如果不自行初始化,这个类型的默认值 0 null
String name;
int age;
// main方法
public static void main(String[] args) {
// 局部变量,必须声明和初始化值 只能在此方法中使用
int i = 100;
System.out.println(i);
Demo4 demo4 = new Demo4(); // 实例化对象
System.out.println(demo4.age);
System.out.println(demo4.name);
System.out.println(i1); // 这里的i1输出的是类变量
}
输出:
100
0
null
100000
可以明显看出三中变量的用法,注意的是类变量在声明之前必须在数据类型前面加上static关键字,就可以使用。
2.常量:初始化后就不能再次修改,不会变动的值。
- 所谓常量可以理解为一种特殊的变量,它的值设定后,在程序运行过程中不允许被修改。
语法:final 常量名=值;final int PI = 312; - 常量名一般用大写字符
// static为访问修饰符,不存在先后顺序
static final int PI1 = 312;
final static int PI2 = 312;
public static void main(String[] args) {
System.out.println(PI1);
System.out.println(PI2);
}
输出:
312
312
变量的命名规范:
- 所有变量、方法、类名等都要见名知意
- 类成员变量:首字母小写和驼峰式命名原则:monthSalary 第二单词首字母往往大写会比较好如:lastName
- 局部变量:大写字母和下划线:MAX_VALUE
- 类名:首字母大写和驼峰命名原则:Man,GoodMan
- 方法名:首字母小写和驼峰命名原则:run(),runRun()
二、运算符
Java语言支持如下运算符:
- 算术运算符:+,-,*,/,%,++,–
- 赋值运算符:=
- 关系运算符:>,<,<=,==,!=instanceof
- 逻辑运算符:&&,||,!
- 位运算符:&,|,^,~,>>,<<,>>>(了解!)
- 条件运算符:?:
- 扩展赋值运算符:+=,-=,*=,/=
1.关系运算符
关系运算符进行比较时返回只会有两种:正确/错误 所以它会自动使用boolean进行返回,以及“%”取余。如:
public static void main(String[] args) {
// 关系运算符返回的结果只有两个 要么是正确要么是错误 所以返回类型为 boolean 类型
int a = 1;
int b = 2;
int c = 3;
System.out.println(a>b); // false
System.out.println(a<b); // true
System.out.println(a<c); // true
System.out.println(c%b); // 相当于 c / b = 3 / 2 余数为 1 所以会返回 1;%取余也叫模运算
}
输出:
false
true
true
1
1.1 ++ – 分别为自增和自减(每次执行一次都会增加1或者减1),但是会有个++在前和++在后的问题.如
public static void main(String[] args) {
int a1 = 1;
int a2 = a1++;
// 这个是它先把 a1++(也就是初始值1)赋值给a2然后在进行自增所以a2还是等于1;因为它是先赋值的再自增
System.out.println("先赋值后自增的样子:"+a1);
System.out.println("此时的a2就是刚才a++的初始值:"+a2); // 所以此时 a2 还是等于 1
int a3 = ++a1;
// 这个 ++a1 相当于先是把 a1+加上一个1 然后在进行赋值 所以此时 a1 就会等于 3
System.out.println("先自增后赋值的样子:"+a3);
}
输出:
先赋值后自增的样子:2
此时的a2就是刚才a++的初始值:1
先自增后赋值的样子:3
代码就是说:++如果在前的话先自增后赋值,相反++要是在后的话就是先赋值后自增;–也同上述如此。
1.2 初识Math类:这个类是Java中自带的一个用于操作数字运算的一个工具类,从而让处理数字的操作变得简单易懂。如:
public static void main(String[] args) {
// 初识 Math 类
double pow = Math.pow(2, 3); // 属性 pow 是幂次方的计算 也就是说2的3次方是几?
System.out.println(pow); // 输出为8
}
输出:
8.0
2.逻辑运算符(或与非)
public static void main(String[] args) {
// 与(and) 或(or) 非(取反)
boolean a = true;
boolean b = false;
System.out.println("a和b:"+(a&&b));
//(&&)与:比较的两个变量中其中一个为假,则结果全部为假,会存在短路问题;那么a与b肯定为false(假)
System.out.println("a||b:"+(a||b));
//(||)或:比较的两个变量中其中一个为真,则结果全部为真,那么a或b应该输出为true(真)
System.out.println("!(a&&b):"+!(a&&b));
// 非:如果变量结果为真则变为假,如果是假,则变为真;结果本来为假的则变为真,所以会输出true(真)
}
输出:
a和b:false
a||b:true
!(a&&b):true
短路运算如:
public static void main(String[] args) {
// 短路运算
int b = 5;
boolean d = (b<4)&&(b++<6);
// 就是在比较的过程中这个b小于4肯定是不对的,所以他不会继续执行后面的b++,
// 虽然b++小于6是正确的但是依然不会执行,这就是短路问题
System.out.println(b); // 结果肯定会输出之前没有做过处理的数值5
System.out.println(d); // 这个等式不能成立所以会输出false
}
输出:
5
false
位运算符如下:
public static void main(String[] args) {
// 如果快速计算 2*8 << 左移相当与给数字*2 右移>>相当于给数字/2
System.out.println(2<<3); // 也就是等于3个2相乘
System.out.println(2<<4); // 相当于4个2相乘
// 3*5
System.out.println(30>>1);
// 5*5
System.out.println(50>>1); // 相当于50/2
// 7*7
System.out.println(98>>1);
}
输出:
16
32
15
25
49
根据上述得知:<<左移是给当前的数字*2,右移是给当前的数字/2;据总结得知,左移的数字都是偶数,如2,4,6,8,10……;右移是奇数如:1,3,5,7,9……