参悟Java基础核心技术_尚硅谷_宋红康

合集下载

尚硅谷_宋红康_第5章_高级类特性2

尚硅谷_宋红康_第5章_高级类特性2

关键字static
使用范围:
在Java类中,可用static修饰属性、方法、代码块、内部类
被修饰后的成员具备以下特点:
随着类的加载而加载 优先于对象存在
修饰的成员,被所有对象所共享 访问权限允许时,可不创建对象,直接被类调用
name:Lilei age:21 country:
类方法
因为不需要实例就可以访问static方法,因此static方法内部不 能有this。(也不能有super ? ) 重载的方法需要同时为static的或者非static的。
class Person { private int id; private static int total = 0; public static void setTotalPerson(int total){ this.total=total; //非法,在static方法中不能有this,也不能有super } public Person() { total++; id = total; }} public class TestPerson { public static void main(String[] args) { Person.setTotalPerson(3); } }
if(instance == null){ instance = new Singleton(); } return instance;
暂时懒汉式还存在线程 安全问题,讲到多线程 时,可修复
} }
举例:ng.Runtime
public class TestStatic { public static void main(String[] args) { Circle c1 = new Circle(2.0); Circle c2 = new Circle(3.0); c1.display(); c2.display(); } }

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

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

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"); }

尚硅谷_宋红康_第2章_Java基本语法2

尚硅谷_宋红康_第2章_Java基本语法2

静态初始化:在定义数组的同时就为数组元素分配空间并赋 值。 MyDate dates[] = { int a[] = new int[]{ 3, 9, 8}; new MyDate(22, 7, 1964), int[] a = {3,9,8}; new MyDate(1, 1, 2000), new MyDate(22, 12, 1964) }
练习1
1.(1)定义类Pritimive,在类中定义一个有3个元素的boolean类型的 数组t作为其成员变量。数组元素未赋值。 定义类Array1,在Array1的main()方法中创建Pritimive对象d, 输出其成员变量t的三个元素值。 练习目的:检验基本数据类型数组创建时的自动赋值。 (2)给对象d的成员变量t赋值为{true,true,true},并输出t的三个元 素值。 2. 定义类Student,包含三个属性:学号number(int),年级 state(int),成绩score(int)。 创建20个学生对象,学号为1到20,年 级和成绩都由随机数确定,打印出3年级(state值为3)的学生信息。 提示:生成随机数:Math.random(),返回值类型double; 四舍五入取整:Math.round(double d),返回值类型long。
一维数组声明
一维数组的声明方式:
type var[] 或 type[] var; 例如:
int a[]; int[] a1; double b[]; Mydate[] c; //对象数组
Java语言中声明数组时不能指定其长度(数组中元素的数), 例如: int a[5]; //非法
一维数组初始化
0x1234 null null null null null stu[0]= 0x3344

[尚硅谷]_宋红康_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)

尚硅谷_宋红康_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类,子类可以使用父类的属性和方法。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

对于class的权限修饰只可以用public和default(缺省)。
public类可以在任意地方被访问。 default类只可以被同一个包内部的类访问。
相应的调用者
public
protected default
private
2.2 面向对象的特征二:继承性
相同的代码 人类
通过“继承”实现
2.从java语言的市场需求来看
2014年 2月 TIOBE 编程语言排行榜单
2.从java语言的市场需求来看
2014年 2月 TIOBE 编程语言排行榜单
二、 如何看待java基础? 如何理解面向对象思想?
Java 基础
深入讲授 java 语言的核心内容:
涵盖 java 的基本语法结构、java的面向对象特征、 java集合框架体系、java泛型、异常处理、java 注 释、java的 io 流体系、java多线程编程、java网 络通信编程和 java 反射机制; 覆盖了ng、 java.util、java.text、 java.io 和 java.nio、java.sql 包下绝大部分 类和接口。 全面介绍 java 7 的二进制整数、菱形语法、增强 switch语句、多异常捕获、自动关闭资源的try语句、 nio.2、aio等新特性。
四种访问权限修饰符
Java权限修饰符public、protected、private置于类的成员定 义前,用来限定对象对该类成员的访问权限。
修饰符 private (缺省) protected public 类内部 Yes Yes Yes Yes 同一个包 Yes Yes Yes Yes Yes Yes 子类 任何地方
IO
反射
网络
何谓“面向对象”的编程思想?
顿 悟?OR 渐 悟?
例子:人把大象装冰箱 1.打开冰箱 2.把大象装进冰箱 3.把冰箱门关住 人 冰箱 大象
人{ 打开(冰箱){ 冰箱.开门(); } 操作(大象){ 大象.进入(冰箱); } 关闭(冰箱){ 冰箱.关门(); } } 冰箱{ 开门(){} 关门(){} }
java语言的主要特性
Java语言是安全的。 Java通常被用在网络环境中,为此, Java提供 了一个安全机制以防恶意代码的攻击。如:安全防范机制(类 ClassLoader),如分配不同的名字空间以防替代本地的同名类、 字节代码检查。 Java语言是体系结构中立的。 Java程序(后缀为 java的文件)在 Java平台上被编译为体系结构中立的字节码格式(后缀为 class的文 件),然后可以在实现这个 Java平台的任何系统中运行。 Java语言是解释型的。如前所述, Java程序在 Java平台上被编译为 字节码格式,然后可以在实现这个 Java平台的任何系统的解释器中运 行。 Java是性能略高的。与那些解释型的高级脚本语言相比, Java的性 能还是较优的。 Java语言是原生支持多线程的。在 Java语言中,线程是一种特殊的 对象,它必须由 Thread类或其子(孙)类来创建。
练习:创建Java自定义类
步骤:
1. 定义类(考虑修饰符、类名) 2. 编写类的属性(考虑修饰符、属性类型、属性名、 初始化值) 3. 编写类的方法(考虑修饰符、返回值类型、方法名、 形参等)
Байду номын сангаас提示:
定义Person、Animal、Bird、Zoo等类,加以体会。
2.面向对象的三大特征
封装 (Encapsulation) 继承 (Inheritance) 多态 (Polymorphism)
大象{ 进入(冰箱){ } }
面向过程
面向对象
学习面向对象内容的三条主线
1.java类及类的成员 2.面向对象的三大特征 3.其它关键字
1.java类及类的成员
现实世界万事万物是由分子、原子构成的。同理,Java代 码世界是由诸多个不同功能的类构成的。 面向对象程序设计的重点是类的设计
现实世界中的分子、原子又是由什么构成的呢?原子核、 电子!那么,Java中用类class来描述事物也是如此 属 性:对应类中的成员变量 行 为:对应类中的成员方法
特有的代码 学生类
特有的代码 教师类
特有的代码 工人类
特有的代码 农民类
继承的思想
人类
继承 (extends)
教师类
学生类
工人类
兽医类
面向对象思想“落地”法则(三)
继承的思想
多个类中存在相同属性和行为时,将这些内容抽取到 单独一个类中,那么多个类无需再定义这些属性和行 为,只要继承那个类即可。
参悟Java基础 核心技术
讲师:宋红康
微信:shkstart
一、 Why is
?
Java在各领域中的应用
• 从Java的应用领域来分,Java语言的应用方向主要表现 在以下几个方面:
– 企业级应用:主要指复杂的大企业的软件系统、各种类型的网站。 Java的安全机制以及它的跨平台的优势,使它在分布式系统领域 开发中有广泛应用。应用领域包括金融、电信、交通、电子商务 等。 – Android平台应用:Android应用程序使用Java语言编写。 Android开发水平的高低很大程度上取决于Java语言核心能力是 否扎实。 – 移动领域应用,主要表现在消费和嵌入式领域,是指在各种小型 设备上的应用,包括手机、PDA、机顶盒、汽车通信设备等。
1.java类及类的成员
如何使用java类?
java类的实例化,即创建类的对象
类(class)和对象(object)是面向对象的核心概念
完成工程需求时: 先去找具有所需功能的对象来用 如果该对象不存在,那么创建一个具有所需功能的对象 这样简化开发并提高复用
类和对象的关系
可以理解为:类 = 汽车设计图;对象 = 实实在在的汽车
java语言的主要特性
Java语言是易学的。 Java语言的语法与 C语言和 C++语言很接近,使 得大多数程序员很容易学习和使用 Java。 Java语言是强制面向对象的。 Java语言提供类、接口和继承等原语, 为了简单起见,只支持类之间的单继承,但支持接口之间的多继承, 并支持类与接口之间的实现机制(关键字为 implements)。 Java语言是分布式的。 Java语言支持 Internet应用的开发,在基 本的 Java应用编程接口中有一个网络应用编程接口( java net), 它提供了用于网络应用编程的类库,包括 URL、 URLConnection、 Socket、 ServerSocket等。 Java的 RMI(远程方法激活)机制也 是开发分布式应用的重要手段。 Java语言是健壮的。 Java的强类型机制、异常处理、垃圾的自动收 集等是 Java程序健壮性的重要保证。对指针的丢弃是 Java的明智选 择。
应该将legs属性保护起来, 防止乱用。 保护的方式:信息隐藏
问题:xb.legs = -1000;
面向对象思想“落地”法则(二)
Java 中通过将数据声明为私有的 (private) ,再提供公 共的(public)方法:getXxx()和setXxx()实现对该属性 的操作,以实现下述目的:
隐藏一个类中不需要对外提供的实现细节; 使用者只能通过事先定制好的方法来访问数据,可以方 便地加入控制逻辑,限制对属性的不合理操作; 便于修改,增强代码的可维护性;
Field = 属性 = 成员变量,Method = (成员 )方法 = 函数
1.java类及类的成员
类的成员构成 version 1.0
语法格式:
定义类的属性:修饰符 类型 属性名 = 初值 ; 定义类的方法:修饰符 返回值类型 方法名 ( 参数列表 ) { 方法体语句; }
类的成员构成 verson 2.0
类的实例化: Car c = new Car();
面向对象思想“落地”法则(一)
使用new +构造器创建一个新的对象;
使用“对象名.对象成员”的方式访问对象成员(包括属性 和方法); 如果创建了一个类的多个对象,对于类中定义的属性,每 个对象都拥有各自的一套副本,且互不干扰。 在一个类中:类中的方法可以直接访问类中的成员变量或 其它方法。(例外:static方法访问非static,编译不通 过。)
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()); } }
Java基础知识图解
JAVA发展历程
JAVA环境搭建
基础程序设计
Eclipse使用 泛型 数据类型
运算符
流程控制
数组
枚举
装箱/拆箱
面向对象编程
类和 对象 属性
三大 特性
可变 参数 Annotation
JAVA 新特 性
方法
接口
设计模式
应用程序开发
相关文档
最新文档