JAVA基础语法(二)类型转换、变量、常量、运算符、包机制、javadoc

类型转换

运算中不同类型的数据先转换到同一类型,然后进行运算。

强制转换语法:(类型)变量名

public class App {

    public static void main(String[] args) {
        //强制转换    高容量转化到低容量
        int i =128;
        byte b = (byte)i; 
        System.out.println(i);
        System.out.println(b);//输出后为-128,是因为byte最高位127,128内存溢出
        //自动转换   低容量转化到高容量
        int i0 = 128;
        double b0 = i;
        System.out.println(i0);
        System.out.println(b0);
        System.out.println("===================================");
        System.out.println((int)20.7);
        System.out.println((int)-45.86F);
        /*
        注意事项:
        1、不能对布尔值进行转换
        2、不能把对象类型转换为不相干的类型
        3、在把高容量转化到低容量的时候,强制转换
        4、转换的时候可能存在内存溢出,或者精度问题
        */
    }
}

常见问题:

public class App {

    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题
        //JDK7新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        int years = 20;
        int total = money*years;//结果:-1474836480,计算的时候溢出了
        System.out.println(total);
        long total2 = money*((long)years);
        System.out.println(total2);//先把一个数转化为long
    }
}

变量

语法:变量名 = 值;

变量作用域:

  1. 类变量

  2. 实例变量

  3. 局部变量

    /**
     * App
     */
    public class App {
        //实例变量,在类中,从属对象,使用只可调用这个类,可以不初始化,会给个默认值
        String name;
        int age;
    
        //类变量    static
        static double salary = 2500;
    
        //main方法
        //属性变量
        public static void main(String[] args) {
    
            //局部变量;有效期只在本方法;必须声明和初始化
            int i = 1;
            System.out.println(i);
            //引用实例变量
            //变量类型 变量名字 = new 变量方法
            App app = new App();
            System.out.println(app.age);
            System.out.println(app.name);
            System.out.println(salary);
    
        }
        //其他方法
        public void add() {
            
        }
    }
    

注意:

  1. 每个变量都必须有类型,类型可以是基本类型,也可以是引用类型

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

  3. 变量声明是一条完整的语句,因此每一个声明都必须以分好结束

  4. 实例变量,在类中,从属对象,使用只可调用这个类,可以不初始化,会给个默认值( int、float等默认0、0.0;布尔值默认false;除了基本类型默认null)

  5. 局部变量,有效期只在本方法;必须声明和初始化


    变量的命名规范

    • 所有变量、方法、类名:见名知其意
    • 类成员变量:首字母小写和驼峰原则:mothSalary
    • 局部变量:首字母小写和驼峰原则
    • 常量:大写字母和下划线:MAX_VALUE
    • 类名:首字母大写和驼峰原则:Man,GoodMan
    • 方法名:首字母小写和驼峰原则:run(),runRun()

常量

常量可以理解为一个特殊变量,它的值被设定后,在程序运行过程中不允许被改变。

语法:final 常量名=值;

注:常量名一般使用大写字母。

public class App {
    //static 、final是修饰符,不存在先后顺序
    static final double PI = 3.14;
    public static void main(String[] args){
        System.out.println(PI);
    }
}

运算符

  • 算术运算符:+,-,*,/,%,++,--
  • 赋值运算符=
  • 关系运算符:>,<,>=,<=,==,!=,instanceof
  • 逻辑运算符:&&,||,!
  • 位运算符:&,|,^,~,>>,<<,>>>
  • 条件运算符:?:
  • 扩展赋值运算符:+=,-=,*=,/=

注:

  1. 当运算变量中有double为double(最高级),有Long类型时结果为Long,其他结果都是int

  2. 如果结果涉及小数,提前把变量变为double类型

  3. a++ 相当于a=a+1,执行这个代码,先赋值给b,再自增

  4. ++a 相当于a=a+1,执行这个代码,先自增,再赋值

  5. 很多运算我们用工具类运算,例如Math类

    package base;
    
    /**
     * App
     */
    public class App {
    
        public static void main(String[] args) {
            //二元运算符
            int a =10;
            int b =21;
            int c =30;
            int d =35;
            System.out.println(a+b);
            System.out.println(a-b);
            System.out.println(a*b);
            System.out.println(b%a);
            System.out.println(a/(double)b);//如果结果涉及小数,提前把变量变为double类型
            System.out.println("====================================");
            long a1 = 12323131313131313L;
            int b1 = 123;
            short c1 = 10;
            byte d1 = 8;
            System.out.println(a1+b1+c1+d1);
            System.out.println(b1+c1+d1);
            System.out.println(a1+(double)b1);
            System.out.println(c1+d1);//当运算变量中有double为double(最高级),有Long类型时结果为Long,其他结果都是int
            System.out.println("====================================");
            //关系运算符返回的结果:布尔值true、false
            System.out.println(c>d);
            System.out.println(c<d);
            System.out.println(c==d);
            System.out.println(c!=d);
            System.out.println("====================================");
            //++,--自增,自减  一元运算符
            int aa = 3;
            int bb = aa++;//a++ 相当于a=a+1,执行这个代码,先赋值给b,再自增
            System.out.println(aa);
            System.out.println(bb);
            int cc = ++aa;//++a 相当于a=a+1,执行这个代码,先自增,再赋值
            System.out.println(aa);
            System.out.println(cc);
            System.out.println("====================================");
            //幂运算 2^3  很多运算我们用工具类运算,例如Math类
            double pow = Math.pow(2, 3);
            System.out.println(pow);
    
        }
    }
    

package base;

/**
 * App
 */
public class App {
//逻辑运算符
    public static void main(String[] args) {
        //与(and)、或(or)、非(取反)
        boolean a = true;
        boolean b = false;
        System.out.println(a&&b);//逻辑与运算:两个变量都为真,结果才为true
        System.out.println(a||b);//逻辑或运算:两个边路有一个为真,结果才为ture
        System.out.println(!(a&&b));//逻辑非运算:如果是真,则变为假,如果是假,则变为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);//当c<4为假,后面将不再执行
        System.out.println(d);
        System.out.println(c);

    }
}

package base;

/**
 * App
 */
public class App {
//位运算
    public static void main(String[] args) {
        /*
        A = 0011 1100
        B = 0000 1101
        -------------------------------------------
        与:A&B = 0000 1100     都是1为1,否则为0
        或:A|B = 0011 1101     有1为1,否则为0
        异或:A^B = 0011 0001   相等为0,不等为1
        取反:~B = 1111 0010    完全取反
        -------------------------------------------
        题目:2*8 怎么运算最快   2*2*2*2
        <<
        >>
        */
        System.out.println(2<<3);
        /*
        结果为16
        0000 0000   0
        0000 0010   2
        0000 0100   4
        0000 1000   8
        0001 0000   16

        所以<<等于*2、>>等于/2
         */
    }
}
public class App {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;
        System.out.println(a+=b);//30,a = a+b
        System.out.println(a-=b);//-10,a = a-b
        System.out.println(a*=b);//200,a = a*b
        System.out.println(a/=b);//10,a = a/b,因为前面a已经变成了200,200/20=10
        //字符串连接符 +
        System.out.println(a+b);
        System.out.println(""+a+b);//结果:1020     如果+左右有string类型,那么会都自动转化为string再进行拼接
        System.out.println(a+b+"");//结果:30       如果string在最后,会先计算再拼接,因为+的优先级为从左到右
    }
}
/**
 * 三元运算符
 */
public class App {
    public static void main(String[] args) {
        //x ? y : z
        //如果x==true,则结果为y,否则为z
        int soure = 50;
        String type = soure < 60 ?"不及格":"及格";
        System.out.println(type);
    }
}

优先级:

包机制

作用:用于区别类名的命名空间(实际就是文件夹)

语法:package pkg1;

规范:一般将公司域名倒置作为包名

例子:www.baidu.com 命名:com.baidu.www

image-20210319184542640

看看阿里巴巴开发手册

javadoc

作用:javadoc命令是用来生产自己API文档的

参数信息:

  • @author 作者
  • @version 版本号
  • @since 指明需要最早使用的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @throws 异常抛出情况
package com.xiaobai;
/**
 * @author xiaobai
 * @version 1.0
 * @since 1.8
 */
import java.util.Date;
import com.base.Add;
public class App {
    String name;
    /**
     * 
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

cmd:javadoc -encoding UTF-8 -charset UTF-8 App.java

posted @ 2021-03-25 16:26  77的小白  阅读(55)  评论(0)    收藏  举报