Java基础

106 阅读5分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」。

Java基本语法

关键字、保留字

关键字指被Java语言赋予特殊含义,用作专门用途的字符串(单词)(关键字中的所有字母都为小写

保留字指现有Java版本尚未使用,但以后可能会作为关键字,标识符命名时避开(goto 、const)

标识符

Java中各种变量、方法、类的命名时使用的字符序列为标识符(自己取名的地方)

命名规则:

  • 26个英文字母(大小写)、数字、_ 、$组成并严格区分大小写
  • 数字不能开头、不能包含空格
  • 不能使用关键字、保留字,但可包含关键字、保留字
public class text {//单行注释,类名一般首字母大写,方法和变量的标识符第二个单词首字母大写(驼峰原则)eatFood
    int $45=100;
    //int 3ash=20;//字母不能作为标识符开头
    int 年龄=21;//汉字可以作为标识符,与c不同,但一般不建议
    //int class;
    int _gdeu$=100;//_可以开头
    public static void main(String[] args) {
        System.out.println("第一个Java程序,hello world");
    }
}

命名规范(不强制,建议)

包名:多单词组成时都小写:xxxyyyzzz

类名、接口名:多单词组成时每个单词首字母大写:XxxYyyZzz

变量名、方法名:多单词组成时首个个单词首字母小写,其他单词首字母大写:xxxYyyZzz

常量名:所有字母都大写,多单词组成时下划线连接:XXX_YYY_ZZZ

注意:起名时尽量做到见明知意

​ 汉字可以作为标识符,但一般不建议

常量

/**
 * 常量指一个固定的值1,2,3或'a''0',true false "hello world"
 * 不能被修改
 * final可以用来修饰一个符号常量,不可被修改
 * 符号常量命名大写和下划线NAME_MY
 *整型常量,默认是int,比如说下方的21,8,都是int型
 *浮点型常量默认类型是double型
 */
public class text {
    public static void main(String[] args) {
        int age=21;//21是常量age是变量
        String name="AHA";//AHA是常量,name是变量,name可以被修改
        name="AHFJFJA";
        final int x=8;
        //x=10;//报错,符号常量,不可被修改

    }
}

变量

变量是内存中的一个存储区域,可以变化,变量是程序中最基本的存储单元

作用:在内存中保存数据

注意:必须先定义在使用

​ 注意变量的作用域

分类:成员变量:类里定义的变量(存在于堆内存中,和类一起创建)

​ 局部变量:在方法(类似于C中的函数)中定义(存在于栈内存中,当方法执行完成,让出内存,让其他方法来使用内存)。

public class VariateTxet{
    int a;//此处是成员变量(从属于对象)需要创建对象// ,成员变量无初始化会自动赋值
    static int b;//静态变量,从属于类,类在它就在
    //变量未定义,不能使用
    public static void main(String[] args){
        int age=100;
        int print=50;
        System.out.println(print);//java可以直接输出变量的值,不需要%d之类的,以及双引号,但可能只能输出一个
    }
    public void text(){
        int big;//变量的作用域是从属于方法/语句块(大括号)上面的大括号及与其匹配的括号
        //big=big+5;//报错,未进行初始化,所有局部变量使用前都必须初始化
    }
    //big=100;超出了big的作用域

}

基本数据类型

  • 数据类型:

  • 基本:数值——short、int、long、byte (|bait|) 占用字节(2、4、8、1)都表示整型、范围不一样

  • float、double占用字节(4、8)

  • 字符:char(2个字节、非一个)

  • 布尔:boolean(一位)

  • 引用(对象): 类——class(字符串是一个类 类型)

(引用四个字节)数组——array

​ 接口——interface

整型
public class datetype {
    public static void main(String[] args) {
        /**byte正负128(除128)short 65535/2 =(32768) int 21亿
         *  整型:十进制
         *      八进制:以0开头 015
         *      十六进制:以0x/0X开头
         *      二进制0b/0B开头
         */
        int a=15;
        int b=015;
        int c=0x15;
        int d=0b1101;
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        long y=12345;//可以不加L,因为小于int,自动看成int,long进行了自动类型提升(下面有讲解)
        long x=7000000000L;/*L,l都可以,x是长整型变量、但7000000000是常量,整形常量默认是int不够常量加L,l*/
        //声明long型变量,超过int型必须以‘l’,‘L’结尾

    }

}
浮点型
import java.math.BigDecimal;

/**
 * java中float精确到7位,double精度时float的两倍
 * float中赋值3.14后需要加F/f
 *float表示的数值比long还大(和科学计数法表示有关系)
 *一般用double
 */
public class floatdouble {
    public static void main(String[] args) {
        float y=3.14F;
        double z=6.28D;//D可加可不加
        System.out.println(y);
        System.out.println(z);
        //浮点数不精确、一定不要用于比较
        float o=0.1f;
        double p=1.0/10;
        System.out.println(o==p);//结果为false
        float a=42343242F;
        float b=a+1;
        System.out.println(a==b);//结果是相等
        System.out.println("***************");
        BigDecimal bd = BigDecimal.valueOf(1.0);
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        bd = bd.subtract(BigDecimal.valueOf(0.1));
        System.out.println(bd);//0.5
        System.out.println(1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1);//0.5000000000000001
        BigDecimal bd2 = BigDecimal.valueOf(0.1);
        BigDecimal bd3 = BigDecimal.valueOf(1.0/10);
        System.out.println(bd2.equals(bd3));
    }
    /**
     *   java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。
     *   BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算。
     */
}
字符型
/**
 * 占两个字节unicode编码表
 * ‘a'是一个字符
 */
public class cha {
    public static void main(String[] args) {
        char cchar='A';
        char echar='中';//单引号是字符,双引号是字符串(其他国家语言也可以)
        /*也可以用0——65536之间的编码‘\u0000’到'\FFFF'十六进制形式表示*/
        char b='\u0061';
        System.out.println(b);
        //转义字符
        System.out.println('a'+'b');//+使a,b变成数字(对应ASCⅡ码值)
        System.out.println(""+'a'+'b');//“”用字符串使a,b输出
        System.out.println(""+'a'+'\n'+'b');//\n换行
        System.out.println(""+'a'+'\t'+'b');
        System.out.println(""+'a'+'\''+'b');
        //char x="abc";//char不能赋字符串
        String x="abc";//String是字符序列
    }
}
布尔类型
/**
 * boolean在字节中占一位,不是一个字节
 * 只有true和false两类,不能用0/1代替
 */
public class bool {
    public static void main(String[] args) {
        boolean man=true;//必须赋初值
        if(man) {//也可以是man==true,但不推荐,可能会出错(少输入一个=)
            System.out.println("男性");
        }
    }
}