尚硅谷_宋红康_第4章_高级类特性1

合集下载

尚硅谷宋红康参悟Java基础核心技术ppt课件-文档资料

尚硅谷宋红康参悟Java基础核心技术ppt课件-文档资料

通过“继承”实现
特有的代码 学生类
特有的代码 教师类
特有的代码 工人类
特有的代码 农民类
继承的思想
人类
继承 (extends)
教师类
学生类
工人类
兽医类
面向对象思想“落地”法则(三)
继承的思想
多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行 为,只要继承那个类即可。
new Car() new Car()
类名 数据(属性) 方法
举例
move() stop()
c1:Car
方法
c2:Car wheels=6 move() stop()
wheels=4 move() stop()
练习:创建Java自定义类
步骤: 1. 定义类(考虑修饰符、类名) 2. 编写类的属性(考虑修饰符、属性类型、属性名、 初始化值) 3. 编写类的方法(考虑修饰符、返回值类型、方法名、 形参等)
Java基础知识图解
JHale Waihona Puke VA发展历程 JAVA环境搭建 基础程序设计
Eclipse使用 泛型
数据类型
运算符
流程控制
数组
枚举 装箱/拆箱 可变 参数 JAVA 新特 性 类和 对象 属性
面向对象编程
三大 特性
接口
方法
设计模式
应用程序开发
Annotation
异常处理 多线程 反射
Oracle/MySQL
public class Animal{ private int legs;//将属性legs定义为private,只能被Animal类内部访问 public void setLegs(int i){ //在这里定义方法 eat() 和 move() if (i != 0 && i != 2 && i != 4){ System.out.println("Wrong number of legs!"); return; } legs=i; } public int getLegs(){ return legs; } } public class Zoo{ public static void main(String args[]){ Animal xb=new Animal(); xb.setLegs(4); //xb.setLegs(-1000); xb.legs=-1000; //非法 System.out.println(xb.getLegs()); } }

115个Java面试题和答案——终极(上)_尚硅谷_宋红康

115个Java面试题和答案——终极(上)_尚硅谷_宋红康

题目:115个Java面试题和答案——终极(上)本文我们将要讨论Java面试中的各种不同类型的面试题,它们可以让雇主测试应聘者的Java 和通用的面向对象编程的能力。

下面的章节分为上下两篇,第一篇将要讨论面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,第二篇主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。

目录面向对象编程(OOP)常见的Java问题Java线程Java集合类垃圾收集器面向对象编程(OOP)Java是一个支持并发、基于类和面向对象的计算机编程语言。

下面列出了面向对象软件开发的优点:代码开发模块化,更易维护和修改。

代码复用。

增强代码的可靠性和灵活性。

增加代码的可理解性。

面向对象编程有很多重要的特性,比如:封装,继承,多态和抽象。

下面的章节我们会逐个分析这些特性。

封装封装给对象提供了隐藏内部特性和行为的能力。

对象提供一些能被其他对象访问的方法来改变它内部的数据。

在Java当中,有3种修饰符:public,private和protected。

每一种修饰符给其他的位于同一个包或者不同包下面对象赋予了不同的访问权限。

下面列出了使用封装的一些好处:通过隐藏对象的属性来保护对象内部的状态。

提高了代码的可用性和可维护性,因为对象的行为可以被单独的改变或者是扩展。

禁止对象之间的不良交互提高模块化。

参考这个文档获取更多关于封装的细节和示例。

多态多态是编程语言给不同的底层数据类型做相同的接口展示的一种能力。

一个多态类型上的操作可以应用到其他类型的值上面。

继承继承给对象提供了从基类获取字段和方法的能力。

继承提供了代码的重用行,也可以在不修改类的情况下给现存的类添加新特性。

抽象抽象是把想法从具体的实例中分离出来的步骤,因此,要根据他们的功能而不是实现细节来创建类。

Java支持创建只暴漏接口而不包含方法实现的抽象的类。

尚硅谷_宋红康_Java流程控制

尚硅谷_宋红康_Java流程控制

设计模式
应用程序开发
Annotation
异常处理 多线程 反射
连接Oracle
JDBC
集合
类库
IO
网络
程序流程控制
顺序结构
程序从上到下逐行地执行,中间没有任何判断和跳转。
分支结构
根据条件,选择性地执行某段代码。 有if…else和switch两种分支语句。
循环结构
根据循环条件,重复性的执行某段代码。 有while、do…while、for三种循环语句。 注:JDK1.5提供了foreach循环,方便的遍历集合、数组元素。
if语句练习1
2)boolean b = true; if(b == false) //如果写成if(b=false)能编译通过吗?如果能,结果是? System.out.println("a"); else if(b) System.out.println("b"); else if(!b) System.out.println("c"); else System.out.println("d");
if-else语句应用举例
if语句例题1
从键盘输入小明的期末成绩。 当成绩为100分时,奖励一辆BMW; 当成绩为(80,99]时,奖励一个台iphone5s; 当成绩为[60,80]时,奖励一本参考书; 其它时,什么奖励也没有。
if语句例题2
编写程序:由键盘输入三个整数分别存入变量num1、 num2、num3,对它们进行排序(使用 if-else if-else), 并且从小到大输出。
for语句例题
编写程序FooBizBaz.java,从1循环到150并在每行打 印一个值,另外在每个3的倍数行上打印出“foo”, 在每个5的倍数行上打印“biz”,在每个7的倍数行上 打印输出“baz”。

面向对象之类的结构与关键字

面向对象之类的结构与关键字

class DataSwap{ public int a; public int b; } public class TestTransfer1 { public static void swap(DataSwap ds){ int tmp = ds.a; ds.a = ds.b; ds.b = tmp; System.out.println("swap方法里,a Field的值是" + ds.a + ";b Field的值是" + ds.b); } public static void main(String[] args) { DataSwap ds = new DataSwap(); ds.a = 6; ds.b = 9; swap(ds); System.out.println("交换结束后,a Field的值是" + ds.a + ";b Field的值是" + ds.b); } }
方法的参数传递 —基本数据类型的参数传递
方法的参数传递 —引用数据类型的参数传递
方法的参数传递 —引用数据类型的参数传递
方法的参数传递
public class TestTransfer { public static void swap(int a , int b){ int tmp = a; 请输出结果 a = b; b = tmp; System.out.println("swap方法里,a的值是" + a + ";b的值是" + b); } public static void main(String[] args) { int a = 6; int b = 9; swap(a , b); System.out.println("交换结束后,变量a的值是" + a + ";变量b的值是" + b); } }

尚硅谷_宋红康_第7章_异常处理

尚硅谷_宋红康_第7章_异常处理

7.3 异常处理机制一
捕获异常的有关信息:
与其它对象一样,可以访问一个异常对象的成员变量或调用它的 方法。
getMessage() 获取异常信息,返回字符串 printStackTrace() 获取异常类名和异常信息,以及异常出
现在程序中的位置。返回值void。
异常名称
说明信息
堆栈信息
7.3 异常处理机制一
...... //当产生ExceptionName1型异常时的处置措施 } catch( ExceptionName2 e ){ ...... //当产生ExceptionName2型异常时的处置措施 } [ finally{ ...... //无论是否发生异常,都无条件执行的语句 }]
7.3 异常处理机制一
7.3 异常处理机制一
异常的抛出机制
为保证程序正常执行,代码必须对可能出现的异常进行处理。
7.3 异常处理机制一
如果一个方法内抛出异常,该异常对象会被抛给调用者方法中处 理。如果异常没有在调用者方法中处理,它继续被抛给这个调用 方法的上层方法。这个过程将一直继续下去,直到异常被处理。 这一过程称为捕获(catch)异常。
finally语句和catch语句是任选的
7.3 异常处理机制一
7.3 异常处理机制一:举例
public class IndexOutExp { public static void main(String[] args) { String friends[] = { "lisa", "bily", "kessy" }; try { for (int i = 0; i < 5; i++) { System.out.println(friends[i]); } } catch (ArrayIndexOutOfBoundsException e) { System.out.println("index err"); } System.out.println("\nthis is the end"); }

[尚硅谷]_宋红康_Java之23种设计模式解析

[尚硅谷]_宋红康_Java之23种设计模式解析

[尚硅谷]_宋红康_Java之23种设计模式解析—————————————————————————————题目:Java 之23种设计模式解析一、设计模式概述总体来说设计模式分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

具体如下:其中创建型有:一、Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点二、Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。

三、Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。

四、Builder,建造模式:将一个复杂对象的构建与他的表示相分离,使得同样的构建过程可以创建不同的表示。

五、Prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。

行为型有:六、Iterator,迭代器模式:提供一个方法顺序访问一个聚合对象的各个元素,而又不需要暴露该对象的内部表示。

七、Observer,观察者模式:定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新。

八、Template Method,模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,TemplateMethod使得子类可以不改变一个算法的结构即可以重定义该算法得某些特定步骤。

九、Command,命令模式:将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,对请求排队和记录请求日志,以及支持可撤销的操作。

Java 集合体系、IO 体系、多线程、JDBC 经典面试题分析

Java 集合体系、IO 体系、多线程、JDBC 经典面试题分析

【面试题】
List、Set、Map存储数据的异同 谈谈 HashMap 在底层存储数据的实现 区分Collection 与 Collections(Collection & Map)的异同 如何实现List、Set、数组间的相互转换
ArrayList list = new ArrayList();
JDBC
一组规范:接口
JDBCMysqlImpl 调用
JDBCOracleImpl
JDBCSQLServerI mpl
HashMap
SortedMap
Properties
LinkedHashMap
TreeMap
Collection 接口方法
集合与数组间转换操作
List接口
List 集合里添加了一些根据索引来操作集合元素的 方法
void add(int index, Object ele) boolean addAll(int index, Collection eles) Object get(int index) int indexOf(Object obj) int lastIndexOf(Object obj) Object remove(int index) Object set(int index, Object ele) List subList(int fromIndex, int toIndex)
RandomAccessFile 类
构造器
public RandomAccessFile(File file, String mode) public RandomAccessFile(String name, String mode)

7. 尚硅谷_佟刚_Java基础_Java集合

7. 尚硅谷_佟刚_Java基础_Java集合

List Map Collections 工具类 Enumeration
Set 集合
• Set 集合不允许包含相同的元素,如果试把两个相同的元 素加入同一个 Set 集合中,则添加操作失败。 • Set 判断两个对象是否相同不是使用 == 运算符,而是根据 equals 方法
HashSet
• HashSet 是 Set 接口的典型实现,大多数时候使用 Set 集 合时都使用这个实现类。 • HashSet 按 Hash 算法来存储集合中的元素,因此具有很好 的存取和查找性能。 • HashSet 具有以下特点:
– – – – – – – – void add(int index, Object ele) boolean addAll(int index, Collection eles) Object get(int index) int indexOf(Object obj) int lastIndexOf(Object obj) Object remove(int index) Object set(int index, Object ele) List subList(int fromIndex, int toIndex)
ArrayList Vector

Map Collections 工具类 Enumeration
List
• List 代表一个元素有序、且可重复的集合,集合中的每个 元素都有其对应的顺序索引 • List 允许使用重复元素,可以通过索引来访问指定位置的 集合元素。 • List 默认按元素的添加顺序设置元素的索引。 • List 集合里添加了一些根据索引来操作集合元素的方法
hashCode() 方法
• HashSet 集合判断两个元素相等的标准:两个对象通过 equals() 方法比较相等,并且两个对象的 hashCode() 方法 返回值也相等。 • 如果两个对象通过 equals() 方法返回 true,这两个对象的 hashCode 值也应该相同。 • 重写 hashCode() 方法的基本原则

尚硅谷_宋红康_Java中数组结构及经典排序算法解析

尚硅谷_宋红康_Java中数组结构及经典排序算法解析

do-while 循环语句
语法格式
[初始化语句] do{ 语句或语句块; [更改语句;] }while(布尔值测试表达式);
应用举例
public class WhileLoop { public static void main(String args[]){ int result = 0, i=1; do{ result += i; i++; }while(i<=100); System.out.println("result=" + result); } }
每个数组都有一个属性length指明它的长度,例如:a.length 指明数组a的长度(元素个数) 数组一旦初始化,其长度是不可变的
经典题目
从键盘读入学生成绩,找出最高 分,并输出学生成绩等级。 成绩>=最高分-10 等级为’A’ 成绩>=最高分-20 等级为’B’ 成绩>=最高分-30 等级为’C’ 其余 等级为 ’D’
注意特殊写法情况:int[] x,y[]; x是一维数组,y是二维数组。 Java中多维数组不必都是规则矩阵形式
int[][] i = new int[3][2];
i[0][1] = 12;
12
i[0]
i[1] i[2]
int[][] i = new int[3][]; i[0] = new int[2]; i[1] = new int[3]; i[2] = new int[4];
分支结构2:switch语句
switch(表达式){ case 常量1: 语句1; break; case 常量2: 语句2; break; …… case 常量N: 语句N; break; default: 语句; break; }

尚硅谷入学测试套题A范本

尚硅谷入学测试套题A范本

尚硅谷入学测试套题A范本一、Java基础1.什么是Java?简要描述Java语言的特点和优势。

Java是一种跨平台的高级编程语言,具有简单、面向对象、健壮、安全等特点。

Java的优势在于其跨平台性,可以在不同操作系统上运行,且具有广泛的应用领域。

2.简述Java中的封装性,并给出一个示例。

封装性指的是将数据和处理数据的方法封装在一个类中,并通过访问修饰符进行访问控制。

示例:```javapublic class Student{private String name;private int age;public String getName(){return name;}public void setName(String name){ = name;}public int getAge(){return age;}public void setAge(int age){this.age = age;}}```3.什么是Java的继承?给出一个继承的示例,并解释其中的关键字和概念。

Java的继承是指一个类通过继承另一个类的属性和方法,实现代码复用和扩展的机制。

示例:```javapublic class Animal{protected String name;public void eat(){System.out.println(name + " is eating");}}public class Dog extends Animal{public Dog(String name){ = name;}public void bark(){System.out.println(name + " is barking");}}public class Main{public static void main(String[] args){Dog dog = new Dog("Tommy");dog.eat(); // 输出:Tommy is eatingdog.bark(); // 输出:Tommy is barking}}```在上述示例中,关键字"class Dog extends Animal"表示Dog类继承自Animal类,子类可以使用父类的属性和方法。

尚硅谷面试题

尚硅谷面试题

尚硅谷面试题尚硅谷是一家知名的IT培训机构,提供高质量的编程教育和就业服务。

作为一名学员或者准备面试的应聘者,了解尚硅谷的面试题目是非常重要的。

本文将为大家介绍几道尚硅谷的常见面试题,并且给出详细的解答和思路分析。

面试题一:谈谈Java中的多态性?思路分析:多态性是面向对象编程的重要特性之一,也是Java语言中常见的面试题目。

多态性通过继承和接口实现,实现了父类引用可以指向子类对象的特点。

在面试中,可以从多个角度来回答这个问题,包括多态的定义、实现方式、优点和应用场景等。

解答:多态性是指同一类型的变量,在不同的对象实例上表现出不同的行为。

在Java中,多态性通过继承和接口实现。

通过继承,我们可以定义一个父类,然后派生出多个子类,这些子类都拥有父类的属性和方法。

通过接口,我们可以定义一组规范,然后多个类实现这个接口,根据实现类的不同,调用相同的接口方法会得到不同的结果。

多态性的主要优点是增加代码的灵活性和可扩展性。

通过使用父类引用指向不同的子类对象,我们可以在运行时动态地选择调用哪个子类的方法,从而实现了代码的灵活性。

另外,当需要添加新的子类时,我们只需要继承或者实现相同的父类或接口,而不需要修改原有的代码,从而实现了代码的可扩展性。

多态性适用于很多场景,比如通过一个统一的接口来操作不同的实现类,实现代码的解耦和通用性;通过将子类对象当作父类对象使用,提高代码的灵活性和可维护性等。

但是需要注意,在进行多态操作时,需要保证父类引用指向的对象是其子类对象,否则会出现类型转换异常。

面试题二:谈谈Java中的异常处理机制?思路分析:异常处理是Java编程的重要部分,良好的异常处理能够提高程序的健壮性和容错性。

在面试中,可以从异常的概念和分类、处理方法、异常处理的最佳实践等方面来回答这个问题。

解答:在Java中,异常是指程序在运行时遇到的意外事件或错误条件。

异常分为受检异常(Checked Exception)和非受检异常(Unchecked Exception)。

尚硅谷_宋红康_参悟Java基础核心技术-精选文档

尚硅谷_宋红康_参悟Java基础核心技术-精选文档

– 移动领域应用,主要表现在消费和嵌入式领域,是指在各种小型 设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。
1.从java语言的诞生、特点说起
java之父Jgosling团队在开发”Green”项目时,发现C缺少垃圾回收系 统,还有可移植的安全性、分布程序设计、和多线程功能。最后,他们想 要一种易于移植到各种设备上的平台。 Java确实是从C语言和C++语言继承了许多成份,甚 至可以将Java看成是类C语言发展和衍生的产物。比 如Java语言的变量声明,操作符形式,参数传递,流 程控制等方面和C语言、C++语言完全相同。但同时, Java是一个纯粹的面向对象的程序设计语言,它继承 了 C++语言面向对象技术的核心。Java舍弃了C语言 中容易引起错误的指针(以引用取代)、运算符重载 (operator overloading)、多重继承(以接口 取代)等特性,增加了垃圾回收器功能用于回收不再 被引用的对象所占据的内存空间。JDK1.5又引入了 泛型编程(Generic Programming)、类型安全的 枚举、不定长参数和自动装/拆箱
现实世界中的分子、原子又是由什么构成的呢?原子核、 电子!那么,Java中用类class来描述事物也是如此
属 性:对应类中的成员变量 行 为:对应类中的成员方法 Field = 属性 = 成员变量,Method = (成员)方法 = 函数
Java语言是原生支持多线程的。在Java语言中,线程是一种特殊的 对象,它必须由Thread类或其子(孙)类来创建。
2.从java语言的市场需求来看
2019年2月 TIOBE 编程语言排行榜单
2.从java语言的市场需求来看
2019年2月 TIOBE 编程语言排行榜单

尚硅谷_宋红康_sql面试题

尚硅谷_宋红康_sql面试题
1). 查询出各个部门的最高工资 SELECT max(salary) FROM employees GROUP BY department_id
2). 查询出 1) 对应的查询结果的最低值: 各个部门中最低的最高工
资(无法查询对应的 department_id) SELECT min(max(salary)) FROM employees GROUP BY department_id
2). 各个部门中, 平均工资等于 1) 的那个部门的部门号是多少
SELECT department_id FROM employees GROUP BY department_id HAVING avg(salary) = (
SELECT max(avg(salary)) FROM employees GROUP BY department_id )
11. 查询平均工资最高的部门的 manager 的详细信息: last_name,
department_id, email, salary
1). 各个部门中, 查询平均工资最高的平均工资是多少
SELECT max(avg(salary)) FROM employees GROUP BY department_id
lastnamesalaryselectlastnamesalaryfromemployeeswheresalaryselectminsalaryfromemployees查询平均工资最低的部门信息selectfromdepartmentswheredepartmentidselectdepartmentidfromemployeesgroupdepartmentidhavingavgsalaryselectminavgsalaryfromemployeesgroup玩转java系列android资料下载可访问尚硅谷中国官网wwwatguigucom下载区查询平均工资最低的部门信息和该部门的平均工资selectselectavgsalaryfromemployeeswheredepartmentidddepartmentidfromdepartmentswhereddepartmentidselectdepartmentidfromemployeesgroupdepartmentidhavingavgsalaryselectminavgsalaryfromemployeesgroup查询平均工资最高的job信息jobid分组查询最高的平均工资selectmaxavgsalaryfromemployeesgroupjobidselectjobidfromemployeesgroupjobidhavingavgsalaryselectmaxavgsalaryfromemployeesgroup对应的job信息selectfromjobs玩转java系列android资料下载可访问尚硅谷中国官网wwwatguigucom下载区wherejobidselectjobidfromemployeesgroupjobidhavingavgsalaryselectmaxavgsalaryfromemployeesgroup查询出公司的平均工资selectavgsalaryfromemployees的部门idselectdepartmentidfromemployeesgroupdepartmentidhavingavgsalaryselectavgsalaryfromemployees查询出公司中所有manager的详细信息

尚硅谷_宋红康_数据结构_排序算法

尚硅谷_宋红康_数据结构_排序算法
数据结构-排序算法
讲师:宋红康
新浪微博:尚硅谷-宋红康
JavaSE知识图解
JAVA发展历程 JAVA环境搭建 基础程序设计
Eclipse使用 泛型
数据类型
运算符
流程控制
数组
枚举 装箱/拆箱 可变 参数 JAVA 新特 性 类和 对象 属性
面向对象编程
方法
三大 特性
接口
设计模式
应用程序开发
Annotation
直接插入排序、折半插入排序、Shell排序
归并排序 桶式排序 基数排序
InsertSort.java
直接插入排序效率分析
算法的时间效率:在最坏的情况下,所有元素的比较次 数总和为(0+1+2+…+n-1)= ;在其他情况下,
也要考虑移动元素的次数,故时间复杂度为
算法的空间效率:空间效率很高,只需要一个附加程序 单元用于交换,其空间效率为 算法的稳定性:稳定
异常处理 多线程 反射
连接Oracle
JDBC
集合
类库
IO
网络
I ? T?
算法+数据结构=程序
数据结构
编程的本质就是对数据(信息以数据的形式而存在)的 处理,实际编程中不得不处理大量数据,因此实际动手编 程之前必须先分析处理这些数据,处理数据之间存在的关 系。 现实的数据元素之间有着纷繁复杂的逻辑关系,需要采 用合适的物理结构来存储这些数据,并以此为基础对这些 数据进行相应的操作。同时,还要分析这些数据结构在时 间、空间上的开销的优劣。这种专门研究应用程序中数据 之间逻辑关系、存储方式及其操作的学问就是数据结构。
SelectSort2.java
直接选择排序效率分析

尚硅谷_宋红康_第10章_枚举类与注解

尚硅谷_宋红康_第10章_枚举类与注解

第10章枚举类与注解讲师:宋红康新浪微博:尚硅谷-宋红康Java 基础知识图解面向对象编程JDBC Java 发展历程JAVA 环境搭建基础程序设计Eclipse 使用IDEA 使用泛型元注解装箱/拆箱枚举可变参数Lambda表达式Stream APIDate/Time APIJava 新特性Oracle/MySQL 集合IO/NIO 类库多线程异常处理反射网络应用程序开发设计模式接口三大特性类的结构类/对象数据结构排序算法数组流程控制运算符数据类型关键字注解的使用12枚举类的使用10-1 枚举类的使用10.1 枚举类的使用主要内容:●如何自定义枚举类●如何使用关键字enum定义枚举类●Enum类的主要方法●实现接口的枚举类10.1.1 枚举类的使用:入门●类的对象只有有限个,确定的。

举例如下:星期:Monday(星期一)、......、Sunday(星期天)性别:Man(男)、Woman(女)季节:Spring(春节)......Winter(冬天)支付方式:Cash(现金)、WeChatPay(微信)、Alipay(支付宝)、BankCard(银行卡)、CreditCard(信用卡)就职状态:Busy、Free、Vocation、Dimission订单状态:Nonpayment(未付款)、Paid(已付款)、Delivered(已发货)、Return(退货)、Checked(已确认)Fulfilled(已配货)、线程状态:创建、就绪、运行、阻塞、死亡●当需要定义一组常量时,强烈建议使用枚举类●枚举类的实现JDK1.5之前需要自定义枚举类JDK 1.5 新增的enum 关键字用于定义枚举类●若枚举只有一个对象, 则可以作为一种单例模式的实现方式。

●枚举类的属性枚举类对象的属性不应允许被改动, 所以应该使用private final 修饰枚举类的使用private final 修饰的属性应该在构造器中为其赋值若枚举类显式的定义了带参数的构造器, 则在列出枚举值时也必须对应的传入参数1.私有化类的构造器,保证不能在类的外部创建其对象2.在类的内部创建枚举类的实例。

尚硅谷Java——宋红康笔记【day11-day18】

尚硅谷Java——宋红康笔记【day11-day18】

尚硅⾕Java——宋红康笔记【day11-day18】day11Eclipse中的快捷键:* 1.补全代码的声明:alt + /* 2.快速修复: ctrl + 1* 3.批量导包:ctrl + shift + o* 4.使⽤单⾏注释:ctrl + /* 5.使⽤多⾏注释: ctrl + shift + /* 6.取消多⾏注释:ctrl + shift + \* 7.复制指定⾏的代码:ctrl + alt + down 或 ctrl + alt + up* 8.删除指定⾏的代码:ctrl + d* 9.上下移动代码:alt + up 或 alt + down* 10.切换到下⼀⾏代码空位:shift + enter* 11.切换到上⼀⾏代码空位:ctrl + shift + enter* 12.如何查看源码:ctrl + 选中指定的结构或 ctrl + shift + t* 13.退回到前⼀个编辑的页⾯:alt + left* 14.进⼊到下⼀个编辑的页⾯(针对于上⾯那条来说的):alt + right* 15.光标选中指定的类,查看继承树结构:ctrl + t* 16.复制代码: ctrl + c* 17.撤销: ctrl + z* 18.反撤销: ctrl + y* 19.剪切:ctrl + x* 20.粘贴:ctrl + v* 21.保存: ctrl + s* 22.全选:ctrl + a* 23.格式化代码: ctrl + shift + f* 24.选中数⾏,整体往后移动:tab* 25.选中数⾏,整体往前移动:shift + tab* 26.在当前类中,显⽰类结构,并⽀持搜索指定的⽅法、属性等:ctrl + o* 27.批量修改指定的变量名、⽅法名、类名等:alt + shift + r* 28.选中的结构的⼤⼩写的切换:变成⼤写: ctrl + shift + x* 29.选中的结构的⼤⼩写的切换:变成⼩写:ctrl + shift + y* 30.调出⽣成getter/setter/构造器等结构: alt + shift + s* 31.显⽰当前选择资源(⼯程 or ⽂件)的属性:alt + enter* 32.快速查找:参照选中的Word快速定位到下⼀个:ctrl + k* 33.关闭当前窗⼝:ctrl + w* 34.关闭所有的窗⼝:ctrl + shift + w* 35.查看指定的结构使⽤过的地⽅:ctrl + alt + g* 36.查找与替换:ctrl + f* 37.最⼤化当前的View:ctrl + m* 38.直接定位到当前⾏的⾸位:home* 39.直接定位到当前⾏的末位:end⾯向对象的特征之⼆:继承性 why?⼀、继承性的好处:① 减少了代码的冗余,提⾼了代码的复⽤性② 便于功能的扩展③ 为之后多态性的使⽤,提供了前提⼆、继承性的格式: class A extends B{}A:⼦类、派⽣类、subclassB:⽗类、超类、基类、superclass2.1体现:⼀旦⼦类A继承⽗类B以后,⼦类A中就获取了⽗类B中声明的所有的属性和⽅法。

115个Java面试题和答案——终极(下)_尚硅谷_宋红康

115个Java面试题和答案——终极(下)_尚硅谷_宋红康

题目:115个Java面试题和答案——终极(下)第一篇讨论了面向对象编程和它的特点,关于Java和它的功能的常见问题,Java的集合类,垃圾收集器,本章主要讨论异常处理,Java小应用程序,Swing,JDBC,远程方法调用(RMI),Servlet和JSP。

异常处理Java小应用程序(Applet)SwingJDBC远程方法调用(RMI)ServletJSP异常处理43.Java中的两种异常类型是什么?他们有什么区别?Java中有两种异常:受检查的(checked)异常和不受检查的(unchecked)异常。

不受检查的异常不需要在方法或者是构造函数上声明,就算方法或者是构造函数的执行可能会抛出这样的异常,并且不受检查的异常可以传播到方法或者是构造函数的外面。

相反,受检查的异常必须要用throws语句在方法或者是构造函数上声明。

这里有Java异常处理的一些小建议。

44.Java中Exception和Error有什么区别?Exception和Error都是Throwable的子类。

Exception用于用户程序可以捕获的异常情况。

Error 定义了不期望被用户程序捕获的异常。

45.1 throw和throws有什么区别?throw关键字用来在程序中明确的抛出异常,相反,throws语句用来表明方法不能处理的异常。

每一个方法都必须要指定哪些异常不能处理,所以方法的调用者才能够确保处理可能发生的异常,多个异常是用逗号分隔的。

45.2 异常处理的时候,finally代码块的重要性是什么?无论是否抛出异常,finally代码块总是会被执行。

就算是没有catch语句同时又抛出异常的情况下,finally代码块仍然会被执行。

最后要说的是,finally代码块主要用来释放资源,比如:I/O缓冲区,数据库连接。

46.异常处理完成以后,Exception对象会发生什么变化?Exception对象会在下一个垃圾回收过程中被回收掉。

尚硅谷_多线程

尚硅谷_多线程

Thread类的有关方法(1)
void start(): 启动线程 run(): 线程在被调度时执行的操作 String getName(): 返回线程的名称 void setName(String name):设置该线程名称 static currentThread(): 返回当前线程
新浪微博:尚硅谷-宋红康
JavaSE知识图解
JAVA发展历程 JAVA环境搭建 基础程序设计
Eclipse使用 泛型
数据类型
运算符
流程控制
数组
枚举 装箱/拆箱 可变 参数 JAVA 新特 性 类和 对象 属性
面向对象编程
方法
三大 特性
接口
设计模式
应用程序开发
Annotation
异常处理 多线程 反射
Java对于多线程的安全问题提供了专业的解决方式: 同步代码块 1. synchronized (对象){ // 需要被同步的代码; } 2. synchronized还可以放在方法声明中,表示整个方法 为同步方法。 例如: public synchronized void show (String name){ …. }
补充:线程的分类
Java中的线程分为两类:一种是守护线程,一种是用 户线程。 它们在几乎每个方面都是相同的,唯一的区别是判 断JVM何时离开。 守护线程是用来服务用户线程的,通过在start()方 法前调用thread.setDaemon(true)可以把一个用户 线程变成一个守护线程。 Java垃圾回收就是一个典型的守护线程。 若JVM中都是守护线程,当前JVM将退出。
线程(thread),进程可进一步细化为线程,是一个程 序内部的一条执行路径。
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

访问控制举例
class Child extends Parent{ //设父类和子类在同一个包内 private int c1 = 21; public int c2 = 22; private void cm1(){System.out.println("in cm1() c1=" + c1);} public void cm2(){System.out.println("in cm2() c2=" + c2);} public static void main(String args[]){ int i; Parent p = new Parent(); i = p.f2; // i = p.f3; i = p.f4; p.fm2(); // p.fm3();p.fm4(); Child c = new Child(); i = c.f2; // i = c.f3; i = c.f4; i = c.c1; // i = c.c2; c.cm1(); // c.cm2(); c.fm2(); c.fm3(); c.fm4() } }
class Parent { public void method1() {} }
重写方法举例(2)
class Child extends Parent { private void method1() {}
//非法,子类中的method1()的访问权限private比被覆盖方法的访问权限public弱
4.1 面向对象特征之二:继承
为描述和处理个人信息,定义类Person:
public class Person { public String name; public int age; public Date birthDate;
Person +name : String +age : int +birthDate : Date +getInfo() : String
} public class UseBoth { public static void main(String[] args) { Parent p1 = new Parent(); Child p2 = new Child(); p1.method1(); p2.method1(); } }
练习2
练习1
3.根据下图实现类。在TestCylinder类中创建Cylinder类的对 象,设置圆柱的底面半径和高,并输出圆柱的体积。
Circle (圆)
-radius :double
Circle(): 构造方法,将radius属性初始化为1 +setRadius(double radius) : void +getRadius(): double +findArea():double 计算圆的面积
第4章 高级类特性1
讲师:宋红康
新浪微博:/songhk8686
JavaSE知识图解
JAVA发展历程 JAVA开发环境搭建
基础程序设计
JAVA新特性
数据类型 可变 Annotation 参数 封装
控制语句
数组
方法
泛型
枚举
装箱、拆箱
面向对象程序设计
Eclipse使用
继承
Cylinder (圆柱)
-length:double Cylinder(): 构造方法,将length属性初始化为1 +setLength(double length):void +getLength():double +findVolume() :double 计算圆柱体积
4.2 方法的重写(override)
4.3 四种访问权限修饰符
Java权限修饰符public、protected、private置于类的成员定 义前,用来限定对象对该类对象成员的访问权限。
修饰符 private default protected 类内部 Yes Yes Yes 同一个包 Yes Yes Yes 子类 任何地方
public
定义:在子类中可以根据需要对从父类中继承来的 方法进行改造,也称方法的重置、覆盖。在程序执 行时,子类的方法将覆盖父类的方法。
要求:
重写方法必须和被重写方法具有相同的方法名称、参数列 表和返回值类型。
重写方法不能使用比被重写方法更严格的访问权限。
重写和被重写的方法须同时为static的,或同时为非static的 子类方法抛出的异常不能大于父类被重写方法的异常
类的继承 (5)
子类继承了父类,就继承了父类的方法和属性。 在子类中,可以使用父类中定义的方法和属性,也可 以创建新的数据和方法。 在Java 中,继承的关键字用的是“extends”,即子类不 是父类的子集,而是对父类的“扩展”。
关于继承的规则:
子类不能直接访问父类中私有的(private)的成员变量和方法。
重写方法举例(1)
public class Person { public String name; public int age; public String getInfo() { return "Name: "+ name + "\n" +"age: "+ age; } Person p1=new Person(); } public class Student extends Person { p1.getInfo(); public String school; //调用Person类的getInfo()方法 public String getInfo() { //重写方法 Student s1=new Student(); return "Name: "+ name + "\nage: "+ age s1.getInfo(); + "\nschool: "+ school; } //调用Student类的getInfo()方法 public static void main(String args[]){ 这是一种“多态性”:同名的方法, Student s1=new Student(); 用不同的对象来区分调用的是哪一个 ="Bob"; 方法。 s1.age=20; s1.school="school2"; System.out.println(s1.getInfo()); //Name:Bob age:20 school:school2 } }
单继承举例
Person
+name : String +age : int +birthDate : Date +getInfo() : String
superclass
Soldier
Student
Officer
subclass
+school : String
Graduate +major : String +register() : void
//Student类继承了父类Person的所有属性和方 法,并增加了一个属性school。Person中的属性 和方法,Student都可以利用。
Student +school : String
继 承(3)
为什么要有继承?
多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行 为,只要继承那个类即可。
Student
number:long int:math int:english int:computer +Student(n:String s:char a:int k:long m:int e:int c:int) +aver():double +max():int +min():int +toString():String
Student
+name : String +age : int +birthDate : Date +school : String
+getInfo() : String
public String getInfo() {...} }
继 承(2)
通过继承,简化Student类的定义:
Person
1.如果现在父类的一个方法定义成private访问权限,在 子类中将此方法声明为default访问权限,那么这样还 叫重写吗?(NO)
2. 修改练习1.1中定义的类Kids,在Kids中重新定义 employed()方法,覆盖父类ManKind中定义的 employed()方法,输出“Kids should study and no job.”
public String getInfo() {...}
}
继 承(1)
为描述和处理学生信息,定义类Student:
public class Student { public String name; public int age; public Date birthDate; public String school;
此处的多个类称为子类,单独的这个类称为父类 (基类或超类)。可以理解为:“子类 is a 父类”
类继承语法规则:
class Subclass extends Superclass{ }
继 承(4)
作用:
继承的出现提高了代码的复用性。 继承的出现让类与类之间产生了关系,提供 了多态的前提。 不要仅为了获取其他类中某个功能而去继承
多态
设计模式
异常
包应用程序开发连接Or NhomakorabeacleJDBC
相关文档
最新文档