变量
type varname [=value] [{,varName[=value]}]; //不建议一行定义多个变量名
// 数据类型 变量名 = 值;可以使用逗号隔开来声明多个同类型变量。
注意:
-
每个变量都有类型,基本类型/引用类型;
-
变量名必须是合法的标识符;
-
每一个声明都必须以分号结束;
变量作用域
-
类变量 static
-
实例变量
-
局部变量
public class Demo07 {
//类变量 static
static double salary = 2500;
//属性;变量
/*实例变量:从属于对象;
若不设置初始化值,则输出默认值: 0 0.0
布尔值:默认是false
除了基本类型,其余的默认值是null
*/
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量;必须声明和初始化值
int i = 10;
System.out.println(i); //10
//变量类型 变量名 = new Demo07();
Demo07 demo07 = new Demo07();
System.out.println(demo07.age); //0
//类变量 static 从属于类
System.out.println(salary); //2500.0
}
//其他
public void add(){
}
}
常量(Constant)
常量: final 初始化后不能再改变值!
-
常量名一般使用大写字母
final 常量名 = 值;
final double PI = 3.14;
public class Demo09 {
//修饰符,不存在先后顺序 final static double PI = 3.14;也行
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI); //3.14
}
}
变量的命名规范
-
变量、方法、类名:见名知意
-
类成员变量、局部变量、方法名:首字母小写和驼峰原则:monthSalary 除第一个单词,后面单词首字母大写
-
常量:大写字母和下划线:PI_VALUE
-
类名:首字母大写和驼峰原则:GoodDay
运算符
-
算术运算符: +, -, *, /, %(模运算,取余),++,--
-
赋值: =,+=, -= , *=, /=
-
关系: >, <, >=, <=, ==, !=instanceof
-
逻辑: &&, ||, ! (与或非)
-
位运算:&, |, ^, ~ (按位取反), >> , << ,>>>(高位补零)
-
条件运算符 ?:
package operator;
//二元运算符
public class Demo01 {
public static void main(String[] args) {
//ctrl+d :复制当前行到下一行
int a = 10;
int b = 20;
int c = 30;
int d = 40;
int e = 52;
System.out.println(a+b); //30
System.out.println(a-b); //-10
System.out.println(a*b); //200
System.out.println(a/(double)b); //0.5
System.out.println(e%a); //2 取余
}
}
package operator;
public class Demo02 {
public static void main(String[] args) {
long a = 222222222L;
int b = 120;
short c = 5;
byte d = 10;
System.out.println(a+b+c+d); //long 222222357
System.out.println(b+c+d); //int 135
System.out.println(c+d); //int 15 转换:cast
}
}
-
运算中有Long 结果为Long
-
运算中有double 结果为double
package operator;
//关系运算符
public class Demo03 {
public static void main(String[] args) {
//关系运算符结果返回 False,True
int a = 10;
int b = 20;
System.out.println(a>b); //false
System.out.println(a<b); //true
System.out.println(a==b); //false
System.out.println(a!=b); //true
}
}
package operator;
// 自增,自减
public class Demo04 {
public static void main(String[] args) {
//++,-- 自增,自减
int a = 3;
int b = a++; //a++,执行完这行代码后,先赋值给b,再自增
// a++ ,a = a+1; a=4
System.out.println(a); //4
//++a ,a=a+1
int c = ++a; //++a,执行这行代码前,先自增,再给c赋值
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
//幂运算 2^3 2*2*2=8,使用工具类计算
double pow = Math.pow(2,3);
System.out.println(pow); //8
}
}
package operator;
//逻辑运算符
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
System.out.println("a || b: "+(a||b)); //a || b: true
System.out.println("!(a && b):"+ !(a && b)); //!(a && b):true
//短路运算
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d); //false
System.out.println(c); //5
boolean e = (c++<4)&&(c<4);
System.out.println(e); //false
System.out.println(c); //6
}
}
package operator;
//位运算
public class Demo06 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
------------------------------------------
A&B = 0000 1100 对应位为1则1,否则0
A|B = 0011 1101 对应位为0则0,否则1
A^B = 0011 0001 对应位相同则0,否则1
~B = 1111 0010 按位取反
-----------------------------------------
2*8 = 16 2*2*2*2
效率极高!!
<< 左移 *2
>> 右移/2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
System.out.println(2<<3);
}
}
package operator;
public class Demo07 {
public static void main(String[] args) {
int a = 10;
int b = 20;
a+=b; //a = a+b
a-=b; //a = a-b
System.out.println(a); //10
System.out.println(a+b); //30
//字符串连接符 + ,String
System.out.println(""+a+b); //1020 ""+拼接a(10)和b(20)
System.out.println(a+b+""); //30 会运算前面的
}
}
package operator;
//三元运算符
public class Demo08 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为y,否则为z
int score = 90;
String type = score <60 ?"不及格":"及格"; //必须掌握
System.out.println(type);
}
}
优先级
()一元运算符 , +-*/,位,