标签 JAVA基础 下的文章

public class Test{
    public static void main(String[] args){
        String s1 = null;
        String s2 = "Hello Wolrd";
  
        //这里会出现NullPointerException异常,调用者不能为null
        System.out.println(s1.equals(s2));
        //此时不会有NullPointerException异常,底层会自动先判断空
        System.out.println(Objects.equals(s1,s2));
  
        //判断对象是否为null,等价于==
        System.out.println(Objects.isNull(s1)); //true
        System.out.println(s1==null); //true
  
        //判断对象是否不为null,等价于!=
        System.out.println(Objects.nonNull(s2)); //true
        System.out.println(s2!=null); //true
    }


}
Objects是一个工具类,提供了一些方法可以对任意对象进行操作。主要方法如下
方法名说明
public static boolen equals(Object a,Object b)先做非空判断 再比较两个对象
public static boolean isNull(Object obj)判断对象是否为null 为null返回true 反之
public static boolean nonNull(Object obj)判断对象是否不为null 不为null返回true 反之

toString()

public class Student {
    private String name;
    private int age;


    public Student() {
    }

    public Student(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

public class Test {
    public static void main(String[] args) {
        Student student = new Student("张三", 100);
        //Object 默认的toString方法没有用
        //需要子类覆写 toString方法
        System.out.println(student.toString());
        //控制台打印对象时  toString可以忽略
        System.out.println(student);
    }
}

equals()

/**
* 比较name和age全相同就返回true
*/
@Override
public boolean equals(Object o) {
  if (this == o) {
      return true;
   };
   if (!(o instanceof Student)) {
     return false;
   }
   Student student = (Student) o;
    return getAge() == student.getAge() && getName().equals(student.getName());
}

@Override
public int hashCode() {
   return Objects.hash(getName(), getAge());
}
Student student1 = new Student("李四", 88);
Student student2 = new Student("李四", 88);


//Object 默认equals的方法 用的时== 比较的时对象地址
boolean flag= student1.equals(student2);
System.out.println(flag);

hashCode()

算数运算符

算术运算符用在数学表达式中,它们的作用和在数学中的作用一样
操作符描述例子
+加法-相加运算符两侧的值A+B等于20
-减法-左操作数减去右操作数A-B等于-10
*乘法-相乘操作符两侧的值A*B等于200
/除法-左操作数除以右操作数A/B等于0
%取余-左操作数除以右操作数的余数B%A等于0
++自增操作数的值增加1B++或++B
--自减操作数的值减少1B--或者--B

前++与后++(--)

int B=10;
//后++
B++;//当前B=10;
B;//当前B=11;
//前++
B=10 //初始化
++B;当前B=11;

int d = --c; 拆分运算过程为: c=c-1=2; d=c=2, 最后结果为d=2,c=2

int b = ++a; 拆分运算过程为: a=a+1=4; b=a=4, 最后结果为b=4,a=4

+ - * / % += -= *= /= %= ++ --
//byte类型的变量以及char类型的变量在参与运算的时候
//会先提升int  
// i/0
//报错信息: ArithmeticException

JDK JRE JVM

JDK (Java Development Kit) 是 Java 开发工具包,包含了 Java 编译器、Java 虚拟机、Java 类库等工具,用于 Java 程序的开发与编译。
JRE (Java Runtime Environment) 是 Java 运行时环境,包含了 Java 虚拟机以及运行 Java 应用所需的类库等,用于运行已经编译好的 Java 程序。
JVM (Java Virtual Machine) 是 Java 虚拟机,用于在不同平台上执行 Java 字节码文件。
含了 JRE 和开发工具,JRE 包含了 JVM 和运行 Java 程序所需的类库,JVM 则是用来执行 Java 字节码的虚拟机。
Java 跨平台的原理是使用了 JVM,将 Java 代码编译成字节码文件,然后由 JVM 解释执行。由于不同平台的 JVM 实现是相同的,所以同样的字节码文件在不同平台上都可以被正确地解释执行,从而实现了跨平台。
配置 JAVA_HOME 和 path 变量是为了方便在命令行下运行 Java 程序。JAVA_HOME 指定了 JDK 的安装路径,而 path 变量则将 JDK 的 bin 目录添加到了系统的环境变量中,使得可以在命令行下直接调用 Java 程序的命令。配置好这两个变量后,就可以在任何位置直接运行 Java 程序了。
安装路径最好不要有中文或空格等特殊字符,这可能会导致某些软件无法正常运行。
如果安装软件需要管理员权限,应该使用管理员权限运行安装程序。
安装软件时应该仔细查看每个安装步骤,避免不必要的捆绑软件或者修改系统配置。
安装完成后最好将安装路径添加到系统的 PATH 环境变量中,这样可以方便在命令行下直接调用软件的命令。

注释

注释是程序中用来描述代码含义、提供说明和解释的文字信息。注释不会被编译器识别和执行,它们只是提供给程序员或其他阅读代码的人参考和理解代码的辅助工具。注释的作用可以提高代码的可读性、维护性、可靠性和可重用性。
单行注释:使用“//”标记,注释内容从“//”后面到行尾结束。
多行注释:使用“/”和“/”标记,注释内容位于这两个标记之间。
文档注释:使用“/**”和“*/”标记。

关键词

关键字是编程语言中已经被赋予特殊含义的单词,通常被用来表示特定的操作或者语法结构,不能被作为标识符或变量名来使用。
关键字的特征包括:
关键字具有固定的意义,不能被重新定义或赋予其他含义。
关键字是编译器或解释器的组成部分,被用来识别和解析程序的语法结构。
关键字在不同的语法结构中可能有不同的用法和限制条件。
常见的关键字包括:
数据类型关键字:int、float、double、boolean、char等。
流程控制关键字:if、else、switch、case、default、while、do、for、break、continue、return等。
类和对象关键字:class、interface、extends、implements、new、this、super、static、final、abstract等。
异常处理关键字:try、catch、finally、throw、throws等。
其他关键字:void、true、false、null、package、import、synchronized、volatile等。

标识符

标识符是程序中用来标识变量、方法、类、接口、包等命名实体的名称。可以理解为程序中的名字或者符号,用来在代码中引用和调用相应的实体。
标识符的组成规则和注意事项如下:
标识符必须以字母、下划线或美元符号($)开头,后面可以跟着字母、数字、下划线或美元符号。
标识符区分大小写,即 MyName 和 myname 是不同的标识符。
标识符的长度没有限制,但是应当避免过长或者过于复杂,以保证代码的可读性。
标识符不能使用关键字、保留字作为名称,否则会导致编译错误。
标识符应当使用有意义、清晰、简洁的命名方式,以方便他人阅读和理解代码。
注意,标识符的命名应当遵循编程语言的规范和约定,以保证代码的可维护性和可读性。此外,在不同的编程语言中,标识符的命名规则和限制可能有所不同。

数据基础类型

整数型(占用的内存空间和取值范围如下)
   byte:1 字节,取值范围为 -128 到 127。
   short:2 字节,取值范围为 -32768 到 32767。
   int:4 字节,取值范围为 -2^31 到 2^31-1。
   long:8 字节,取值范围为 -2^63 到 2^63-1。
浮点型
   float:4 字节,取值范围为 1.4E-45 到 3.4028235E38,精度为 6-7 位有效数字。
   double:8 字节,取值范围为 4.9E-324 到 1.7976931348623157E308,精度为 15 位有效数字。
字符型
   char:2 字节,表示 Unicode 编码的字符,取值范围为 '\u0000' 到 '\uffff'。
布尔型
  boolean:1 字节,取值范围为 true 和 false。
其中,整数型、浮点型、字符型和布尔型分别对应 Java 的四个基本数据类型类。