码迷,mamicode.com
首页 > 其他好文 > 详细

笔记2

时间:2017-05-14 16:55:21      阅读:192      评论:0      收藏:0      [点我收藏+]

标签:jdk   逗号   chat   分享   自动   抽象方法   多级   character   运行   

02/13
一.Java语言
1、①特点
       跨平台、面向对象、安全性
    ②开发环境搭建
      a.开发工具
        eclipse、myeclipse
      b.JDKjava包、JRE运行时环境、JVM虚拟机
   ③Java文件
      *.java源文件
      *.class可执行文件/字节码文件
   ④新建Java类
      java都是以class的形式存在
       public class 类名{
           访问修饰符 数据类型 属性名;
             ------
           访问修饰符 返回值类型 方法名(参数列表){
                方法体
           return 和返回值类型相兼容的数据;
          }
      }
    ⑤变量
      a.变量必须要有明确的类型,java的数据类型有八种:
           char->
        byte->short->int->long->float->double
          boolean
      b.引用数据类型
         类、数组、接口
      c.成员变量和局部变量
    ⑥方法
      对象行为,方法中一般封装某一个特定的功能
      方法分为两类:
       a.没有返回值的方法,访问修饰符为void(不能省略),方法中方法体里面可以没有return
       b.有返回值的方法,要定义合适的返回值类型,方法体
          中需要有return返回相对应的值。
          形参和实参
   ⑦对象使用
      初始化对象:类名 对象名=new 类名();
      访问对象属性 对象名.属性名 可以赋值也可以获取属性值

      访问对象方法 对象名.方法名 可以调用对象的方法,如果
      方法有返回值,需要定义一个变量来接收
   ⑧String 字符串
      String是一个类,String的实例是对象,如:String name="jack";

表:

技术分享

02/14

软件出现的目的

用计算机的语言描述现实世界

发现类 发现类的属性及方法

用计算机解决现实世界的问题
描述
面向对象的思想 → 面向对象的世界

面向对象设计和开发程序的好处
交流更加流畅
提高设计和开发效率

 


面向对象 02/15

构造方法是用来描述对象创建的过程,构造方法在对象创建的过程中被调用

构造方法:

无返回值类型 与类名相同
↑ ↑
访问修饰符 构造方法符(){
      //初始化代码 ↓
} 可以指定参数

如果类中没有写构造方法,系统会默认提供一个无参的构造方法,如果类中出现了构造
方法,系统不会提供默认的无参构造方法。

1.通过new关键字在内存中申请空间
2.给dog对象的属性进行赋值
3.调用dog对象的方法

02/16
方法重载(同类)
1.方法名相同
2.参数项不同
3.与返回值、访问修饰符无关


this的用法02/17

this关键字的用法
调用属性
this.health=100;
this.name="大黄";

调用方法
this.print();

调用构造方法
this(); →如果调用必须是构造方法中的第一条语句
this("小黑",100,100,"黑");


封装 02/20
封装的概念:
将类的某些信息隐藏在内部,不允许外部程序直接访问,而是通过该类提供的方法
来实现对隐藏信息的操作和访问

封装的好处
隐藏类的实现细节
方便加入控制语句
方便修改实现
只能通过制定方法访问数据

封装步骤
修改属性的可见性 → 设为Private

创建共有的getter/sether方法 → 用于属性的读写

在getter/sether 方法中加入属性控制语句 → 对数学值得合法性进行判断

02/21
* 封装
* 1.将属性私有化,访问修饰符设为private,属性只能在本类中使用
* 2.在类中给属性提供相对的get/set的方法,给外部的程序访问属性
* 3.在属性的相对应的方法中,提供业务逻辑的判断
* 4.在封装的时候,如果属性设置业务逻辑的判断,在相对应的构造方
* 法中需要调用相对应的set方法

static关键字 02/22

static的修饰的资源属于类级别的资源,静态的资源,对于类的所有实例
对象共享资源。
static关键字可以用来修饰属性、方法、代码块、内部类。
static修饰的资源,在类加载期间执行。//类加载---加载文件时

1.static修饰的属性
static关键字修饰的属性,属于对类所有实例对象共享的变量。
访问静态的属性:类名.属性名//类级别可以直接点访问

2.static修饰的方法
static关键字修饰的方法,属于静态方法,可以直接类名.方法名()进行调用,
一般是吧静态方法作为工具方法。
静方法中不能调用对象的资源(对象属性、对象方法)

3.static修饰的代码块
在类加载的时候执行,应为类只加载一次,所以static的代码块也只运行一次,
一般是使用static代码块来加载一些静态的资源,比如说配置原件。

static修饰符与非static修饰的区别

static、非private修饰 非static、private修饰

属性 类属性、类变量 实例属性、实例变量

方法 类方法 实例方法

类名.属性 对象.属性
调用方式 类名.方法名 对象.方法()
对象.属性
对象.方法()

归属 类 单个对象


继承 02/23
1.继承的前提条件
子类和父类之间必须满足‘子类 is a 父类’的逻辑关系,才能有继承
2.继承的优点
a.提高了代码之间的重用性(继承后子类共用父类代码)
b.提高了代码后期的可维护性(后期代码中需要添加或删除某些代码时只需要修改父
类代码即可)
3.继承步骤
a.将多个类中的共有属性和方法提取出来,建立一个父类
b.在子类后面使用extends关键字完成继承 子类 extends 父类
c.在子类中可以调用父类的代码
注:在java中属于单继承,在extends关键字后面只能有一个父类

02/24

子类访问父类成员 使用super关键字
访问父类构造方法
super();
super(name,health,love); 在子类构造方法中调用切必须是第一句

访问父类属性
super(name);

访问父类方法
super.print();

子类 不能被继承的 父类 资源

private成员
子类与父类不在同包,使用默认访问权限的成员
构造方法

访问修饰符protected
可以修饰属性和方法
本类、同包、子类可以访问

访问修饰符调用范围
private: 本类
默认: 本类 同包
pritected:本类 同包 子类
public: 本类 同包 子类 其他

02/27
多重继承关系的初始化顺序

父类属性→
            父类构造方法→
                             子类属性→
                                        子类构造方法

一、对象初始化过程:
1.在创建类之前,检查类是否已加载(检查硬盘上的.class文件是否加载到内存中)
如果没有加载就先加载父类的文件,在加载本类的文件。

Java使用的加载的策略:懒惰式加载(按需加载),用到的时候加载,只加载一次

2.分配对象的空间。递归分配所有父类和子类的属性空间。
属性会自动初始化为‘0’值

3.给属性赋值。

4.调用父类的构造方法。(默认调用父类的无参构造方法)

5.调用本类的构造方法。

方法名重写的规则(子类)@Overide//检测是否为重写
1.方法名相同
2.参数列表相同
3.返回值类型相同或者其子类;
4.访问权限不能严于父类

02/28
Super关键字来访问父类的成员
super只能出现在子类的方法和构造方法中
super调用构造方法时,只能是第一句
super不能访问父类的private成员

一、abstract关键字
abstract关键字表示的是抽象的意思,可以用来修饰类和方法。修饰类我们称之为
抽象类,修饰方法我们称之为抽象方法

1.abstract修饰类,抽象类
public abstract class 类名{}
抽象类用来表示一些抽象的概念。
抽象类的特点:
a.抽象类不能被实例化
b.抽象类可以有属性、方法、构造方法,是用来给子类继承的
c.抽象类中的方法不一定全部都是抽象方法。

2.abstract修饰方法,抽象方法
访问修饰符 abstract 返回值类型 方法名(参数列表);
抽象方法不需要自己实现,由子类来实现
抽象方法的特点:
a.抽象方法没有方法体
b.抽象方法必须出现在抽象类中
c.一个类继承抽象类之后必须要实现里面的所有抽象方法//普通类中

3.抽象类可以继承抽象类


final 03/01
一、final关键字;最终的
1.final关键字可以用来修饰类、属性、方法
2.final关键字修饰的类不能再被继承。如:String
String类是final修饰的类,不能被继承。
3.final关键字修饰的方法,不能再被子类重写。
4.final关键字修饰的变量,初始化以后值不能再发生改变。
在java中使用static和final关键字共同修饰的变量称之为常量,常量名全大写
如:public static final int AGE=20;
final修饰引用类型的变量,引用地址不能发生改变,但是只限定的是第一层,
引用类型的属性值是可以发生改变的。

多态 03/02
生活中的多态
不同类型的打印机打印效果不同
同一种事物,由于条件不同,产生的结果也不同

程序中的多态
同一个引用类型,是用不同实例执行不同操作//父类引用,子类对象

使用多态实现思路
编写父类
编写子类,子类重写父类方法→实现多态的两个要素
     运行时,使用父类的类型 ↗ ,子类的对象
向上转型
Pet pet=new Dog(); →自动类型转换

实现多态的两种形式
使用父类作为方法形象实现多态
使用父类作为方法返回值实现多态

03/06
父类到子类的转换
向下转换(强制类型转换)
Pet pet=new Dog("名字","种类");
Dog dog=(Dog)pet;
Penguin png=(Penguin)pet;→报错,必须转换为父类指向的真实子类类型

instanceof运算符
语法:对象 instanceof 类或接口
instanceof通常和强制类型转换结合使用


小结 03/07
Java面向对象编程思想
面向对象三个特征:封装、继承、多态
封装:
语法:属性私有化(private)、提供相对饮的get/set的方法镜像访问(public)
、在set/get的方法中对属性的数据做相对应的业务多级的判断
思想:封装外面的程序不能直接访问本类的属性,需要通本类提供的方法简介访问
本类的属性,从而提高代码的安全性。

涉及到的其他的知识点:
构造方法:用来描述对象创建过程,可以通过构造方法快速创建对象。
this关键字:代表本类对象,调用本类的属性方法、构造方法。
方法重载:方法名相同,参数列表不相同
--------------------------------------------------------------------------
继承:
语法:子类 extends 父类
思想:多个类所描述的有共同的特征或行为,就可以将这些类中共同的部分抽取出
来建立他们的父类。
继承的好处子类共用父类的代码,提高了代码的重用性;代码后期扩展和维护,只
需要添加对应的子类即可。

涉及到的其他的知识点:
super关键字:代表父类的对象,调用父类的属性、方法、构造方法
abstract关键字:抽象,修饰类、修饰方法。
static关键字:静态,修饰属性、方法、代码块、内部类
final关键字:最终,修饰属性、方法、类
方法重写:方法名相同,参数列表相同,返回值类型相同修饰符大于或等于父类的
访问修饰符。
--------------------------------------------------------------------------
多态:
语法:父类 对象名=new 子类();
思想:父类型的引用可指向内存中的子类对象的内存空间,就可以方便设计方法
的参数和返回值类型的时候可以设计成父类对象,这样的方法在实现时比较简洁
,在后期进行扩展时,方法比较容易。
在代码中,多态的使用更多的是父类引用指向子类对象,会自动类型转换(向上转
型),有时候也需要调用子类中自己的东西,这时候就需要还原子类,强制类型转
换(向下转型),向下转换的时候先使用instanceof运算符做类型的判断。

interface 接口
接口的特性
接口不可以被实例化 常作为类型使用
实现类必须实现接口的所有方法
实现类可以实现多个接口 Java中的多继承
接口中的变量都是静态常量

03/08
接口是一种能力
体现在接口的方法上

面向接口编程

程序 丨关心实现类有和能力,而不关心实现细节
设计时 丨面向接口的约定而不考虑接口的具体实现

如何理解接口是一种能力
接口有比抽象类更好的特性:
1.可以被多继承
2.设计和实现完全分离
3.更自然的使用多态
4.更容易搭建程序框架
5.更容易更换实现
....

接口是一种约定
有些接口只有名称
体现在接口名称和注释上
方法的实现方式要通过注释来约定


面向接口编程
陈谷设计时面向接口的约定而不考虑具体实现

内部类 03/09
根据位置的不同,Java中的内部类分为四种:
静态内部类 、成员内部类、局部内部类、匿名内部类

任何内部类都变异成独立的class文件
最大的作用:封装
匿名类可以封装内部概念


静态内部类:
使用static修饰,声明在类体中
静态内部类中可以访问外部类的静态成员

成员内部类:
声明在类体中,不使用static,具有类的成员特征,也就是必须有类的实例才能创建
内部实例
内部类实例可以访问共享外部类的成员变量

局部内部类:

把类声明在方法中,就是局部内部类,作用域类似于局部变量

匿名内部类:
匿名类可以卸载任何地方,就像一般语句一样
语法更像是创建对象:
Too t=new Too(){
};
匿名类是对原类的一个集成,同事创建了实例,{}就是集成以后的类体
类体中可使用所有类的语法
匿名类不能写构造器
匿名类可以从抽象类或者接口继承,必须提供抽象方法的实现


异常 03/21
知识点
1、Java异常机制
a.当代码运行到可能出现异常的代码是,有程序员或jvm抛出异常对象,异常对象会记
录的相关信息
b.异常对象抛出后,就会去寻找异常处理的相关的代码(catch),如果找到了,异常到
此结束
c.如果未找到,异常对象会继续上抛,寻找异常处理的代码
d.如果到main还未找到异常处理的代码,就会由main将异常抛给虚拟机
e.异常抛出的每一层代码都会被中断

System.exit(1); //中断程序,退出Java虚拟机

 

try ①↘发生异常
产生异常对象

chatch ②←进入catch块 异常类型匹配
return
↓ ③执行finally块
④执行return 退出方法↑finally

 


2、try,catch,finally使用规则
try{//必须出现,且只能出现一次

}catch(Exception e){//可以出现0-N次,如果没有catch,就必须有finally

}finally{//可以出现0-1次

}


多重catch块
引发多种类型的异常
排列catch语句的顺序:先子类后父类
发生异常时按顺序逐个匹配
执行第一个与异常类型匹配的catch语句


声明异常 03/22
throws声明某个方法可能抛出的各种异常

知识点
1、Java中的异常分为两类
运行时异常:在代码编译的时候不会进行检测,在代码运行的过程中产生异常。RuntimeException及其子类都属于运行时异常。
检查异常/检测异常:在代码编译的时候必须显示处理,才能通过编译器的编译。
如:SQLException、ClassNotFoundException
throws可以让检查异常通过编译器的编译,但是没有真正解决异常。
throw手动抛出异常,并可以定义异常的信息。 throws可以声明多个异常,多个异常之间用逗号隔开。

2、自定义异常
①写一个异常类继承exception
②手动实现exception的所有构造方法


日志 02/23
日志(log)
主要用来记录系统运行中一些重要操作信息
便于监视系统运行情况,帮助用户提前发现和避开可能出现的问题,或者出现问题后根据日志找到原因

日志分类
SQL日志、异常日志、业务日志

log4j是一个非常优秀的开源日志记录工具
控制日志的输出级别
控制日志信息输送的目的地是控制台、文件等
控制每一条日志的输出格式

使用log4j记录日志步骤
在项目中加入log4j的JAR文件
创建log4j.properties文件
配置日志信息
使用log4j记录日志信息

03/24
Object
在Java类继承结构中java.lang.Object类位于顶端
如果定义一个Java类时没有使用extends关键字声明其父类,则其父类为
java.lang.Object
Object定义了“对象”的基本行为,被子类默认继承

toString方法
Object类中定义有toString方法,用于返回对象的字符表示(一个可以表示该对象属性内容的字符串)。
所有的Java类都继承了toString方法,Object类toString方法返回的字符串形式为:“类名@hashCode值”
Java类可以根据需要重写toString方法以返回更有意义的信息。

equals方法
Object的equals方法用于对象的“相等”逻辑。
equals方法的定义如下:
public boolean equals(Object obj)
equals方法的逻辑为:如果认为调用该方法的对象(this)与参数对象相等返回true,否者返回false

Object的equals方法的定义如下:
public boolean equals(Object obj){
return(this==obj)
}
按照Object类equals方法的逻辑,只有在this和obj是同一个对象是才返回true;Java类可以根据需要重写继承自Object的equals方法


hashCode方法
默认的hashCode()值是当前堆对象地址转换的一个整数,这个整数不是内存地址!
一般使用对象的OID值作为hashCode的值
OID是对象的唯一编号,在项目中一般采用数据库生成OID,也就是数据库中的“主键”

包装类 03/27
包装类 对应基本数据类型
java.lang.Integer int
java.lang.Character char
java.lang. .... .....


JDK5增加了自动‘拆箱‘和‘装箱‘的功能。
integer i=100;

03/28
无参的构造方法,构造的Date对象封装当前的日期及时间
Date date=new Date();

Date类重写了toString方法,输出的字符串形如:
Tue Mar 28 14:39:11 CST 2017

gettime方法用于获取对应的毫秒数,即1970年1月1日距现在时间的毫秒差

setTime方法用于通过毫秒数设置时间。

java.text.SimpleDateFormat类用于实现Date对象和字符串表示的日期信息间的转换。

add方法可以对秒一个日期(时间)分量增加/减少数值
getActualMaximun可以返回某个时间分量最大值。


集合框架 03/29
Collection接口存储一组不唯一、无序的对象
List接口存储一组不唯一、有序(插入顺序)的对象
set接口存储一组唯一、无序的对象
Map接口存储一组键值对象,提供Key到value的映射

list接口的实现类
ArrayList实现了长度可变的数组,在内存中分配连续的空间。遍历元素和随机访问元素的效率比较高
LinkedList采用链表存储方式,插入、删除元素时效率比较高

Map接口 03/30
Map接口专门处理键值映射数据存储,可以根据键实现对值得操作
常用的实现类是HashMap

泛型集合 03/31
JDK5.0使用泛型改写了集合框架中的所有接口和类

迭代器
通过迭代器iterator实现遍历
获取iterator:collection接口的iterate()方法
iterator的方法
boolean hasNext();判断是否存在另一个可访问的元素
Object next();返回要访问的下一个元素

增加for型循环
for(元素类型t 元素变量x:数组或集合对象){
引用了x的java语句
}


Comparable 接口04/01
针对对象数组或者集合中的元素进行排序时,首先需要确认对象元素的比较逻辑
JDK中定义了comparable接口,用于表示对象间的大小关系,Java类可以通过实现comparable接口编写对象的大小逻辑

public interafce comparable<T>{
public int compare To (T o);
}
comparable接口重定义有compareTo方法,其逻辑是:
返回正数表示this大于参数对象
负数表示this小于参数对象
0this等于参数对象

JDBC 04/05
JDBC是Java数据库连接技术的简称,提供连接各种常用数据库的能力

JDBC API
提供者:sun公司
内容:供程序员调用的接口与类,集成在java.sql和javax.sql包中,如:
drivermanager类
connection接口
statement接口
resultset接口
DriverManager
提供者:sun公司
作用:管理各种不同的JDBC驱动

JDBC 驱动
提供者:数据库厂商
作用:负责连接各种不同的数据库


JDBC API 主要功能:与数据库建立连接,执行SQL语句、处理结果
①DriverManager:依数据库的不同,管理JDBC驱动
②Connection:扶着连接数据库并担任传送数据的任务
③Stantement:由Connection产生、负责执行SQL语句
④ResultSet:负责保持Statement执行后所有产生的查询结果

04/10

使用preparedstatement接口(预编译的SQL语句)
继承自statement接口
比statement对象使用起来更加灵活,更有效率

提高了代码的可读性和可维护性
提高了安全性
提高了sal语句执行的性能

04/11
持久化:是将程序中的数据在瞬时状态和持久状态间转换的机制
持久化的实现方式:
数据库
普通文件
XML文件

什么是DAO
Data Access Object(数据存取对象)
位于业务逻辑和持久化数据之间
实现对持久化数据的访问

DAO模式的组成
DAO模式的组成部分
DAO接口
DAO实现类
实体类
数据库连接和关闭工具类
Dao模式理解
起到转换器的作用,把实体类转换为数据库中的记录

分层 04/12
分层的特点
每一层都有自己的职责
上一层不用关心下一次的实现细节,上一层通过下一层提供的对外接口来使用其功能
上一层调用下一层的功能,下一层不能调用上一层功能

分层开发的好处
各层专注于自己功能的实现,便于调高质量
便于分工协作,提高开发效率
便于代码复用
便于程序扩展


I/O 04/18
JAVA API:java.io.File类

File类
创建文件对象
物理文件或目录
操作文件或目录的属性

04/21

1.常见的编码
GBK、GB2312、UTF-8

04/25
DatalinputStream类
FileInputStream的子类
与FileInputStream类结合使用读取二进制文件
DateOutoutStream类
FileOutputStream类
FileOutputStream的子类
与FileOutputStream类结合使用写二进制文件

笔记2

标签:jdk   逗号   chat   分享   自动   抽象方法   多级   character   运行   

原文地址:http://www.cnblogs.com/PBT95/p/6852829.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!