栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java个人基础笔记【一】

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java个人基础笔记【一】

目录
  • Java基础及高级
    • Java的特点
    • 面向对象基本概念(oop)
      • 继承性(extends)
      • 多态性
    • Java运行机制及过程
    • Java数据类型
    • 关键字
      • this关键字
      • static关键字
      • super关键字
      • final关键字
    • 常用内存区间
    • 包(package)
    • 覆写(override)

Java基础及高级 Java的特点
  1. Java是面向对象语言(oop)

  2. Java语言是健壮的。 Java的强类型机制,异常处理,垃圾的自动收集

  3. Java是跨平台的(编译好的.class文件可以在多个操作系统上运行,根本原因是JVM)

  4. Java语言是解释型的(解释性语言有js,PHP,Java,编译性语言有c/c++)

    区别是解释型语言编译后的代码不能直接被机器执行,需要解释器来执行,编译性语言编译后的代码可以被机器执行)

面向对象基本概念(oop)
  1. 面向对象就是把构成问题的事物分解成一个个对象,建立对象不是为了实现一个步骤,而是为了描述某个事物在解决问题中的行为。
  2. 类是面向对象中的一个很重要的概念,因为类是很多个具有相同属性和行为特征的对象所抽象出来的,对象是类的一个实例。
  3. 类具有三个特性:封装、继承和多态。
    1. 封装性:指把对象的属性和行为看成是一个整体,并把不需要外界知道的信息屏蔽起来
    2. 继承性:在基础的类上派生出反应特殊事物的类
    3. 允许程序出现重名
继承性(extends)
  • 继承可以解决代码的复用,当多个类存在相同的属性和方法时,可以从这些类中抽象出父类。子类就会拥有父类的属性和方法
  • 父类又叫超类,基类
  • 子类又叫派生类
  • 子类继承了所有的属性和方法,非私有属性子类可以直接访问,私有属性不能在子类直接访问,要通过父类提供的公共的方法去访问
  • 子类必须调用父类的构造器,完成父类的初始化,之后才会进行子类的初始化
  • 当创建子类对象时,不管使用子类的那个构造器,默认情况都会去调用父类的无参构造器,如果父类没有无参构造器,则必须在子类的构造器中用super、去指定使用父类的哪个构造器完成对父类的初始化功能。
  • super()必须放在构造器的第一行,并且只能在构造器中使用
  • super()和this()都只能放在构造器第一行,因此两个方法不能共存于构造器
  • java的所有类都是Object类的子类
多态性
  • 对象多态体现为父类引用变量可以指向子类对象,前提条件是必须有子父类关系
  • 一个对象的编译类型和运行类型可以不一致
    • 编译类型:声明该对象时使用的类型,不能改变
    • 运行类型:实际赋给该变量时的类型,可以改变
  • 编译类型看 = 左侧,运行类型看 = 右侧
  • 向上转型(自动转换):
    • 本质是父类的引用指向了子类的对象
    • 可以调用父类的所有成员
    • 不能调用子类的特有成员(由编译类型决定)
    • 最终运行看子类的具体实现
  • 对象向上转型的意义是在于参数的统一,向下转型指的是调用子类的个性化操作方法
  • 向下引用(强制转换)
    • 语法:子类类型 引用名 = (子类类型)父类引用
    • 当向下转型后,可以调用子类类型中所有成员
  • 属性值没有重写,属性的值看编译类型
  • 方法先看运行类型
  • Java的动态绑定机制:
    • 当调用对象方法时,该方法会和该对象的内存地址/运行类型绑定
    • 当调用对象属性时,没有动态绑定机制,哪里声明,哪里使用
Java运行机制及过程
  1. Java的核心机制-Java虚拟机(JVM)
  2. JVM是一个虚拟的计算机,具有指令集使用不同的存储区域,负责执行指令,管理数据,内存,寄存器,包含在JDK中
  3. 对于不同的平台,有不同的JVM
  4. Java虚拟机机制屏蔽了底层运行平台的差别,实现了“一次编译,到处执行”

test.java - (编译 javac 使用开发工具) > test.class - (运行 java) > JVM for Mac/Windows/Linux

  • Java编译:
    1. 通过编译器(javac)将java源文件编译成JVM可以识别的字节码文件(.class)
    2. 通过javac编译工具对test.java文件进行编译
  • Java运行:
    1. 有可执行的java程序(字节码文件)
    2. 通过运行工具java.exe对.class文件进行执行
Java数据类型
  • 数据类型分为基本数据类型和引用数据类型(类,接口,数组)
  • 基本数据类型
数据类型大小/位可表示的数据范围默认值
byte8-128~1270
short16-32768~327670
int32-2 `31~2 31-10
long64-2 63~2 63-10
float32-2 `31~2 31-10.0
double64-263~263-10.0
char160~2`16-1
boolean8true falsefalse
  1. 关于浮点类型:

    1. 浮点数在机器中存放形式为:浮点数= 符号位+指数位+尾数位 其中尾数位容易丢失造成精度损失 所以可以理解为小数都是近似值
    2. 浮点数默认为double,通常使用double
    3. 当进行判断两个浮点数相等时应该将两个浮点数的差值的绝对值,在某个精度范围内来判断
  • 引用数据类型
    • 堆内存(heap):保存每一个对象的属性内容,需要使用new语句来开辟,如果一个对象没有堆内存指向,则无法使用
    • 栈内存(stack):保存的是一个堆内存的地址,可以理解为对象的名称
    • 只要是引用数据类型,就需要使用new并创造一个新的堆内存
    • 引用传递:一个堆内存可以被很多栈内存指向并修改
关键字 this关键字
  • this可以完成三件事 调用本类属性,调用本类方法,表示当前对象。
  1. 调用本类属性:this.属性
  2. 调用本类方法:
    • 调用本类普通方法:this.方法()
    • 调用本类构造方法:this(); 如果构造方法有参数:this(参数);
    • 使用this调用构造方法时要放在第一行
static关键字
  • 如果类中的某个属性希望定义为公共属性(所有类都可以使用的属性),则可以在声明前加上static
  • static的属性将成为公共属性(公共数据区),任何一个对象修改此属性都会影响其他对象
  • static和非static属性的区别:非static属性必须要有实例化的对象才能进行访问,static属性不受实例化对象的控制
  • 优先考虑非static属性
  • static方法不能直接访问非static属性或方法,只能调用static属性或方法
  • 非static方法可以直接访问static方法或属性
  • static方法可以直接通过**类名.方法()**名访问
  • **类变量:**是该类的所有对象共享的变量,任何一个该类的对象访问它时,取到的都是相同的值。
    • 定义:访问修饰符 static 数据类型 变量名
    • 访问方式:类名.类变量名 or 对象名.类变量名
    • 类变量是随着类的加载而创建,所以即使没有创建对象也可以访问
  • 类方法:又叫静态方法,访问一个对象方法,需要有一个对象来访问方法,而类方法只需要 **类名.方法()**即可访问
    • 类方法和普通方法都是随着类的加载而加载,将结构信息存储在方法区,类方法中无this
super关键字
  • super代表父类的引用,用于访问父类的属性,方法,构造器
  • 可以访问父类的属性/方法,不能访问private属性/方法 (super.属性/方法)
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iBXRlCHT-1635595615537)(D:TyporapictureQQ截图20211004125106.png)]
final关键字
  • final称为终结器,可以使用final定义类,方法,属性和局部变量
    • 使用final定义的类不再有子类
    • 使用final定义的方法不能被子类覆写
    • 使用final定义的变量就成为了常量,常量要在定义的时候设置好内容,并且不能修改(final常量要大写)
    • final使用注意事项
      • final修饰的属性由叫常量,用xx_xx_xx_xx
      • final修饰的属性在定义时,必须赋初值,并不能修改
      • 赋值的位置是:
        1. 定义时
        2. 在构造器中
        3. 在代码块中
      • 如果final修饰的属性是静态的,那么赋值的位置
        1. 定义
        2. 在静态代码块
      • 如果类不是final类,但是含有final方法,则该方法不能重写,但是可以继承
      • 如果一个类是final类,则不需要将类的属性定义为final(画蛇添足)
      • final不能修饰构造方法
      • final和static搭配使用,效率更高,不会导致类的加载
      • 包装类(Integer,Double,Float,Boolean等都是final),String也是final
常用内存区间
  • 栈内存空间:保存所有的对象名称(保存引用的堆内存空间的地址)
  • 堆内存空间:保存每个对象的具体内容
  • 全局数据空间:保存static类型的属性
  • 全局代码区:保存所有的方法定义
  • 对象存在形式:基本数据类型存放在堆 引用数据类型内容存放在方法区
  • jvm内存方法的调用机制:
    • 当程序执行到方法时,会开辟一个新的栈空间用来保存此方法
    • 当方法执行完毕,就会返回到调用方法的地方
包(package)
  • 包的本质就是创建不同的文件夹来保存类文件

  • 包名小写,只能包含数字,字母,下划线,不能用数字开头

  • 包的作用

    • 区分相同名字的类

    • 当类很多时,可以很好的管理类

    • 控制访问范围

  • package语句用来声明当前类所在的包,需要写在class的最上面,一个类中最多只有一句package

  • import语句放在package下class上

##访问修饰符

  • Java提供了四种访问控制符号控制方法和属性的访问权限
    1. 公开级别:用public修饰,对外公开
    2. 受保护级别:用protected修饰,对子类和同一个包中的类公开
    3. 默认级别:没有修饰符号,向同一个包的类公开
    4. 私有级别:用private修饰,只有类本身可以访问,不对外公开
覆写(override)
  • 子类定义了和父类的方法名称,返回值类型,参数类型及个数完全一致的方法时就叫方法的覆写
  • 被子类所覆写的方法不能拥有比父类更严格的访问控制权限(public > default > private)
  • 子类定义了和父类完全相同的属性名称时,称为属性的覆写(没有开发意义)
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/357850.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号