java初学者笔记总结day8

final关键字:最终的

常量:定义一次,赋值一次
变量:定义一次,赋值多次

常量的类型
1)基本类型:常量本身存储的值(业务数据)不能更改
2)引用类型:常量本身存储的值(对象的地址)不能更改,对象的内容可以更改的。
a)修饰变量---》常量
1)局部常量
方法的参数(局部常量):在方法中不能赋值,因为调用的时候已经赋值。
2)成员常量
没有默认值,必须创建对象保证所有的成员常量都有默认值
a)定义及赋值 b)构造块 c)构造器
3)静态常量
没有默认值,必须加载类之后保证所有的静态常量都有默认值
a)定义及赋值 c)静态块

b)修饰方法
作用:防止父类的方法被子类重写
c)修饰类
作用:防止类被继承

object常用重写方法
a)toString:把当前对象转换为字符串
obj的toString-字符串格式:完整类名[email protected]+hashcode16进制形式
通常该字符串不满足需求-不能明确的表示出对象的内容==》需要重写
具体表示出对象的那些成员变量---》需求决定
b)hashcode:把当前对象转换为整数
规范:如果两个对象的【内容相同】,那么他们生成的整数也要相同
obj的hashcode的【内容相同】指的是地址相同,其整数由对象地址生成。
业务里【内容相同】通常是由对象成员变量决定,所以--》需要重写
具体通过对象的那些成员变量来决定【内容相同】---》需求决定

c)equals:把当前对象和另一个对象进行比较,内容相同则返回true,否则false
obj的equals的【内容相同】:比较的是对象的地址
需要重写!!

hashcode和equals都是判断对象内容相同!!!
那么我们需要同时重写

引用类型的类型转换

a)自动类型转换
超类型 引用变量=子类型的值;

b)强制类型转换
子类型 引用变量=(子类型)超类型的值;

注意点
1)类型要成功的转换,那么一种类型的值(对象的类型)必须【是】另一种类型
2)强制类型转换:两个类型之间必须有关系(继承,实现)--》否则编译通不过
3)在运行的时候如果类型之间不能转换--报错--》ClassCastException
4)instanceof关键字--》检查类型直接是否可以转换

多态-面向超类型编程

语法:
1)超类型的引用 指向 子类型的对象
2)子类型 重写 超类型的方法
3)超类型的引用 调用 子类型 重写的方法

3)超类型的引用 调用 子类型 重写的方法
子类型中可以访问父类的被重写方法,也有访问自己的重写方法
--》怎么调用?
java引用调用方法
a)编译看-》引用类型
b)运行看-》对象类型

面向超类型编程
1)给多个具体类定义一个超类型---》可以接受各具体类的对象
2)在超类型中定义具体类用的统一的功能
3)利用多态超类型引用调用统一的功能

super关键字

super和this对比
1)super和this指向的对象--》当前对象
2)super和this调用资源(属性和方法),查找过程不一样
a)super从当前类的父类依次往继承链找对应的(属性和方法),找到即调用
b)this从当前类依次往继承链找对应的(属性和方法),找到即调用

super的作用
1)调用父类(继承链)被重写的方法
2)调用父类(继承链)被重名的属性(基本不用)
3)super([父类的构造器参数])---》调用父类的指定构造器
语法:
1)必须是构造器中
2)必须是第一行代码

this([当前类的构造器参数])---》调用自己的指定构造器
语法:
1)必须是构造器中
2)必须是第一行代码
注意点
1)super()和this()都必须是第一句,所以不能同时使用
2)子类构造器如果没有显示的编写super([父类的构造器参数]),那么默认加入super(),调用父类空构造器

时间: 2024-12-25 14:29:29

java初学者笔记总结day8的相关文章

java初学者笔记总结day10

数组的概念 数组一种数据类型->引用类型作用 之前学习的数据类型都只能装一个值,数组可以装多个值. 一维数组定义引用语法1:数组元素的类型 [] 变量名;(java方式-推荐)语法2:数组元素的类型 变量名 [] ;(c 保留) 创建数组对象--定义引用并静态初始化:知道数组的长度和内容.语法: 数组元素的类型 [] 变量名=new 数组元素的类型 []{元素1,元素2...}; 创建数组对象--定义引用并动态初始化:知道数组的长度.语法: 数组元素的类型 [] 变量名=new 数组元素的类型

java初学者笔记总结day2

字符集:用来编码和解码字符用的 定义了很多字符和整数对应的关系,字符集有很多种 例如:ascii ,utf-8 ,gbk,unicode(utf-16) ascii:最基本的字符集,定义了(数字,字母,常用标点符号),并且其他字符集从ascii扩展而来. 字符编码(存储字符信息的过程):把[字符]转换为指定字符集的[整数]的过程字符解码(显示字符信息的过程):把[整数]转换为指定字符集的[字符]的过程 char:存储一个字符 占用空间:2 byte 字符集:unicode(utf-16) 整数范

java初学者笔记总结day7

eclipse->debugger模式作用?-->调试程序的错误(运行错误)可以动态执行程序代码,并且可以在执行的时候查看到当前执行环境的变量(常量)的值.debugger调试的步骤1)设置断点2)通过debuubger运行程序3)切换到debuger平台4)根据debugger的视图进行调试 访问修饰符 作用?-->控制资源(类,属性,方法)能访问的位置 4个级别 访问位置a)public(公共的): 1)本类中2)同包其他类3)子类中4)其他包其他类b)protected(受保护的)

java初学者笔记总结day6

static关键字作用:没有static在类中定义的[数据和功能](成员变量和成员方法),都是属于对象的,如果[数据和功能]只是跟类有关系,那么我们可以通过staic关键字修饰,变为(静态变量和静态方法)-属于类. 静态变量 语法:static +成员变量 静态方法 语法:static +成员方法使用静态变量和静态方法1)类名.静态变量或方法(推荐)---->本类中使用可以省略->类名.2)对象引用.静态变量或方法 注意点:1)成员变量跟对象相关,每个对象存储一份数组,静态变量跟类相关,静态变

java初学者笔记总结day1

ava环境配置 java三大体系 javase 桌面程序开发 javame 移动端程序开发 javaee 网络服务程序开发 java环境概念 jdk java程序开发环境-jre加开发所需要的功能 jre java程序运行环境-jvm加java内置功能 jvm java虚拟机,负责执行java代码 配置环境变量 path:在dos窗口可以任何路径使用java和javac命令 classpath:配置第三方jar javahome:配置jdk目录,第三行程序需要java环境时使用 hellowor

Java初学者笔记五:泛型处理

一.泛型类: 泛型是指适用于某一种数据类型而不是一个数据机构中能存不同类型 1 import java.io.*; 2 import java.nio.file.Files; 3 import java.nio.file.Paths; 4 import java.util.List; 5 6 class myClass<Type>{ 7 public Type[] tlist; 8 public Type tobject; 9 @SuppressWarnings("unchecked

Java初学者笔记六:反射

Java反射基础 零.基础类代码 import java.io.*; import java.lang.reflect.*; class father{ public String fName; father(String name) { this.fName = name; } public void show() throws Exception{ Runtime.getRuntime().exec("touch 2.txt"); } } class child extends f

java初学者笔记总结day11

数组的api-Arrays 数组转字符串数组全部元素设置默认值数组copy System.arrayCopy -->设置copy范围,copy新数组位置时候使用 Arrays.copyOf-->copy全部内容使用数组排序 sort a)基本类型-->直接用 b)引用类型:提供比较大小的方法-给sort使用 1)利用Comparable接口--->数组元素自己类实现该接口->提供比较大小的方法compareTo 2)利用Comparetor接口--->新定义类实现该接口

java初学者笔记总结day4

for循环结构 语法: for(表达式1;表达式2;表达式3){ //循环内容 } for 各位置的代码1)表达式1--->循环变量初始化2)表达式2--->循环条件--->可以不写,默认产生true,填写则必须布尔值3)表达式3--->步进语句4)//循环内容-->循环内容 while的模版 循环变量初始化while(循环条件){ //循环内容 //步进语句} while和for怎么选择1)如果四大循环结构都需要使用--->选for2)如果只需要循环条件和循环内容--