变量
变量就是可以变化的量
Java是一种强类型的语言,每个变量必须声明类型
Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域
每个变量都有类型,类型可以是基本类型,也可以是引用类型
变量名必须是合法的标识符
变量声明是一条完整的语句,因此每一个声明都必须以分号结束
int a=1,b=2,c=3;
String name = ''study'';
char x = 'X';
double pi = 3.14;
变量作用域
局部变量
public static void main(){
//局部变量 int i = 10;i只在这个大括号内有用
int i = 10;
}
//main 方法
//局部变量在main方法内,同时作用域在两个大括号之间,必须声明和初始化值
public void add(){} //add方法
实例变量
//实例变量在方法的外面类的里面,作用域更大,从属于对象,从属于这个类,必须借助这个类才能使用,比较高级,不需要初始化
public class Demo08 {
//实例变量 String name; int age;用的话不容易用,如果不自行初始化,输出这个类型的默认值 数值的是0 0.0,字符是0 ,布尔值是false,除了基本类型,其余的默认值都是null
String name;
int age;
public static void main(){
}
}
//使用实例变量 变量类型 变量名字 = new Demo08()先定义该变量的类,然后可以用里面的东西
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
类变量 在实例变量前面static
public class Demo08 {
static double salary = 2500;
public static void main(){
}
}
//引用类变量 直接引用
System.out.println(salary);
常量
常量:初始化话之后就不能再改变值,不会变动的值
常量可以理解成一种特殊的变量,他的值设定后,在程序运行过程中不允许被改变
常量名一般使用大写字母
public class Demo09 {
//static final变量定义前都是修饰符,不区分先后顺序
static final double PI = 3.14;
public static void main(String[] args){
System.out.println(PI);
}
}
变量的命名规范
所有变量、方法、类名:见名知意
类成员变量:首字母小写和驼峰原则:monthSalary
局部变量:首字母小写和驼峰原则
常量:大写字母和下划线:MAX_VALUE
类名:首字母大写和驼峰原则:Man,GoodMan
方法名:首字母小写和驼峰原则:run(),runRun()
运算符
算数运算符:+,-,*,/,%(取余,模运算),++,-- 赋值运算符:= 关系运算符:>,<,>=,<=,==(等于),!=(不等于),instanceof 逻辑运算符:&& ,||,!(与或非) 位运算符:&,|,^,~,>>,<<,>>> 条件运算符?: 拓展赋值运算符:+=,-=,*=,/=
public class Demo02{
public static void main(String[] args){
long a = 1;
int b = 2;
short c = 3;
byte d = 4;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
//有long类型时,输出为long类型,无long类型时,输出全部为int类型
}
++ – 自增,自减 一元运算符
package operator
public class Demo04{
public static void main(String[] args){
int a = 3;//此处a为3
int b = a++;//a++ a = a + 1 //3执行完这行代码后,先给b赋值,再自增
//a = a + 1
System.out.println(a);此处a为4
//a++ a = a + 1
int c = ++a;//此处a为5,执行完这段代码后,先自增,再给b赋值
System.out.println(a);5//此处由于a为变量,此处a=5
System.out.println(b);3
System.out.println(c);5
}
}
逻辑运算符
与(and)或(or)非(取反)
package operator
public class Demo04{
public static void main(String[] args){
boolean a = true;
boolean b = false;
System.out.println("a && b:"+(a&&b));//false 两个变量都为真结果才为true
System.out.println("a || b:"+(a||b));//true 两个结果有一个为真,结果才为true
System.out.println("!(a && b):"+!(a&&b));//true 如果是真则为假,如果是假则为真
//短路运算
System.out.println("b && a:"+(b&&a));//上来运算就为假,则不用判断+号后面的变量,为短路运算
int c = 5;
boolean d =(c<4)&&(c++<4);
System.out.println(b);false
System.out.println(c);//c=5 c<4为错后面不执行 c++并没有运算
}
//结果
false
5
位运算
package operator
public class Demo04{
public static void main(String[] args){
/*
A =0011 1100
B =0000 1101
*/
A&B = 0000 1100 // 如果两个位置有0取0,其余取1
A|B = 0011 1101 // 如果两个位置有1取1,其余取0
A^B = 0011 0001 // 如果这两个位置相同则为0,不相同则为1
~B = 1111 0010 // 与上面的B每个位置相反
<< 左移 相当于把这个数字*2
>> 右移 相当于把这个数字/2
位运算效率极高
0000 0000 0
0000 0001 2
0000 0010 4
0000 0100 8
0000 1000 16
System.out.println(2<<3)//2左移三位等于16
}
}
拓展运算符
package operator
public class Demo04{
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); // 输出a=30
字符串连接符 + ,只要加号旁边有一侧出现了字符串类型,则另一边也会变成字符串类型进行输出
System.out.println(""+a+b); // 输出1020 字符串在前面则将ab拼接起来了
System.out.println(a+b+""); // 输出30 如果字符串在后面则前面的依旧运算输出
}
}
三元运算符
package operator
public class Demo04{
public static void main(String[] args){
// x ? y : z
// 如果x==true,则结果为y,否则结果为z
int score = 90
string type = score <60 ?"不及格":"及格"//必须掌握
system.out.println(type); //输出结果及格
}
}
优先级
优先级 用()标识清楚 //括号内优先运算