(看的韩顺平的课)JAVA基础(初级)

一、如何快速学习

  • 需要
  • 框架
  • 细节

二、JDK JRE 是什么(区别)?

JDK

  • JDk(开发人员使用)= JRE + 开发工具集(eg:Javac,Java 编译工具)

JRE

  • JRE(仅使用)= JVM + JavaSE 标准类库

  • 编译器 != JVM

  • (看的韩顺平的课)JAVA基础(初级)_第1张图片

     

三、运行机制

执行流程

  • .java(源文件) ---编译 javac ---> .class(字节码文件) -----运行 Java -----> 结果

  • :使用Java命令行运行时,注意不写 .class

  • .class 装载到 JVM 机上执行

  • class 类

四、注意事项

  • pubilc 只能有一个,其他任意数量

  • 编译后,每一个类都对应一个 .class

  • 文件名与 public 的类名一致,否则编译失败

五、注释

  • 文档注释

    /**
     * @author mu
     * @version 1.0
     * .....
     */

javadoc -d D:\\\temp(生成的文档的位置)-author -version xxxxx.java

六、规范

  • Tab: 整体后移

  • shift + Tab: 整体前移

  • 源文件应为 utf-8 (实际开发中)

七、DOS的基本原理

  • DOS 磁盘操作系统

  • md 创建新目录 rd 删除目录

  • dir 查看当前目录

  • cd 切换为其他盘符 change directory

    • cd /D :c 切换到c盘 /D 为改变驱动器(盘)的当前目录或者当前驱动器

  • tree d:

  • cls 清屏

  • exit 退出

  • echo 输入内容到文件

  • move 剪切

八、相对路径绝对路径

  • ..\ 父目录(相对路径)..

  • .\ 当前目录 .

  • \ 根目录

九、变量

类型+名称+值

变量表示存储区域

int 4 字节

double 8 字节

  • 运算从左至右:

    • System.out.println( 100 + 300 + "hello"); //400hello

    • System.out.println("hello" + 100 + 300); //hello100300

    • System.out.println(' a ' + 100 ); // 97 + 100

十、数据类型

  • 基本数据类型

    • 数值型

      1. 整数类型 :

      byte short int(整数默认为int) long(L/l)
      1(8bit) 2(16bit) 4(32bit) 8( 64bit)

      eg:4 -- 占 4 个字节,int 类型

    • (看的韩顺平的课)JAVA基础(初级)_第2张图片

       

      1. 浮点型:

      float(F/f) double(默认)
      4 8

    浮点类型 = 符号 + 指数 + 尾数

    浮点(陷阱)比较相等时,应使用 if ( math.abs (num1 - num2) < 0.00001 ) "相等" ;

    • 字符型 char 2字节

    • 使用的是 unicode 码兼容了 Ascall 码,中文英文都是二字节,utf-8 的英文一个字节,中文三个字节

    • GBK的文字编码是双字节来表示的,即不论中、英文字符均使用双字节来表示,只不过为区分中文,将其最高位都定成1。

    • 为什么编码有ASCII、Unicode、UTF-8之分? - 知乎

    • (看的韩顺平的课)JAVA基础(初级)_第3张图片

       

      • 可以直接 char = 77

        • (此时77不是 int 类型,优先级:先看是否为 Ascll 内的数)

        • (Ascll 码占一个字节,but 只有 128 个字符);

        • char = ‘ \t ’; // 制表位 (转义字符)

        • chart 可以保存 int 的常量值,但是不能保存 int 的变量值。

      • ‘ ’ 单引号 ----字符

      • ” “ 双引号== 字符串 sout(name + "\t");

      • char 的本质时一个整数,在输出时,是Unicode码所对应的字符

      • (看的韩顺平的课)JAVA基础(初级)_第4张图片

         

    • 布尔型 bool 1 java 只能用 false true 表示 bool 类型 c语言可以用 0 1

    基本数据类型转换细节

    • 小加大,统一为大 特殊:byte + short = int ;byte + byte = int ; (byte chart short)三者计算时,先转换为int类型。

    • byte b1 = 10; //对 ,优先级 1. 先判断是否在范围内。 2. 若不在,再观察是否类型不匹配

    • b1 = b1 + 10;// 错 byte int 数值看范围,变量看类型

    > b1 = (byte)(b1 + 10); // 对

    • int a = 10; byte b2 = a; // 错 如果是变量赋值,要判断类型

    •  

    • {byte,short} 不与 chart 自动转换

    • bool 不参与转换

    • int n = 1L; //错误

    long n2 = 1L;//对

    小转大 强转

    (int)4.2 * 3.3 = 4 * 3.3 强转符号只对最近的操作数有效。

    大专小 隐式转换(不用显示的写)

    基本数据类型和 String 类型的转换

    (看的韩顺平的课)JAVA基础(初级)_第5张图片

  • 引用数据类型

    • 类(class):string

    • 接口(interface)

    • 数组

十一、Java文档

(看的韩顺平的课)JAVA基础(初级)_第6张图片

 

十二、原码 反码 补码

  • 最高位 1 -> + 0 -> -

  • 整数三码合一

  • 负数的反码 = 原码的符号位不变,其它按位取反

  • 负数的补码 = 它的反码 + 1(补码把正负数统一起来)

  • 0 的反码、补码都是 0

  • Java 没有无符号数

  • 计算机运算,使用补码的方式来运算

  • 查看结果,在转换回原码

十三、位运算

七个位运算符

(看的韩顺平的课)JAVA基础(初级)_第7张图片

 

 

算数右移 >> :

  • 2 >> 2 0000 0010 ---- 0000 0000 2/2/2

  • -2 >> 2 1000 0010 ---- 1. 补码 1111 1110 2. 右移 1111 1111 3.运算后的原码 1000 0001

    -2/2/2 = -1(0) 负数溢出为 -1 正数溢出为 0

    1111 1101 (补码) 1111 1100 1000 0011

十四、逻辑运算符

&& 短路与 & 逻辑与

|| 短路或 |逻辑或

!逻辑非 ^ 逻辑异或

十五、类、属性与对象

  • 属性 = 成员变量 = 字段 (三种叫法)

  • 访问修饰符 属性类型(基本类型、引用类型) 属性名

    • 四种访问修饰符: public protected 默认 private(后面详解)

  • 数组、对象的参数传递是引用传递(本质是地址在传递,共用一个地址),而值传递,地址

  • 数组、对象指向堆

  • 字符串String = 对象,也是引用类型

  • 内存分配机制

    • 栈:一般存放基本数据类型(局部变量)

    • 堆:存放对象、数组

    • 方法区:常量池(常量:字符串等),类加载信息

    • 示意图:(看的韩顺平的课)JAVA基础(初级)_第8张图片

       

十六、成员方法

  • 定义:

    • 访问修饰符 返回数据类型 方法名 (形参列表...){

      语句

      return 返回值;

      }

  • 方法不能嵌套定义,可以嵌套使用

  • 跨类调用方法时,对跨的那个类创建新对象,才能调用其方法

  • 执行方法时,开栈

十七、重载(Overload)、可变参数(Variable paramaters)

  • 重载优化为可变参数,

  • 可变参数放在最后,

  • 一个形参列表只能出现一个可变参数。

    public int sum(String name, int ... nums){//nums.length nums相当于一个数组
    ​
    •      int result = 0;
           for(int i = 0; i < nums.length; i++){
                result += nums[i];
           }
    ​
    }

十八、作用域(scope)

  • 全局变量 = 属性

  • 全局变量可以不赋值,会有默认值。局部变量必须赋值

  • 全局变量和局部变量可以重名,就近原则

  • 属性生命周期长,随着对象的创建销毁而创建销毁

  • 局部变量的生命周期短,随着方法的调用的创建销毁而创建销毁

  • 全局变量可以加修饰符,局部变量不能加修饰符

十九、构造器(constructer)

  • 访问修饰符 方法名 (形参列表...){

    方法体;

    }

  • 构造器无返回值

  • 方法名和类名必须一样

  • 创建对象时,系统会自动调用该类的构造器并完成对对象的属性初始化

  • 作用:完成对新对象的初始化

  • Person p1 = new Person("muzi", 90);//直接通过构造器来指定名字和年龄

  • 构造器也可以重载

  • 构造器时一种特殊的方法

  • 若程序员不定义构造器,系统会自动生成一个默认的无参构造器(如果自定义了一个构造器,默认的无参构造器失效,需要手动写一个无参构造器,才能使用。)

二十、对象创建流程

(看的韩顺平的课)JAVA基础(初级)_第9张图片

 

  1. 加载类的信息,只会加载一次

  2. 在堆中分配空间(地址)

  3. 完成对象初始化

    3.1 默认初始化

    3.2 显式初始化

    3.3 构造器的初始化

  4. 对象在堆中的地址,返回给p(p 是对象名,也可以理解成是对象的引用)

二十一、this

  • public Dog(String name){
              //this.name 就是当前对象的属性name
    •         this.name = name;
        
    }
    • 那个对象调用,this就代表哪个对象

  • 细节:

  • 访问属性:this 用于区分当前类的属性和局部变量

  • this不仅可以用来访问本类的属性,还可以访问其方法、构造器

  • 访问方法:this.方法名(参数列表)继承会详细讲

  • 访问构造器:this(参数列表);注:只能在构造器中的第一条语句访问另一个构造器

  • this 只能在类里使用

你可能感兴趣的:(java,开发语言,后端)