Java基础02
变量
- 变量是什么:就是可以变化的量;
- Java是一种强类型语言,每个变量都必须声明其类型;
- Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。
- 注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型;
- 变量名必须是合法的标识;(例如不能是#、*)
- 变量声明是一条完整的语句,因此每个声明都必须以分号结束。
变量的作用域
- 局部变量
public class Demo09 {
//main 方法
public static void main(String[] args) {
//局部变量:使用之前必须声明和初始化值(局部变量是在方法里面的)
int i;
int a = 10;
System.out.println(i); //报错,因为i没有初始化值
System.out.println(a); //10
}
}
- 实例变量
public class Demo09 {
//实例变量:从属于对象;如果不进行初始化,就是这个类型的默认值
//整数的默认值是0; 浮点数默认值是0.0; 字符串的默认值是u0000(输出结果是空格、空白);
//布尔值默认是false;
//除了基本类型,其他默认值都是null;
String name; //实例变量
int age; //实例变量
public static void main(String[] args) {
System.out.println(demo09.age); // 0
System.out.println(demo09.name); // null
}
}
- 类变量
public class Demo09 {
//类变量 static
static double salary = 2500; //类变量
public static void main(String[] args) {
System.out.println(salary); //2500.0
}
}
常量(final)
- 常量(Constant):初始化(initialize)后不能再改变值!不会变动的值
- 所谓的常量可以理解为一种特殊的变量,它的值在被设定后,在程序运行过程中不允许被改变
final 常量名 = 值;
final double PI = 3.14;
- 常量名一般使用大写字符
public class Demo10 {
//修饰符,不存在先后顺序
static final int P = 12;
final static int F = 13;
public static void main(String[] args) {
System.out.println(P); // 12
System.out.println(F); // 13
}
}
变量的命名规范
- 所有的变量、方法、类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary(月工资)
- 驼峰原则:除了第一个单词以外,后面的单词首字母大写。例如:lastName - 局部变量:首字母小写和驼峰原则
- 常量:大写字母和下划线:MAX_VALUE (当单词较多时可以用下划线隔开)
- 类名:首字母大写和驼峰原则 :Man , GoodMan
- 方法名:首字母小写和驼峰原则:run () , runRun()
运算符
Java语言支持如下运算符
-
运算符优先级,最高级:()
-
算术运算符:+,-,*,/,%,++,-- (%表示取余,就是求余数,又叫模运算)
public class Demo04 { public static void main(String[] args) { // ++自增 --自减 一元运算符 int a = 5; int b = a++; //先给b赋值,再自增,即:先执行b=a=5;再执行a=a+1; System.out.println(a);//6 int c = ++a; //先自增,再赋值,即:先执行a=a+1;再执行c=a=7; System.out.println(a);//7 System.out.println(b);//5 System.out.println(c);//7 //幂运算 2^3 2*2*2 = 8 很多运算,我们会使用一些工具类来操作 // Math.pow(2,3);再按Ctrl+Alt+v生成返回值对象快捷键 double pow = Math.pow(2, 3); System.out.println(pow);//8 } }
public class Demo01 { public static void main(String[] args) { //二元运算 //Ctrl+D:复制当前行到下一行 int a = 10; int b = 20; int c = 35; int d = 26; System.out.println(a+b);//30 System.out.println(a-b);//-20 System.out.println(a*b);//200 System.out.println(b/a);//2 System.out.println(c/a);//3 默认为int,所以取整数 System.out.println((double)c/a);//3.5 System.out.println(d%a);//6 取余,或者叫模运算 } }
public class Demo02 { public static void main(String[] args) { long a = 100000000000L; int b = 1; short c = 2; byte d = 3; System.out.println(a+b+c+d); //100000000006 long System.out.println(b+c+d); //6 int System.out.println(c+d); //5 int //byte short char 在java里计算是没人权的,都默认直接转换为int } }
-
赋值运算符:=
-
关系运算符:>, <, <=,>=, , !=, instanceof (** 表示 等于**, != 表示 不等于)
public class Demo03 { public static void main(String[] args) { //关系运算符返回的结果:正确(true) 错误(false) 就是布尔值 // if int a = 10; int b = 10; System.out.println(a>b);//false System.out.println(a<b);//true System.out.println(a==b); //false 等于== System.out.println(a!=b); //false 不等于!= } }
-
逻辑运算符:&&,||,!(与或非)
public class Demo05 { public static void main(String[] args) { //&& 与(and) || 或(or) ! 非(取反) 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 逻辑非运算:如果是真,则变假;如果是假,则变真; System.out.println("!a:"+(!a));//!a:false //短路运算(大致就之执行一部分后就输出结果), 逻辑与运算就存在短路运算,例如: System.out.println("==========================="); int c = 5; boolean d = (c<4)&&(c++<4); System.out.println(c);//5 与运算时,c=5,c<4是假,这里就直接输出false,后面的c++<4没执行,所以c=5 System.out.println(d);//false boolean f = (c<6)&&(++c<4); System.out.println(c);//6 与运算时,c=5,c<6是真,继续执行++c<4,所以c=6 System.out.println(f);//false } }
-
位运算符:&,|,^,~,>>,<<,>>>(没搞懂)
public class Demo06 { public static void main(String[] args) { /* A = 0011 1100 B = 0000 1101 ---------------- 位运算是二进制对应位进行运算,1可以理解为true,0可以理解为false; ---------------- A&B = 0000 1100 逻辑与运算 A/B = 0011 1101 逻辑或运算 A^B = 0011 0001 异或运算 如果对应位相同则为0,不相同就为1 ~B = 1111 0010 取反 对应取反 ---------------- 位运算特点:效率极高 << 左移 左移1位就相当于*2 >> 右移 右移1位就相当于/2 2*8 = 16 2*2*2*2 0000 0000 0 0000 0010 2 0000 0011 3 0000 0100 4 0000 1000 8 0001 0000 16 */ System.out.println(2<<3);//16 System.out.println(3<<2);//12 System.out.println(12>>2);//3 } }
-
条件运算符:? :
//三元运算符 ? : public class Demo08 { public static void main(String[] args) { /* x ? y : z 意思就是:如果x==true,则结果为y,否则结果为z; */ int score = 80; String type = score < 60 ?"不及格":"及格"; // if System.out.println(type);//及格 } }
-
扩展赋值运算符:+=,-=,*=,/=
public class Demo07 { public static void main(String[] args) { int a = 10; int b = 20; int c = 30; a+=b;//a=a+b c-=b;//c=c-b System.out.println(a);//30 System.out.println(c);//10 //字符串连接符 + +两侧只要出现String类型,就会把两侧都转换为String类型,再进行连接 System.out.println("=================="); System.out.println(a+b);//50 System.out.println(""+a+b);//3020 System.out.println(a+b+"");//50 System.out.println(a+b+"tmy");//50tmy } }