JavaSE 基础部分笔记

Java基础 笔记

b站up主 遇见狂神说 的 java零基础课程 笔记整理

先来看看最普遍的项目建立方式











  • 注释

    • 单行注释

      //

    • 多行注释

      /*

      */

    • 文档注释 - JavaDoc

  • 标识符

  • 数据类型

    • 强类型语言

      要求变量的使用要严格符号规定,所有变量都必须先定义后才能使用

    • 弱类型语言

      不严格规定->js等,

  • Java的数据类型分为两大类

    • 基本类型(primitive type)
    • 引用类型(reference type)

long num4= 30L;
float num5 = 50.1F;
# 这两种需要特别标识
Integer
    # 这个ctrl加点击可以进入类的源码

字符串String并不在八大基本类型的范畴内

  • 数据类型拓展及面试题讲解

整数拓展:进制

二进制 十进制 八进制 十六进制
0b 0 0x

浮点数拓展

float f = 0.1f;
double d = 1.0/10;
System.out.println(f==d); # 输出为false
    
float f = 23333333333333333333f;
double d = f + 1;
System.out.println(f==d); # 输出为true

解释:float 有限且离散,有舍入误差,接近但不等于,这个应该和IEEE754标准下浮点数的精度问题类似

所以尽量避免使用浮点数进行比较

实际上上述f变小一些的话可以输出为false的

那么浮点数拓展? 银行业务怎么表示小数点?

BigDecimal 数学工具类


字符拓展

所有字符本质还是数字

编码 Unicode 表: (97 = a 65 = A) 2 字节 0-65536 U0000-UFFFF

char c1 = 'A';
char c2 = '中';

System.out.println(c1); # A
    
System.out.println((int)c1); # 强转类型,输出为65

System.out.println(c2); # 中
    
System.out.println(int)c2); # 强转类型,输出为20013
    
char c3 = '\u0061'
    
System.out.println(c3); # 输出为a

转义字符

\t 制表符 (空格)

\n 换行符


类型转换

主要就是强制类型转换(类型)变量名,即占字节更大的类型在与占字节更少的类型做运算时需要进行强转

反之的话不用


变量

  • 注意事项

    • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。

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

    • 变量声明是一条完整的语句,因此每一个声明必须以分号结束。

      说起来String是引用数据类型,非八大基本数据类型之一

变量作用域

  1. 类变量
  2. 实例变量
  3. 局部变量
public class Variable{
    static int allClicks = 0; // 类变量
    String str = "Hello World!"; // 实例变量
    
    public void method(){
        int i = 0; // 局部变量
    }
}
public class Demo8 {

    // 类变量 static
    static double salary = 2500;
    
    // 属性:变量

    // 实例变量:从属于对象;如果不自行初始化,这个类型默认值为0,0.0,null
    // 布尔值:默认是false
    // 除了基本类型,其余的默认值都是null;
    String name;
    int age;

    //main 方法
    public static void main(String[] args) {

        // 局部变量:必须声明和初始化值
        int i = 10;
        System.out.println(i);

        // 变量类型 变量名字 = new Demo08();
        Demo8 example_demo08 = new Demo8();
        System.out.println(example_demo08.age);
        System.out.println(example_demo08.name);
    }
}

常量

final 常量名 = 值;
final double PI = 3.14;
// 常量名一般常用大写字符
public class Demo9 {
    static final double PI = 3.14;
    // final static double PI = 3.14;
    // 修饰符,不存在先后顺序->final

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

变量命名规范

类成员变量:首字母小写加 驼峰原则->除第一个单词外后面单词首字母大写

局部变量: 首字母小写加驼峰原则

常量:大写字母加下划线:MAX_VALUE

类名:首字母大写和驼峰原则:Man, GoodMan

方法名:首字母小写和驼峰原则:run(), runRun()


运算符

  • 算数运算符:+, -, *, /, %, ++, --
  • 赋值运算符:=
  • 关系运算符:>, <, >=, <=, ==, instanceof
  • 逻辑运算符:&&, ||, !
  • 位运算符: &, |, ^, ~, >>, <<, >>>
  • 条件运算符: ? :
  • 扩展赋值运算符: +=, -=, *=, /=
public class Demo01 {
    public static void main(String[] args) {
        // 二元运算符
        // CTRL + D 复制当前行到下面一行
        int a = 10;
        int b = 15;
        int c = 20;
        int d = 25;

        System.out.println(a+b);
        System.out.println(a-b);
        System.out.println(a*b);
        System.out.println(a/b);    // a,b都是int类型,2/3也会以int形式输出,即变为0
        System.out.println(a/(double)b); // 强转一个类型,默认另一个也会能自动转的话也会自动转
    }
}

记录一下经典的自增自减运算符吧

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

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

然后就是幂运算,实际上是调用Math类,这个Math在idea中也可以通过CTRL + 鼠标左键查看源码

// 幂运算 2^3
double pow = Math.pow(2,3);
System.out.println(pow); // 8.0

逻辑运算符

&& : AND

|| : OR

! : NOT

public class Demo05 {
    public static void main(String[] args) {
        // 短路运算
        int c = 5;
        boolean d = (c<4)&&(c++<4);
        System.out.println(d); // false
        System.out.println(c);	// 5
        // 这意味着AND运算符在第一个条件判错后就不再判断后一个条件了,因此c的自加运算并没有被执行
    }
}

位运算

略,用的时候网上查吧

或者比如×2的倍数可以用<<

接近底层,效率高一些

扩展赋值运算符

同略 +=, -= ......

不过这儿还讲了个字符串连接符号

public class Demo06 {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

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

        // 字符串连接符
        System.out.println(""+a+b);	// 1020
        // 对照组
        System.out.println(a+b+"");	// 30
        // 对照组
        System.out.println(a+""+b);	// 1020
    }
}

只要“”不是在最后,+就不会正常运算,而是以字符形式输出

三元运算符

x ? y : z

如果 x == true, 返回y,否则返回z

运算优先级


包机制

为了防止命名重复,就和windows下的文件夹作用类似

为了更好地组织类,Java提供了包机制,用于区别类名的命名空间

包语句的语法格式为:

package pkg1[. pkg2[. pkg3...]]

正常公司开发都是域名倒置作为包名,如百度写成com.baidu.www

举个栗子




为了能够使用某一个包的成员,我们需要在Java程序中明确导入该包,使用import语句就可以完成此功能

这样的话调用类就很方便了

比如我想调用Date这个类

那么只用写:

import java.util.Date;
// 如果想把util包下所有的java类都导入的话
import java.util.*;
// 大功告成!

实际上idea里你用的时候可以双击直接帮你导入

和c的include很像噢

上个阿里巴巴java开发手册链接

平常参考参考,本地放在E:\backup\specified_language\java目录下


JavaDoc

API文档:用以说明这些应用程序接口的文档,是在java语言中详细说明了每一个类,方法的功能以及用法等内容的文档。

开发一个大型软件时,需要定义成千上万的类,而且需要很多人参与开发。每个人都会开发一些类,并在类里面定义一些方法,成员变量提供给其他人使用。但其他人怎么知道如何使用这些类和方法呢? 这时候就需要提供一份说明文档,用于说明每个类,每个方法的用途。当其他人使用一个类或者一个方法时,他无需关系这个类或者方法的具体实现,只需要知道这个类或者方法的功能即可,然后使用这个类或者方法来实现具体的功能,也就是通过调用应用程序接口(API)来编程。API文档就是用以说明这些应用程序接口的文档。对于java语言而言,API文档通常详细的说明了每一个类,方法的功能以及用法等。

Java JDK8 API在线文档链接

javadoc命令是用来生成自己的API文档的

举个栗子

/**
 * @author JasonZhu
 * @version 1.0
 * @since 1.8
 */

public class Doc {
    String name;

    /**
     * @author JasonZhu
     * @param name
     * @return
     * @throws Exception
     */
    public String test(String name) throws Exception{
        return name;
    }
}

那么就会有同学问了(滑稽),这个javadoc和正常的注释有啥区别呢?

答:可以用javadoc生成对应的API文档!

然后在对应文件下打开cmd,输入javadoc ......

那么如何用IDEA生成JavaDoc文档呢?

答:万能的百度->IDEA生成JavaDoc文档

总结一下的话就是用IDEA的TOOL里面的Generate JavaDoc,稍微选择一下配置


妙哉!Java基础部分就到这了!

posted @ 2022-07-05 23:35  Jason_CodingNoob  阅读(19)  评论(0编辑  收藏  举报