数据类型
变量
Java是强语言类型,每个变量都必须声明其类型。
Java变量是程序中最基本的存储单元,要素包括:变量名,变量类型,作用域。
注意:
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
- 变量名必须是合法标识符。
- 变量声明是一条完整的语句,因此每个声明都必须以分号结束。
public static void main(String[] args) {
//int a=1,b=2,c=3;不建议,应保证程序的可读性
int a=1;
int b=2;
int c=3;
String name = "BB";
char x = 'x';
double pi = 3.14;
}
变量作用域
类变量
//类变量 static
static double salary = 2500;
//属性:变量
实例变量
//实例变量:从属于对象;如果不自行初始化,将变成这个类型的默认值 0或者0.0 初始化为u0000
//布尔值:默认是false
//除了基本类型,其余的默认值都是null
String name;
int age;
局部变量
//main方法
public static void main(String[] args) {
//局部变量:使用之前必须声明和初始化值
int i = 10;
System.out.println(i);
//变量类型 变量名字 = new Demo08()
Demo08 demo08 = new Demo08();
System.out.println(demo08.age);
System.out.println(demo08.name);
System.out.println(salary);//类变量
}
//其他方法
public void add(){
}
常量
初始化后不能再改变值,可理解为特殊变量。在程序运行中,不允许被改变。
final 常量名 = 值;//常量名一般用大写字符
//final为修饰符,不存在先后顺序,即static final和final static一样
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);
变量名规范
- 所有变量、方法、类名:见名知意
- 除常量外,变量均遵从首字母小写和驼峰原则:除了第一个单词外,后面单词的首字母都大写,例:monthSalary
- 常量:全部使用大写字母,单词之间用下划线:MAX_VALUE
- 类名:首字母大写和驼峰原则:GoodMan
- 方法名:首字母小写和驼峰原则:runRun()
运算符
算术运算符:+ ,- ,* ,/ ,%(取余),++ (自增),–(自减)
赋值运算符:= ,例: int a = 10; —> 把10赋值给a
关系运算符:> ,< ,>= ,<= ,==(Java中为等于),!=(不等于),instanceof
逻辑运算符:&&(与),||(或),!(非)
位运算符(只了解):& ,| ,^ ,~ ,>> ,<< ,>>>
条件运算符:? ,:
扩展赋值运算符:+= ,-= ,*= ,/=
算术运算符
public static void main(String[] args) {
//二元运算符
//ctrl + D :复制当前到下一行
int a = 10;
int b = 20;
int c = 25;
int d = 25;
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 //强制转换
}
赋值运算符
public static void main(String[] args) {
long a = 1231232123123123L;
int b= 123;
short c = 10;
byte d= 8;
System.out.println(a+b+c+d);//1231232123123264
//long类型 若一个数为long,则结果类型也为long;
System.out.println(b+c+d);//141
//int类型 若没有long,则结果都为int,无论是否有int
System.out.println(c+d);//18
//int类型
}
关系运算符
public static void main(String[] args) {
//关系运算符返回的结构:正确或错误 用布尔值
//if
int a = 10;
int b = 20;
int c = 21;
System.out.println(c%a);//1
// c/a --> 21/10=2...1
//取余,模运行
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
}
public static void main(String[] args) {
// ++自增 --自减 :一元运算符
int a = 3;
int b = a++; //执行完这行代码后,先给b赋值,再自增
//a++ a = a + 1
System.out.println(a);//4
//a++ a = a + 1
int c = ++a;//执行这行代码前,先自增,再给c复制赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
//幂运算 2^3 = 8 很多运算会使用工具类来操作
double pow = Math.pow(2,3);
System.out.println(pow);//8.0
}
逻辑运算符
public static void main(String[] args) {
//与(and) 或(or) 非(取反)
boolean a =true;
boolean b =false;
System.out.println("a && b: "+(a && b));//flase
//逻辑与运算:两个变量都为真,结果才为真
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);//flase
System.out.println(c);//5,短路造成没有运算
}
位运算符
/*
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
*/
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
//字符串连接符 + ,String
System.out.println(a+b+"");//30
System.out.println(""+a+b);//1020,""顺序在前时,仅仅进行拼接
}
条件运算符
//三元运算符
public static void main(String[] args) {
// x ? y : z
//如果x==true,则结果为y,否则结果为z
int score = 50;
String type = score < 60 ?"不及格":"及格";//必须掌握
//if
System.out.println(type);
}