变量
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
注意事项:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型
- 变量名必须是合法的标识符
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束
变量作用域
-
类变量
写在类里面,static(静态的)修饰
-
实例变量
下载类里面,没有static修饰
-
局部变量
写在方法里面
public class Demo03 {
//类变量 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);
//实例变量
//变量类型 变量名字 =
Demo03 demo03 = new Demo03();
System.out.println(demo03.name); //null
System.out.println(demo03.age); //0
//类变量 static
//加static就不用进行new操作了,可以直接使用
System.out.println(salary);
}
}
变量的命名规范
类成员变量、局部变量:首字母小写,驼峰原则(除了第一个单词,后面的单词首字母大写),monthSalary
常量:大写字母和下划线,MAX_VALUE
类名:首字母大写,驼峰原则,GoodMan
方法名:首字母小写,驼峰原则,runRun()
常量
常量(Constant):初始化后不能改变值,不会变动的值
可以把常量理解为一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变
定义:final 常量名 = 值;
final double PI = 3.14;
常量名一般使用大写字符
static final double PI = 3.14;
运算符
-
算数运算符:+,-,*,/,%,++,–
-
赋值运算符:=
-
关系运算符:>,<,>+,<=,==,!=,instanceof
-
逻辑运算符:&&,||,!
-
位运算符:&,|,^,~,>>,<<,>>>
-
条件运算符:?
-
扩展赋值运算符:+=,-=,*=,/=
算数运算符:
//做除法时注意小数问题需要做强转
int a = 10;
int b = 20;
System.out.println(a/(double)b); //0.5
不同类型做算术运算:如果相加的类型中有long那么结果就是long类型,如果相加的类型中有double,那么结果就是double类型
long a = 12121456213L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); //int
System.out.println(c+d); //int
关系运算符:返回的结果 true,false(布尔值)
int e = 10;
int f = 20;
int g = 21;
System.out.println(g%e);//1 相当于21/10=2...1
System.out.println(e>f);//false
System.out.println(e<f);//true
System.out.println(e==f);//false
System.out.println(e!=f);//true
自增自减运算符:一元运算符
int a = 3;
int b = a++; //a++ a = a+1 先赋值再自增
//先计算b=a=3,再使a=a+1=4
System.out.println(a); //4
System.out.println(b); //3
int c = ++a; //先自增再赋值
//先计算a+1=5,再使c=a=5
System.out.println(a); //5
System.out.println(b); //3
System.out.println(c); //5
//幂运算
double pow = Math.pow(2, 3);
System.out.println(pow);
与、或、非运算:
逻辑与运算:两个变量都为真,结果才为true
逻辑或运算:两个变量有一个为真,结果为true
如果结果为真,则变为假;如果结果为假,则变为真
boolean a = true;
boolean b = false;
System.out.println("a&&b:" +(a&b)); //false
System.out.println("a||b:" +(a||b)); //true
System.out.println("!(a&&b):" +!(a&b)); //true
短路运算:
int c = 5;
boolean d = (c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
/*
* c为5不可能小于4,所以前面c<4的运算结果为false,此时运算就不会往下走了
* 验证:如果继续运算的话,输出的c的值应该为6,但是结果显示为5,所以发生了短路运算
* */
位运算符:
A = 0011 1100
B = 0000 1101
与:两个都为1的时候结果为1
A&B=0000 1100
或:有一个为1或两个都为1结果为1
A|B=0011 1101
异或:相同为0,不同为1
A^B=0011 0001
取反:与之相反的数
~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
把1向左移动4位变成0001 0000 值为16
位运算效率极高
扩展赋值运算符:
a+=b; // a=a+b
a-=b; // a=a-b
字符串连接符:
int a = 10;
int b = 20;
//加号字符两侧只要出现String类型,就会把其他操作转换成String再进行连接
System.out.println(""+a+b); //1020
System.out.println(a+b+""); //30
//如果字符串在前面,就会进行拼接,如果字符串在后面就进行运算
三元运算符:
格式: x ? y : z
如果x==true,则结果为y,否则为z
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type); //及格
score<60为false所以走:后面的结果