Java考核总结

封装、继承和多态

封装:把对象的属性和操作(或服务)结合为一个独立的整体,并尽可能隐藏对象的内部实现细节,提高代码的安全性和复用性

继承:子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。当然,如果在父类中拥有私有属性(private修饰),则子类是不能被继承的。

多态:同一个行为具有多个不同表现形式或形态的能力。

多态的体现形式

继承

父类引用指向子类

重写

if,switch使用场景

if :

1.对具体的值进行判断。

2.对区间判断。

3.对于运算结果是boolean类型的表达式进行判断。

switch:

1.对具体的值进行判断。

2.值的个数通常是固定的。

对于几个固定值判断,建议使用switch语句,因为switch语句会将具体的答案都加载进内存。效率相对高一点。

类与对象的关系

类是模板,对象是实例化、具体化(类是对象的一个集合,对象是类的实例)

类是具备某些共同特征的实体的集合,他是一种抽象的数据类型,它是对所具有相同特征实体的抽象。在面向对象的程序设计语言中,类是对一类“事物”的属性与行为的抽象。

对象

对象就是一个真实世界中的实体,对象与实体是一一对应关系的,意思就是现实世界的每一个实体都是一个对象,所以对象是一个具体的概念。

外部类与内部类之间的相互调用

外部类访问内部类

内部类被stati修饰:可以直接new

内部类类名 对象名 = new 内部类类名();

内部类没有被static修饰:先new出来外部类的实例,再new内部类的

内部类类名 对象名 = new 外部类类名(). 内部类类名();

内部类访问外部类

外部类.this.变量

外部类访问内部类:必须建立内部类的对象

内部类访问外部类:内部类可以直接访问外部类的成员包括私有成员,因为外部类持有内部类的引用

接口

在java语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明一个类通过继承接口的方式,从而来继承接口的抽象方法。

接口并不是类,编写接口的方式和类很相似,但是它们属于不同的概念。类描述对象的属性和方法。接口则包含类要实现的方法。除非实现接口的类是抽象类,否则该类要定义接口中的所有方法。

抽象类(可以实现一个接口)

1. 抽象类不能被实例化(初学者很容易犯的错),如果被实例化,就会报错,编译无法通过。只有抽象类的非抽象子类可以创建对象。

2. 抽象类中不一定包含抽象方法,但是有抽象方法的类必定是抽象类。

3. 抽象类中的抽象方法只是声明,不包含方法体,就是不给出方法的具体实现也就是方法的具体功能。

4. 构造方法,类方法(用 static 修饰的方法)不能声明为抽象方法。

5. 抽象类的子类必须给出抽象类中的抽象方法的具体实现,除非该子类也是抽象类。

抽象类与接口的区别

1. 抽象类中的方法可以有方法体,就是能实现方法的具体功能,但是接口中的方法不行。

2. 抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是 public static final 类型的。

3. 接口中不能含有静态代码块以及静态方法(用 static 修饰的方法),而抽象类是可以有静态代码块和静态方法。

4. 一个类只能继承一个抽象类,而一个类却可以实现多个接口。

异常处理

1.向上抛出异常:throws

2.try-catch-finally

try

{

要检查的语句序列

}

catch(异常类名 形参对象名)

{

异常发生时的处理语句序列

}

finally

{

一定会运行的语句序列

}

常见异常

算术异常类:ArithmeticExecption

空指针异常类:NullPointerException

类型强制转换异常:ClassCastException

数组负下标异常:NegativeArrayException

数组下标越界异常:ArrayIndexOutOfBoundsException

违背安全原则异常:SecturityException

文件已结束异常:EOFException

文件未找到异常:FileNotFoundException

字符串转换为数字异常:NumberFormatException

操作数据库异常:SQLException

输入输出异常:IOException

方法未找到异常:NoSuchMethodException

stream流

获取流

1.根据List获取流

// 创建List集合

        List<String> list = new ArrayList<>();

        list.add("张老三");

        list.add("张小三");

        list.add("李四");

        list.add("赵五");

        list.add("张六");

        list.add("王八");

        Stream<String> stream1 = list.stream();

2.根据set获取流

        // 创建List集合

        Set<String> set = new HashSet<>();

        list.add("张老三");

        list.add("张小三");

        list.add("李四");

        list.add("赵五");

        list.add("张六");

        list.add("王八");

        Stream<String> stream2 = set.stream();

3.根据Map集合获取流

        // 创建Map集合

        Map<Integer,String> map = new HashMap<>();

        map.put(1,"张老三");

        map.put(2,"张小三");

        map.put(3,"李四");

        map.put(4,"赵五");

        map.put(5,"张六");

        map.put(6,"王八");

        // 3.1根据Map集合的键获取流

        Set<Integer> map1 = map.keySet();

        Stream<Integer> stream3 = map1.stream();

        // 3.2根据Map集合的值获取流

        Collection<String> map2 = map.values();

        Stream<String> stream4 = map2.stream();

        // 3.3根据Map集合的键值对对象获取瑞

        Set<Map.Entry<Integer, String>> map3 = map.entrySet();

        Stream<Map.Entry<Integer, String>> stream5 = map3.stream();

4.根据数组获取流

        // 根据数组获取流

        String[] arr = {"张颜宇","张三","李四","赵五","刘六","王七"};

        Stream<String> stream6 = Stream.of(arr);

Stream流的常用方法

filter方法:过滤出满足条件的元素

        // 获取stream流

        Stream<String> stream = Stream.of("张老三", "张小三", "李四", "赵五", "刘六", "王七");

        // 需求:过去出姓张的元素

        stream.filter((String name)->{

            return name.startsWith("张");

        }).forEach((String name)->{

            System.out.println("流中的元素" + name);

        });

收集stream流

 Stream流中提供了一个方法,可以把流中的数据收集到单例集合中

        List<String> list2 = new ArrayList<>();

        list2.add("张老三");

        list2.add("张小三");

        list2.add("李四");

        list2.add("赵五");

        list2.add("张六");

        list2.add("王八");

        // 需求:过滤出姓张的并且长度为3的元素

        Stream<String> stream = list2.stream().filter((String name) -> {

            return name.startsWith("张");

        }).filter((String name) -> {

            return name.length() == 3;

        });

        // stream 收集到单列集合中

        List<String> list = stream.collect(Collectors.toList());

        System.out.println(list);

        // stream 手机到单列集合中

        Set<String> set = stream.collect(Collectors.toSet());

        System.out.println(set);

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,454评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,553评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,921评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,648评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,770评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,950评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,090评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,817评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,275评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,592评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,724评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,409评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,052评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,815评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,043评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,503评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,627评论 2 350

推荐阅读更多精彩内容

  • java基础 集合承继包含图 Collection vs Collections 首先,"Collection" ...
    onlyHalfSoul阅读 1,303评论 0 5
  • 对象的创建与销毁 Item 1: 使用static工厂方法,而不是构造函数创建对象:仅仅是创建对象的方法,并非Fa...
    孙小磊阅读 1,969评论 0 3
  • 阿里巴巴 JAVA 开发手册 1 / 32 Java 开发手册 版本号 制定团队 更新日期 备 注 1.0.0 阿...
    糖宝_阅读 7,527评论 0 5
  • JRE(java runtime environment) java程勋运行时环境,包含JVM 和运行时所需要的核...
    张_何阅读 655评论 0 0
  • JavaSE 请你说说Java和PHP的区别?PHP暂时还不支持像Java那样JIT运行时编译热点代码,但是PHP...
    le_u阅读 250评论 0 0