一. 变量
- 变量是什么:就是可以变化的量!通过变量操作内存中数据
- Java是一种强类型语言,每个变量都必须声明其类型
- Java变量是程序中最基本的存储单元,其要素包括变量类型,变量名和作用域.
变量作用域
- 类变量
写在类里面的变量,要加关键字static - 实例变量
写在类中间,和类变量差不多,没有static关键字 - 局部变量
写在方法里面,必须声明和初始化值
注意
- 每个变量都有类型,类型可以是基本类型,也可以是引用类型.
- 变量名必须是合法的标识符.
- 变量声明是一条完整的语句,因此每一个声明都必须以分号结束.
public class 变量 {
//类变量 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);
//变量类型 变量名 = 赋值
变量 demoname = new 变量();
System.out.println(demoname);
System.out.println(demoname.name);
System.out.println(demoname.age);
//类变量 static
System.out.println(salary);
}
public void add() {
}
}
二. 常量
- 常量(constant) : 初始化(initialize)后不能再改变值!不会变动的值.
- 所谓常量可以理解成一种特殊的变量,它的值被设定后,在程序运行过程中不允许被改变.
- 关键字 final
- 常量名一般使用大写字符
public class 常量 {
//修饰符,不存在先后顺序
static final double PI = 3.14;
public static void main(String[] args) {
System.out.println(PI);//3.14
}
}
变量的命名规范
- 所有变量,方法,类名:见名知意
- 类成员变量:首字母小写和驼峰原则:monthSalary 除了第一个单词首字母小写意外,后面的单词首字母大写.
- 局部变量:首字母小写和驼峰原则.和类成员变量一致
- 常量:大写字母和下划线. MAX_VALUE
- 类名:首字母大写和驼峰原则. Man,GoodMan
- 方法名: 首字母小写和驼峰原则. run(),runRun();
三. 运算符
- 算数运算符: +, -, *, /, %(取余,模运算), ++, –
- 赋值运算符: =
- 关系运算符: >, <, >=, <=, ==, !=, instanceof?
- 逻辑运算符: &&, ||, ! (与或非)
- 条件运算符: ? :
- 扩展赋值运算符: +=, -=, *=, /=
- 位运算符: &, |, ^, ~, >> ,<<, >>>(了解就行!!!)
重点掌握前四条
算数运算符
类型转换
package 运算符;
public class Operator {
public static void main(String[] args) {
//二元运算符
int a = 10;
int b = 20;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / (double) b);//0.5
long l = 1358641315L;
int i = 654;
short s = 54;
byte by = 4;
System.out.println(l + i + s + by);//Long
System.out.println(i + s + by);//Int
System.out.println(s + by);//Int
}
}
关系运算符
package 运算符;
public class Demo关系运算符 {
public static void main(String[] args) {
//关系运算符返回的结果: 正确, 错误 布尔值
//if
int a = 10;
int b = 20;
//取余,模运算
int c = 21;
System.out.println(c % a);//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
}
}
自增自减运算 幂运算
幂运算 Math工具类
package 运算符;
public class Demo自增自减 {
public static void main(String[] args) {
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//执行完这行代码后,先给b赋值,再自增
//a=a+1
System.out.println(a);
//a=a+1
int c = ++a;//执行完这行代码后,先自增,再给b赋值
System.out.println(a);
System.out.println(b);
System.out.println(c);
//幂运算 2^3=2*2*2=8
//很多运算,我们会使用一些工具类来操作!
double pow = Math.pow(2, 3);
double pow1 = Math.pow(3, 3);
System.out.println(pow);
System.out.println(pow1);
}
}
逻辑运算符
或与非
package 运算符;
//逻辑运算符
public class Demo {
public static void main(String[] args) {
//与(and)或(or)非(取反)
boolean a = true;
boolean b = false;
//逻辑与运算:两个变量都为真,结果才为true
System.out.println("a && b=" + (a && b));
//逻辑或运算:两个变量有一个为真,则结果才为true
System.out.println("a || b=" + (a || b));
//如果是真,则变为假,如果是假则变为真
System.out.println("!(a && b)=" + (!(a && b)));
//短路运算
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 运算符;
//位运算
public class Demo位运算 {
public static void main(String[] args) {
/*
A = 0011 1100
B = 0000 1101
A&B = 0000 1100
A|B = 0011 1101
A^B = 0011 0001
~B = 1111 0010
面试题:
2 * 8 = 16 2*2*2*2
位运算效率极高,直接跟底层打交道,跟二进制打交道,在很多底层算法里面应用
<< 左移 *2
>> 右移 /2
*/
System.out.println(2 << 3);//16
/*
分析
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
(可以深入扩展,了解计算机组成原理)
*/
}
}
扩展赋值运算符 面试题
面试题:字符串连接
字符串在最前和不在最前的区别.
package 运算符;
//扩展赋值运算符
public class Demo扩展赋值运算 {
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
System.out.println(a+b+"");//30
}
}
三元运算符
package 运算符;
//三元运算符
public class Demo三元运算符 {
public static void main(String[] args) {
//x ? y : z
//如果x==true,则结果为 y,否则结果为 z score(分数)
int score = 80;
int score2 = 50;
String type = score < 60 ? "不及格" : "及格";
String type2 = score2 < 60 ? "不及格" : "及格";
System.out.println(type);//及格
System.out.println(type2);//不及格
}
}
运算优先级
括号()