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);
    }
}
posted @   老哥不老  阅读(73)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示