Java学习笔记(Day 5)

变量

变量分为成员变量和局部变量,成员变量在整个类内都有效,而局部变量只在声明它的方法内有效。成员变量又分为实例变量和类变量。

变量规范

  • 一个变量里不要定义多个值

  • 每个变量都要有类型(数据类型和引用类型都可以)

  • 变量名必须是合法的标识符

  • 变量声明后要以分号结尾

    int a = 1;
    int b = 2;
    int c = 3;//注意程序可读性
    String d = "sgh";
    
变量的命名规范
  • 所有的变量、方法及类名起名时都要能够见名知意。
  • **成员变量:**起名时除了第一个单词外,后面的单词首字母要大写。
  • **局部变量:**起名时除了第一个单词外,后面的单词首字母要大写。
  • **方法名:**起名时除了第一个单词外,后面的单词首字母要大写。
  • **常量:**使用大写字母,两个或多个单词中间使用下划线。
  • **类名:**所有单词首字母大写

变量作用域

局部变量

它在方法中,使用时必须声明初始化值。只在它的方法内才能使用

public class Variable {//类
    //在类中可定义方法及属性
    public static void main(String[] args) {//main方法,在类中
        //局部变量
        int i = 1;
        System.out.println(i);//输出1
    }
}
实例变量

它在方法外,在类的里面。它从属于对象(类:在类中可定义方法及属性(变量)),无需初始化。

  • 若在实例变量中未进行初始化,系统会为其分配一个初始值

  • 所有的数值类型(long,int,short,byte,float,double)均会初始化为 0 或 0.0

  • 布尔值默认值(初始值)为false

  • 字符型初始值’\u0000’的编码值为NULL,表示的意思就是空字符。所以输出时为空字符。

  • 除了八大基本数据类型,其余的默认值都为null

    public class Variable {//类
        //在类中可定义方法及属性
        String vegetable;
        int money;
        float sum;
        char num;
        boolean a1;
        public static void main(String[] args) {//main方法,在类中
            //实例变量
            //变量类型  变量名称  = new 变量类型
            Variable v1 = new Variable();
            //输出查看值
            System.out.println(v1.vegetable);//string --> "null"
            System.out.println(v1.money);//int --> "0"
            System.out.println(v1.sum);//float --> "0.0"
            System.out.println(v1.num);//char --> ""
            System.out.println(v1.a1);//boolean --> false
        }
    }
    

输出结果如下图所示

实例变量图片

类变量

它在方法外,在类的里面。它从属于对象,无需初始化()。

(除需添加一个static,且在方法中调用时不需要new来分配内存外,其余目前来看与实例变量并无区别)

用关键字static给予修饰**(其余未加static的为局部变量)**,也称为静态变量。

注:static需放在变量的类型前面

public class Variable {//类
    //在类中可定义方法及属性
    static double sum;

    public static void main(String[] args) {//main方法,在类中
        //类变量
        System.out.println(sum);//输出0.0
    }
}
实例变量与类变量的联系与区别

**联系:**都是在整个类内有效

**区别:**类变量需在定义名字(有时还会定义数值)时添加static,实例变量在方法中调用时需要new来分配内存

成员变量的隐藏
  • 如果局部变量的名字与成员变量的名字相同时,成员变量会被隐藏,即这个成员变量在这个方法内暂时失效。
public class Variable {//类
    //在类中可定义方法及属性
    double sum = 30;
    int num = 2;

    public static void main(String[] args) {//main方法,在类中
        //实例变量
        int sum = 20;
        System.out.println(sum);//输出值为20,而不是30.0。如果方法中没有"int sum = 20;",sum的值将为30.0。
    }
}
  • 如果想在该方法内使用被隐藏的局部变量,则必须使用this关键字(this可以出现在构造方法和实例方法中,但不可以出现在类方法中)
public class Variable {//类
    //在类中可定义方法及属性
    double sum = 30;
    int num = 2;
    public static void main(String[] args) {//main方法,在类中
        //实例变量
        int sum = 20;
        Variable v1 = new Variable();
        System.out.println(v1.sum);//调用构造方法中的变量,输出值为30.0。
        System.out.println(sum);//输出值为20。
    }
}

常量

常量用final表示

public class Variable {//类
    //在类中可定义方法及属性
    //修饰符(变量类型前都为修饰符)不存在先后顺序
    static final double sum = 8.88;
    final static double num = 9.99;
    public static void main(String[] args) {//main方法,在类中
        System.out.println(sum);//输出8.88
        System.out.println(num);//输出9.99
    }
}

运算符

很多运算会使用一些工具类来操作(调用Math类包,在该包中找到想要使用的方法)

算术运算符与算术表达式

加、减、乘、除和求余运算符(属于二目运算符,即连接两个操作元的运算符)。

算术表达式:用算术符号或括号连接起来的符合Java语法规则的式子

**注:**在进行运算时注意数据类型的作用范围,及时进行数据类型的转换

public static void main(String[] args) {
    //二元运算符
    //Ctrl+D:复制当前行到下一行
    int a = 10;
    int b = 20;
    int c = 30;
    int d = 40;
    System.out.println(a+b);//输出30
    System.out.println(a-b);//输出-10
    System.out.println(a*b);//输出200
    System.out.println(a/b);//输出0
    System.out.println(a/(double)b);//注意数据类型的作用范围,输出0.5
    System.out.println(a%b);//输出10(上0余10)
    System.out.println((a+3)*b+c*d);//输出1460
}

算数混合运算的精度

精度从低至高排列:byte short char int long float double

  1. 如果表达式中有double类型,则按双精度进行运算
  2. 如果表达式中有float型,则按单精度进行运算(float和double同时出现,按双精度进行运算)
  3. 如果表达式中最高精度是long,则按long精度进行运算
  4. 如果表达式中最高精度低于int型或为int型,则按int精度进行运算
public static void main(String[] args) {
    float f = 0.5565F;
    double e = -4.9E-324;
    long a = 888888888888L;
    int b = 2147483647;//int最高值
    short c = 32767;//short最高值
    byte d = 127;//byte最高值
    //有long类型输出时也为long类型
    System.out.println(a+b+c+d);//输出891036405429(long)
    //如果表达式中最高精度低于int型,则按int精度计算
    System.out.println(b+c+d);//输出-2147450755(按int计算,超出了int的取值范围,所以溢出,无法正确输出)
    System.out.println(c+d);//输出32894(int)
    System.out.println(f+e);//输出0.5565000176429749(double)
    System.out.println(a+f);//输出8.8888889E11(float)

}

关系运算符

含义用法运算符结合方向
大于op1>op2>从左到右
小于op1<op2<从左到右
等于op1=op2==从左到右
不等于op1!=op2!=从左到右
大于等于op1>=op2>=从左到右
小于等于op1<=op2<=从左到右

关系运算返回的结果为true/false,即布尔值

public static void main(String[] args) {
    int a = 60;
    int b = 90;
    System.out.println(a>b);//输出false
    System.out.println(a<b);//输出true
    System.out.println(a==b);//输出false
    System.out.println(a!=b);//输出true
    System.out.println(a<=b);//输出true
    System.out.println(a>=b);//输出false
}

自增、自减运算符

含义用法运算符
先给op2赋值,再进行自增运算(op1+1)op2=op1++++
先对op1自增,再为op2赋值op2=++op1++
先给op2赋值,再进行自减运算(op1-1)op2=op1–
先对op1自减,再为op2赋值op2=–op1

注:op1进行自增或自减运算时,自己本身的数值要改变

public static void main(String[] args) {
    int a = 5;
    int b = a++;//先给b赋值(b=5),再进行自增运算(a=a+1=6)
    int c = ++a;//先对a运算(a=a+1=6+1=7),再给c赋值(c=7)
    System.out.println(a);//输出7
    System.out.println(b);//输出5
    System.out.println(c);//输出7
}

逻辑运算符与逻辑表达式

含义用法运算符结合方向
逻辑与op1&&op2&&从左到右
逻辑或op1||op2||从左到右
逻辑非!op!从右到左

使用逻辑运算符进行逻辑运算

op1op2op1&&op2op1||op2!op1
truetruetruetruefalse
truefalsefalsetruefalse
falsetruefalsetruetrue
falsefalsefalsefalsetrue
------------全为真则为真,其余为假全为假则为假,其余为真如果是真则为假,如果是假则为真

示例如下:

public static void main(String[] args) {
    //与(and) 或(or) 非(取反)
    boolean a = true;
    boolean b = false;

    System.out.println("a && b:"+(a&&b));//输出 a && b:false
    System.out.println("a || b:"+(a||b));//输出 a || b:true
    System.out.println("!(a && b):"+!(a&&b));//输出 !(a && b):true
}

短路运算

当逻辑与运算时,若第一个数据就为假时,那么第二个程序将不被执行。

//短路运算
int c = 8;
boolean d = (c<7)&&(--c<7);//若执行了"--c<7"这一程序,那么c的值则应为7
System.out.println(d);//输出false
System.out.println(c);//输出8,证明没有执行第二个程序

位运算符

用于二进制的计算。0代表假,1代表真。下表中运算结果使用的例子:op1为 0101 0101

​ (异或操作使用例子为op1) op2为 0010 0011

含义用法运算符运算方法运算结果
op1&op2&有0为0,全1为10000 0001
op1|op2|有1为1,全0为00111 0111
非A即Bop1^op2^相同为0,不同为10111 0110
异或~op~取反操作1010 1010
左移op1<<op2<<左移几位乘以几个22<<3输出16
右移op1>>op2>>又移几位除以几个216>>3输出2

赋值运算符

含义用法运算符运算方法
op1+=op2+=op1=op1+op2
op1-=op2-=op1=op1-op2

字符串连接符

符号为:”+“。若字符串在前面,后面的会拼接;若字符串在后面,前面的依旧进行运算。

int a = 10;
int b = 20;
System.out.println(""+a+b);//输出1020
System.out.println(a+b+"");//输出30

三元运算符

x(表达式) ? y : z 如果x==true,则结果为y,否则结果为z

int sum = 100;
String num = sum>60 ? "合格":"不合格";//输出合格
System.out.println(num);

优先级

多使用”()“,可使优先级更加明确,代码更加清晰明了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值