JAVA学习-变量、常量与运算
变量
//类
public class demo6 {
//类变量 static
static int all = 10;
//实例变量:从属于对象,如果不自行初始化,这个类型的默认值0 0.0
//布尔值:默认 false
//除了基本类型,其余默认值均为null
String name;
int age;
//main方法
public static void main(String[] args) {
//局部变量
int a = 10;
System.out.println(a);
//实例变量的使用
demo6 Demo6 = new demo6();
System.out.println(Demo6.name);
System.out.println(Demo6.age);
//类变量的应用
System.out.println(all);
}
//其他方法
public void add (){}
}
局部变量
局部变量是一个方法内的变量,随着方法的开始诞生,方法的结束而结束,只存在于方法内。
实例变量
实例变量存在于整个类,但是对于他的使用有特别的方法,现在还未完全了解。
类变量
类变量存在于整个类,可以直接使用。类变量要加上static。
常量
常量是不会变化的量,程序中用于绝对不能变化的值的处理,所以一般常量的级别可以放在类。如
static final doubul PI = 3.14
final static doubul PI = 3.14 //两种写法都可以
如果3.14作为程序中经常出现且不能改变的值,用常量去解决可以避免失误。
变量的命名规范
- 所有变量、方法、类名要求见名知意
- 类成员变量:首字母小写驼峰原则:monthSalary
- 局部变量:首字母小写驼峰原则
- 常量:大写字母和下划线: MAX_VALUE
- 类名:首字母大写和驼峰原则: Demo,GoodJob
- 方法名:首字母小写驼峰原则: add(), runRun()
变量补充
关于计算溢出
public class demo05 {
public static void main(String[] args) {
int money = 10_0000_0000;
System.out.println(money);
int year = 20;
int total = year*money;
System.out.println(total);//-1474836480 计算的时候溢出
long total2 = year*money;//尝试改用long
System.out.println(total2);//输出还是那个负数,并没有改变
//转换成long类型前,两个int类型已经进行了计算,计算已经溢出
//解决方法
long total3 = year*((long)money);//提前将一个int类型提升为long
System.out.println(total3);
}
}
计算溢出的原因是因为最后得出的值已经不能用当前变量类型,如上方例子,两个int类型的值相乘所得的结果已经溢出了int类型最大值,这个时候去提升变量的类型是没用的,计算已经处理了,溢出已经产生了,你提升变量类型的对象也是计算完毕后计算溢出得到的错误值。现阶段我学习到的唯一方法就是在计算的时候提升一个变量得类型
long total3 = year*((long)money);
这里就是将int类型得money用强制转换,将类型变为long。
关于类型转换
Java运算有时候可能会用到类型转换。类型转换分为强制类型转换和自动类型转换。
类型从低到高依次为:
byte,short,char,int,long,float,double。
从高到低需要强制转换,如:
public class Demo02 {
public static void main(String[] args) {
int a = 1 ;
//byte b = a; 这样写是不对的,int类型高于byte,不能自动转换,必须得强制转换
//正确写法
byte b = (byte)a;
System.out.println(b);
}
}
从低到高会进行自动类型转换,如:
public class Demo02 {
public static void main(String[] args) {
int a = 1 ;
long b = a;
System.out.println(b);//这样就完全没有问题
}
}
运算
运算工具类的使用
运算时,java有许多工具的使用,要多多积累。
public class Demo03 {
public static void main(String[] args) {
//幂运算
double pow = Math.pow(2, 3); //很多时候,我们会使用一些工具类来操作!这是2的三次方的运算。
System.out.println(pow);
}
}
逻辑运算
逻辑运算符
&&与(and) 有假就假
||或(or) 有真就真
!非(取反) 取反
短路运算
实例:
public class Demo04 {
public static void main(String[] args) {
int a = 1;
boolean b = (a>0)||(a++>3);
System.out.println(b);
System.out.println(a);// 运行结果为 b = true; a = 1;
}
}
public class Demo04 {
public static void main(String[] args) {
int a = 1;
boolean b = (a>2)&&(a++>1);
System.out.println(b);
System.out.println(a);// 运行结果为 b = false; a = 1;
}
}
两个例子,一个是或运算,一个是与运算,均发生了短路运算。短路运算就是当一个逻辑运算的式子只要能给出明确返回值的时候,就不会继续往后面运算。
在或运算中,只要判断出一个为真,整个式子返回就是真,后面的运算就没有意义了,也就不会计算,自然也就没有a++的运算。
与运算同理,只要判断出一个为假,也不会继续往后面做运算。
位运算
& 与
| 或
- ^ 异或 相同为0,不同为1
- 取反
<< 就是*2
>> 就是/2
位运算效率极其高!
+号的作用—字符串连接符
当输出中有""是,看作这是一个string,虽然没有出现 string。而当""与+号合作,意思就是将一个内容添加进""中去,如:
public class Demo05 {
public static void main(String[] args) {
int a = 10;
int b = 30;
System.out.println(""+a+a); //1010
System.out.println(a+a+""); //20
}
}
可以看见,第一个输出,1010是将a与a连接起来的效果,但第二个输出却是a与a相加的结果。这是因为,当""放在前面,先执行String,也就是直接执行了字符串,没有让a与a相加。而第二个先执行了a与a相加,再执行String,就是将相加后的结果填入""。
验证结论,又做了个实验:
public class Demo05 {
public static void main(String[] args) {
int a = 10;
int b = 30;
System.out.println(a+""+a+a); //101010
System.out.println(a+a""+a+a);//201010
}
}
三元运算
public class Demo06 {
public static void main(String[] args) {
//三元运算符 ? :
// x ? y : z
//意思就是x如果为真,则输出y,为假,则输出z
int score = 90;
String type = score > 80 ? "优秀" : "良好";
System.out.println(type);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理