04:Java基础语法 || 牢固的地基终将铸就高楼大厦

Java基础语法

在Java开发的过程中,无规矩不成方圆,所有的规约都是为了代码的易读性,参考阿里巴巴开发手册。

为了方便管理,可以将所有Java代码都放在一个项目下面,步骤如下:

  1. 新建空项目

    File->New->Project->Empty Project

    image-20211101203507439

    结果如下图:

    image-20211101203642932

  2. 新建一个模块

    File->New Module->Java

    image-20211101203806906

    image-20211101203839041

    image-20211101203900738

  3. 项目结构

    image-20211101204028387

    image-20211101204123575

    image-20211101204236389

    image-20211101204310899

    image-20211101204325859

    image-20211101204433708

  4. 右键新建类,开始编写代码

    image-20211101204558004

  5. 运行成功,环境搭建成功

一、注释

书写注释是一个非常好的习惯,注释不会执行,只会给写代码的人看,注释总共有三种:

  • 单行注释

    一行注释

  • 多行注释

    可以注释多行

  • 文档注释

    见JavaDoc

1. 单行注释

// 注释内容:使用//开头,同一行后边的东西会被注释掉

image-20211101205002058

2. 多行注释

/* 注释内容 */ : 使用 /* 开头,加注释内容,使用 */ 结尾

image-20211101205353029

3. 文档注释

/** 开头,*/ 结尾,中间可以加参数。

JavaDoc:文档注释

image-20211101205626672

4. 有趣的代码注释

image-20211101205850479

image-20211101205959253

二、标识符

类名、方法名、变量名等

  • 类名:

    image-20211101210604009

  • 方法名

    image-20211101210622059

  • 变量名:

    image-20211101210542305

    注意:

    1. 所有的标识符都应以字母(A-Z,a-z)美元符($)下划线(_)开始。
    2. 首字母之后可以是:字母(A-Z,a-z)美元符($)下划线(_)数字的任意组合。
    3. 不能使用关键字作为变量名或方法名。
    4. 标识符是大小写十分敏感的
    5. 可以使用中文命名,但是很LOW,也不建议用拼音。

三、关键字

关键字并不多,大概如下:

image-20211101211308832

四、数据类型

Java是强类型语言,要求变量的使用要严格符合规定,所有变量要先定义后使用,安全性高但处理速度会降低

1. 数据类型

image-20211101212135682

2. 字节,位,字符

image-20211101213315704

五、类型转换

image-20211106143451243

注意点:

  1. 不能对布尔值进行转换
  2. 不能把对象类型转换为不相干的类型
  3. 把大容量转换为低容量的时候强制转换,反之自动转换
  4. 转换的时候可能存在内存溢出,或者精度问题
public class Demo04 {
    public static void main(String[] args) {
        int i = 128;

        //强制转换:  (类型)变量名  从高转到低
        byte b = (byte) i;//内存溢出

        //自动转化    低到高
        double c = i;


        System.out.println(i); //128
        System.out.println(b); //-128

        System.out.println((int)23.7); //23
        System.out.println((int) -45.89f); //-45

        char c1 = 'a';
        int d = c1 + 1;
        System.out.println(d); //98
        System.out.println((char) d); //b
    }
}
import javax.crypto.spec.PSource;

public class Demo06 {
    public static void main(String[] args) {
        //操作比较大的数的时候,注意溢出问题、
        //Jdk7 新特性,数字之间可以用下划线分割
        int money = 10_0000_0000;
        System.out.println(money);
        int years = 20;
        int total = money*years;// 计算的时候溢出了  -1474836480
        System.out.println(total);
        long total2 = money*years;  //还是不行,默认是int ,会先计算出结果,再转换为long,
                                    // 转换之前已经存在问题了  -1474836480
        long total3 = money*((long)years); //先把一个数转换为long
        System.out.println(total2);

        // L l long的大小写是没区别的,但是在代码中小写的l和1容易混淆,所以常用大些的L
    }
}

六、变量、常量

1. 变量

image-20211101212028213

public class Demo07 {
    public static void main(String[] args) {
//      int a = 1,b = 2, c = 3;  //不推荐使用,要保持程序的可读性
        String name = "DearLiu";
        char x = 'X';
        double pi = 3.14;
    }
}

image-20211106150913235

  1. 类变量 :
    需要加static
  2. 实例变量 :
    没有static
  3. 局部变量:
    在方法里面
public class Demo08 {
    //类里面除了方法,还能定义属性(变量)

    //实例变量:在类里面,方法外面,从属于对象,不用初始化
    //默认值是 0  0.0
    //布尔值的默认值是false
    //除了基本类型,其余的默认值都是null
    String name;
    int age;

    //类变量 static 存属于类,随类消失而消失

    static double salary = 2500;
    //主程序方法  main方法
    public static void main(String[] args) {
        //局部变量;使用之前必须声明和初始化值
        int i = 10; //i 只能在main方法里使用
        System.out.println(i);

        //实例对象的使用
        //变量类型 变量名字 = new Demo08();
        Demo08 demo08 = new Demo08();
        //如果不自行初始化,会输出这个类型的默认值
        System.out.println(demo08.age);
        System.out.println(demo08.name);

        //类变量 可以直接输出 
        System.out.println(salary);
    }

    //其他方法
    public void add(){

    }
}

2. 常量

image-20211106152130569

public class Demo09 {

    //修饰符,不存在先后顺序
    static final double PI = 3.14;
    final static double PI1 = 3.14;

    public static void main(String[] args) {
        System.out.println(PI);
        System.out.println(PI1);
    }
}

3. 重点:变量的命名规则

image-20211106152556211

七、运算符

Java里面的等于用“==”判断

优先级:()里的先执行

image-20211106152902862

1. 算数运算符和赋值运算符

package operactor;

public class Demo01 {
    public static void main(String[] args) {
        // 二元运算符
        // Ctrl + D  : 复制当前行到下一行
        int a = 10;
        int b = 20;
        int c = 25;
        int d = 25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/(double)b);//注意作用范围 不然会直接丢掉小数
    }
}
package operactor;

public class Demo02 {
    public static void main(String[] args) {
        long a = 121212121212121L;
        int b = 123;
        short c = 10;
        byte d = 8;

         //取余  又叫模运算
        System.out.println(c%a);//    21 / 10 = 2 ... 1
        System.out.println(a+b+c+d);//Long
        System.out.println(b+c+d);//Int
        System.out.println(c+d);//Int  cast:转换
    }
}

2. 关系运算符

package operactor;

public class Demo03 {
    public static void main(String[] args) {
        //关系运算符返回的结果:正确,错误 为布尔值

        int a = 10;
        int b = 20;
        int c = 21;
        
        System.out.println(a>b);
        System.out.println(a<b);
        System.out.println(a==b);
        System.out.println(a!=b);
    }
}

3. 自增,自减运算符

package operactor;

public class Demo04 {
    public static void main(String[] args) {
        // ++  --  自增 自减  一元运算符
        int a = 3;
        int b = a++; //a++ 执行这行代码后,先给b赋值,再自增  b=3
//      a = a + 1  //a =4
        System.out.println(a);//4

//      a = a + 1  //a = 5
        int c = ++a; //++a  执行这行代码前,先自增,再给b赋值  c = 5

        System.out.println(a);//5
        System.out.println(b);//3
        System.out.println(c);//5

        //幂运算 2^3 = 2*2*2 = 8  很多运算 会使用一些工具类来操作
        double pow = Math.pow(2,3);
        System.out.println(pow); //8
    }
}

4. 逻辑运算符

package operactor;

//逻辑运算符
public class Demo05 {
    public static void main(String[] args) {
        //与(and)  或(or)  非(取反)
        boolean a = true;
        boolean b = false;

        System.out.println("a && b:" + (a && b));//逻辑与运算:两个都为真 结果为真
        System.out.println("a || b:" + (a || b));//逻辑或运算:两个都为假 结果为假
        System.out.println("! (a && b):" + !(a && b));//如果为真 则为假 如果为假 则为真

        //短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d);//false
        System.out.println(c);//5 因此当与前面为错的时候,后边不会执行
    }
}

5. 位运算符

package operactor;

//位运算符
public class Demo06 {
    /*
    A = 0011 1100
    B = 0000 1101

    A&B 0000 1100   (都为1才为1 有0则为0)
    A|B 0011 1101  (都为0才为0 有1则为1)
    A^B 0011 0001  (相同为0 相反为1)
    ~B  1111 0010  (取反)

    面试题:
        2*8 怎么运算最快  2 * 2 * 2 * 2

    位运算 效率 极其的高

    <<左移   相当于把数字 *2
    >>右移   相当于把数字 /2
    0000 0000    0
    0000 0001    1
    0000 0010    2
    0000 0011    3
    0000 0100    4
    0000 1000    8
    0001 0000    16
     */
    public static void main(String[] args) {
        System.out.println(2<<3);
    }
}

6. 条件运算符(三元运算符)

package operactor;
//三元运算符
public class Demo08 {
    public static void main(String[] args) {
        //x ? y : z
        //如果x == true,则结果为y,否则为z
        int score = 80;
        String type = score < 60 ? "不及格" : "及格";
        System.out.println(type); //及格
    }
}

7. 扩展赋值运算符

package operactor;

//扩展赋值运算符
public class Demo07 {
    public static void main(String[] args) {

        int a = 10;
        int b = 20;

        a+=b;//a = a + b   a = 30
        a-=b;//a = a - b   a = 10
        System.out.println(a);  //10

        //字符串连接符  +  , String  会把其他的都转换成字符串 拼接起来
        System.out.println("" + a + b); //"10"+"20"   1020

        //这两个结果有什区别:
        System.out.println("" + a + b); //1020 先拼接 后运算
        System.out.println(a + b + ""); //30  先运算 后拼接
    }
}

八、包机制、JavaDoc

1. 包机制

image-20211106204408320

  1. 包的本质就是一个文件夹

  2. 包名是有规范的 比如www.baidu.com,包名就是:com.baidu.www
    image-20211106212910219
    image-20211106213053709

  3. 在包里面建的类会自动把包路径导入

    image-20211106213230142

  4. 使用其他包的东西,需要导入,但是包里面的类名还是不要重复

  5. “ * ”为通配符,可以直接导入同一个包下所有类

    image-20211106213600215

2. JavaDoc

Javadoc命令是用来生成自己的注释文档的。

image-20211106215457366

1. 生成步骤方法一:使用控制台javadoc命令

  1. idea选择

image-20211106220054736

  1. 在代码路径下进入控制台

    image-20211106220400115

  2. 输入javadoc 文件名

    image-20211106221003686

  3. 回车出结果

image-20211106221032530

会发现在目录下会出现一大堆东西:

image-20211106221136938

需要关注这个index.html

image-20211106221215734

  1. 点击 会发现文档已经生成

    image-20211106221255332

2. 生成步骤方法二:IDEA直接生成

  1. 在IDEA中点击 Tools > Generate javadoc:

    image-20211106231839550

  2. 进入进行选择

    image-20211106231753578

    内容解释:

    Whole project:整个项目都生成文档
    Custom scope: 自定义范围。
    include JDK and … : 包含jdk和其他的第三方jar
    link to JDK documentation…: 链接到JDK api
    output directy :生成的文档存放的位置
    private、package、protected、public :生成文档的级别(类和方法)
    Generate…:是选择生成的文档包含的内容,层级树、导航、索引…
    Generate右边的@:是生成的文档包含的内容信息,作者版本等信息
    Locale :语言类型,zh-CN 或者不填
    Other command line arguments: 其他参数
    Maximum heep… :最大堆栈

    建议使用UTF-8编码、否则会出现中文乱码: -encoding UTF-8 -charset UTF-8
    ————————————————
    版权声明:本文为CSDN博主「喜欢吃绝味鸭脖」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/qq_42658739/article/details/102531538

  3. 点击ok,等待结束

    image-20211106232020437

  4. 文件目录下,点击index.html查看

    image-20211106232123233

    image-20211106232209869

3. 帮助:JDK8帮助文档

链接:JDK8帮助文档

image-20211106215436180

重点:数据类型拓展及面试题讲解

代码调试步骤:

  1. 在要调试的代码行前点击,出现红点

    image-20211101214343175

  2. 点击调试

    image-20211101214450953

  3. 进行下一步,运行下一步代码
    image-20211107201905620

1. 整数拓展

//整数拓展:进制      二进制:0b   十进制   八进制:0    十六进制:0x
     int i = 10;
     int i1 = 010; //八进制0
     int i2 = 0x10; //十六进制0x   0-9 A-F

     System.out.println(i);
     System.out.println(i1);
     System.out.println(i2);

运行结果

2. 浮点数拓展

//浮点数拓展  银行业务怎么表示? BigDecimal  数学工具类 用它来比较
     //浮点数是有限离散的  它只是接近但不等于
     // 最好完全避免使用浮点数进行比较
     float f = 0.1F;
     double d = 1.0/10;

     System.out.println(f == d);

     float d1 = 2112131321f;
     float d2 = d1 + 1;
     System.out.println(d1 == d2);

运行结果

3. 转义字符

 //转义字符
        //  \t 制表符
        //  \n 换行符
        //...

运行结果

4. 字符串比较

 System.out.println("------------");
        String sa = new String("HelloWorld!");
        String sb = new String("HelloWorld!");

        System.out.println(sa == sb);

        String sc = "HelloWorld!";
        String sd = "HelloWorld!";
        System.out.println(sc == sd);

        //从内存分析 是不一样的

运行结果

5. 布尔值拓展

 //布尔值扩展
        boolean flag = true;
        if (flag == true){}//新手
        if (flag){}//老手
        //Less is more!代码要精简宜读。
posted @ 2021-11-06 23:27  Laxsilence  阅读(57)  评论(1)    收藏  举报