Javase基础总结一

面向对象的三/四大特征

封装
体现形式:方法、属性的私有化、内部类
属性的私有化:将属性用private修饰,然后提供对外的访问(getXXX)和设置(setXXX)的方法,在方法中进行限定,使属性值更加符合的场景要求
优势:提高代码的复用性,保证数据的合法性
继承
发现一些类中的属性和方法是相同的,所以把这些相同的属性和方法提取到一个新的类中,然后利用extends关键字让原来的类和新的类产生联系,这种联系称之为继承。
子类通过继承可以使用父类中的一部分方法和属性。
注意: 子类在继承父类的时候继承了父类全部的数据域(属性、方法),但是虽然是继承了父类全部的数据域,但是只有一部分的数据域对子类可见(父类对象中设置为私有的属性和方法,子类拥有却无法访问)
在Java中,支持的是单继承—一个子类只能继承一个父类,一个父类可以有多个子类
多继承与单继承的优劣性比较:
多继承比单继承能更好的提高代码的复用性
单继承相对多继承而言,能明确方法的调用,优点:提高代码的复用性,避免方法的调用产生混乱
super关键字
super在子类中表示父类对象的引用,可以认为是一个虚拟对象,和上面的this有异曲同工之效,都是一个虚拟的对象,只是this代替本类对象来调用本类中的属性和方法,而super则是在子类中调用父类对象
在子类中,通过super来调用父类中的方法和属性
super语句
— 表示在子类的构造方法中调用父类对应形式的构造方法来创建一个父类对象。
— 如果没有手动指定super语句,那么在编译的时候会自动添加一个super()
— 如果父类只提供了含参构造,那么在子类的构造方法中必须手动提供对应形式的super语句
– super语句必须放在子类构造方法的第一行
多态
实现条件:
深层次:Java虚拟机内存分布 people p = new people(); 注意画图流程
静态绑定:重载 条件:相同作用域 方法名相同,参数列表不同
动态绑定:重写 条件:父子类,子类重写父类方法 同名同参,注意修饰符问题 重写的原理就是地址覆盖
编译时多态:方法的重载
运行时多态:向上造型、方法的重写 — 基于继承
*实现原理:*继承关系 实现关系
注意:利用向上造型创建的对象,能干什么看的是父类;具体的执行看到是子类
抽象(可说可不说)
忽略一个主题中与当前目标无关的东西,专注的注意与当前目标有关的方面.(就是把现实世界中的某一类东西,提取出来,用程序代码表示,抽象出来的一般叫做类或者接口).抽象并不打算了解全部问题,而是选择其中的一部分,暂时不用部分细节.抽象包括两个方面,一个数据抽象,而是过程抽象.
数据抽象 -->表示世界中一类事物的特征,就是对象的属性.比如鸟有翅膀,羽毛等(类的属性)
过程抽象 -->表示世界中一类事物的行为,就是对象的行为.比如鸟会飞,会叫(类的方法)

final关键字

基本用法:修饰类,变量,方法
修饰类: 当用final修饰一个类时,表明这个类不能被继承。也就是说,如果一个类你永远不会让他被继承,就可以用final进行修饰。final类中的成员变量可以根据需要设为final,但是要注意final类中的所有成员方法都会被隐式地指定为final方法。
修饰方法:。第一个原因是把方法锁定,以防任何继承类修改它的含义;第二个原因是效率,父类的final方法是不能被子类所覆盖的,也就是说子类是不能够存在和父类一模一样的方法的。
修饰变量: final成员变量表示常量,只能被赋值一次,赋值后值不再改变。当final修饰一个基本数据类型时,表示该基本数据类型的值一旦在初始化后便不能发生变化;如果final修饰一个引用类型时,则在对其初始化之后便不能再让其指向其他对象了,但该引用所指向的对象的内容是可以发生变化的。本质上是一回事,因为引用的值是一个地址,final要求值,即地址的值不发生变化。且final修饰一个成员变量(属性),必须要显示初始化。
扩展:
类的final变量和普通变量有什么区别?
* 当用final作用于类的成员变量时,成员变量(注意是类的成员变量,局部变量只需要保证在使用之前被初始化赋值即可)必须在定义时或者构造器中进行初始化赋值,而且final变量一旦被初始化赋值之后,就不能再被赋值了。
被final修饰的引用变量指向的对象内容可变吗?
* 引用变量被final修饰之后,虽然不能再指向其他对象,但是它指向的对象的内容是可变的。

static关键字

基本用法
1、被static修饰的变量属于类变量,可以通过类名.变量名直接引用,而不需要new出一个类来
2、被static修饰的方法属于类方法,可以通过类名.方法名直接引用,而不需要new出一个类来
被static修饰的变量、被static修饰的方法统一属于类的静态资源,是类实例之间共享的,换言之,一处变、处处变。
静态资源的好处:
1、不同的类有自己的静态资源,这可以实现静态资源分类。
2、避免重名。
3、避免静态资源类无限膨胀。
加载时候的问题:
1、静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。
2、静态方法里面能不能引用静态资源?可以,因为都是类初始化的时候加载的,大家相互都认识。
3、非静态方法里面能不能引用静态资源?可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。
静态块
静态块也是static的重要应用之一。也是用于初始化一个类的时候做操作用的,和静态变量、静态方法一样,静态块里面的代码只执行一次,且只在初始化类的时候执行。
结论:
静态资源的加载顺序是严格按照静态资源的定义顺序来加载的。
静态代码块对于定义在它之后的静态变量,可以赋值,但是不能访问。
静态代码块是严格按照父类静态代码块->子类静态代码块的顺序加载的,且只加载一次。

原文访问:
https://www.cnblogs.com/swisszhang/p/9892992.html

访问限定符:

在这里插入图片描述
public :公共权限 可以修饰类,构造方法,数据成员,方法成员

可以被同一个类里面的其他类访问;可以被同一个包下的类访问;可以被不同包下的类访问;不管是同一包还是不同包下的子类也可以访问

private:私有权限 可以修饰构造方法,数据成员,方法成员,除外部类的其他类

可以被同一个类里面其他类访问;不能被同一包下的类访问;不能被不同包下的其他类访问;不管事同一个包下的子类还是不同包下的子类也都不可以访问

protected:受保护权限 修饰数据成员,构造方法,方法成员,除外部类的其他类

可以被同一个类里面的其他类访问;可以被同一个包下的类访问;不能被不同包的类访问;如果有不同包的类想调用它,那么这个类只能是定义了它的类的子类

default:默认权限

可以修饰类,构造方法,数据成员,方法成员;可以被同一个类里面的类访问;也可以被同一个包里面的类访问;但是不能被不同包下的类访问,不管是子类还是非子类
四种访问限定修饰符的大小为:public>protected>default>private

重载重写区别:

重写:
从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。

class father{
    public void say(){
        System.out.println("hello");
    }
}
class  son extends father{
    @Override
    public void say() {
        System.out.println("Sayhello");
    }
}

总结:
1.发生在父类与子类之间
2.同名同参
3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
重载
在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。

public class demo9 {
    public static void main(String[] args) {
        demo9 s = new demo9();
        s.say();
        s.say("wangwu");
    }
    public void say(){
        System.out.println("hello");
    }
    public void say(String name){
        System.out.println("hello"+" "+ name);
    }
}

总结:
1.重载Overload是一个类中多态性的一种表现
2.同名不同参,返回值无关
重载(Overload)和重写(Override)的区别?
方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型,比父类被重写方法更好访问,不能比父类被重写方法声明更多的异常(里氏代换原则)。重载对返回类型没有特殊的要求,不能根据返回类型进行区分。

<think>嗯,用户想了解Excel中的VLOOKUP函数的用法和参数含义。首先,我需要回忆一下VLOOKUP的基本结构。VLOOKUP是垂直查找函数,用于在表格的首列查找指定的值,然后返回该行中指定列的数据。它的四个参数分别是查找值、表格范围、列索引号和匹配模式。 接下来,我得确认每个参数的具体作用。第一个参数是lookup_value,也就是用户要查找的值,比如产品ID或者姓名。第二个参数是table_array,即查找的范围,这里要注意的是,查找值必须位于这个范围的第一列,否则函数无法正确工作。第三个参数是col_index_num,也就是用户想要返回的数据在表格范围中的第几列,这个列数是从表格范围的第一列开始算起的,不是整个工作表的列。第四个参数是range_lookup,决定是精确匹配还是近似匹配,通常用FALSE或0来指定精确匹配,避免错误。 然后,用户可能需要一个具体的例子来理解如何使用。比如,假设有一个产品价格表,用户想根据产品ID查找对应的价格。这时候,VLOOKUP就可以在ID列查找,然后返回价格列的数据。同时,要提醒用户注意表格范围最好使用绝对引用,比如$A$2:$C$100,这样在拖动公式时范围不会变化。 可能遇到的问题也需要考虑。比如,如果查找值不在表格的第一列,或者列索引号超过了表格的列数,函数会返回错误。此外,数据格式不一致也可能导致问题,比如查找值是数字,而表格中是文本格式的数字,这时候需要统一格式。还有,当出现#N/A错误时,可能是查找值不存在,或者匹配模式设置不正确,需要检查参数是否正确。 用户可能还会问到如何避免常见的错误,比如部分数据匹配出错的情况。这时候需要检查是否有多余的空格,或者数据格式不一致,或者表格范围没有锁定导致拖动时偏移。此外,XLOOKUP作为VLOOKUP的升级版,可能在某些情况下更方便,比如可以向左查找或者返回多列数据,这也是可以提及的内容。 最后,整理步骤,从基础语法到参数说明,再到具体案例,逐步引导用户理解如何使用VLOOKUP函数。同时,提供常见错误和解决方法,帮助用户在实际应用中避免问题。如果有必要,还可以比较VLOOKUP和其他查找函数的区别,比如HLOOKUP或XLOOKUP,但根据用户的问题,主要集中在VLOOKUP本身即可。</think>### Excel VLOOKUP函数详解 #### 一、基础语法与参数说明 VLOOKUP函数的语法为: $$=VLOOKUP(lookup\_value, table\_array, col\_index\_num, [range\_lookup])$$ 包含4个参数: 1. **lookup_value**(必填):要查找的值(如单元格引用或具体值) 2. **table_array**(必填):包含数据的表格范围(必须包含查找列和返回列) 3. **col_index_num**(必填):返回值所在列的序号(从table_array第一列开始计数) 4. **range_lookup**(可选):匹配类型 - `TRUE`/`1`:近似匹配(默认值,需数据升序排列) - `FALSE`/`0`:精确匹配(常用选项) [^1][^2] #### 二、使用步骤演示(工资表查询案例) 假设需要根据员工编号查询工资: 1. 建立查询单元格(如`B12`) 2. 输入公式: ```excel =VLOOKUP(A12, $A$2:$D$100, 4, 0) ``` - `A12`:待查询的员工编号 - `$A$2:$D$100`:锁定数据区域(绝对引用) - `4`:返回第4列(工资列) - `0`:精确匹配 [^2][^3] #### 三、常见错误与解决方法 | 错误现象 | 原因 | 解决方案 | |---------|------|---------| | #N/A | 查找值不存在 | 检查数据源或改用`IFERROR`容错 | | #REF! | 列序号超出范围 | 确认col_index_num ≤ 表格列数 | | 部分匹配失败 | 数据格式不一致 | 统一数值/文本格式 | | 结果错位 | 表格未锁定 | 使用`$`符号固定区域引用 | [^3][^4] #### 四、进阶技巧 1. **多条件查询**: 使用辅助列合并多个条件字段 ```excel =VLOOKUP(A2&B2, $D$2:$F$100, 3, 0) ``` 2. **通配符匹配**: `"*"`匹配任意字符,`"?"`匹配单个字符 ```excel =VLOOKUP("张*", $A$2:$C$100, 3, 0) ``` 3. **跨表查询**: 引用其他工作表数据 ```excel =VLOOKUP(A2, Sheet2!$A$2:$D$100, 4, 0) ``` [^1][^4]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值