0
点赞
收藏
分享

微信扫一扫

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

腾讯优测 2022-01-31 阅读 54

一、如何快速学习

  • 需要
  • 框架
  • 细节

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

三、运行机制

四、注意事项

  • 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 字节

十、数据类型

  • 基本数据类型

    • 数值型

      1. 整数类型 :

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

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

    •  

      1. 浮点型:

      float(F/f)double(默认)
      48

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

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

    • 字符型 char 2字节

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

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

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

    •  

      • 可以直接 char = 77

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

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

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

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

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

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

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

      •  

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

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

  •  

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

  • bool 不参与转换

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

  • 引用数据类型

    • 类(class):string

    • 接口(interface)

    • 数组

  • 十一、Java文档

     

    十二、原码 反码 补码

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

    • 整数三码合一

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

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

    • 0 的反码、补码都是 0

    • Java 没有无符号数

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

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

    十三、位运算

    七个位运算符

    算数右移 >> :

    • 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 = 对象,也是引用类型

    • 内存分配机制

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

      • 堆:存放对象、数组

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

      • 示意图:

         

    十六、成员方法

    • 定义:

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

        语句

        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);//直接通过构造器来指定名字和年龄

    • 构造器也可以重载

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

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

    二十、对象创建流程

     

    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 只能在类里使用

    举报

    相关推荐

    0 条评论