A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© xiaoMaoLv 初级黑马   /  2017-12-21 17:25  /  890 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

day04

一.包

特点: 1.包可以有多层(以"."分隔,com.itheima.homework1)

2.不同包下的文件名可以相同

作用:分类管理java文件,避免重类名的冲突



注意: 1. 声明包的语句,必须写在程序有效代码的第一行(注释不算)

2.相同包下的类可以直接访问,不需要其他操作.

3.类的全名:  包名.类名



不同包之间的访问:

1.使用类的全名 java.util.ArrayList=new java.util.Arraylist();(不推荐,太麻烦)

2.imort 例.import java.util.ArrayList;

注意:"*"代表通配符,代表导入该包下的所有类.

问题:不同工程下的包 如何使用?

二.权限修饰符

public: 公共的,整个项目可见

protected: 受保护的,当前包下,或者子类中

问题:在别的包下 new一个子类对象 能访问protected修饰的方法吗?

答案是 不可以,只有在子类中才可以.

default(不写,空着):默认的,当前包下

private: 私有的,当前类



修饰符总结:

修饰符

成员变量
成员方法
构造方法
public




默认




protected
×



private
×



abstract

×

×
static
×


×
final



×





常见规则:

1.以后我们使用public来修饰类,一个java文件中只能有一个类,如果一个文件中有多个类,类名和文件名一样的类,必须用public来修饰,其他类不可用public

2.以后所有的成员变量都是用private修饰,且提供get,set方法

3.以后所有的方法使用public修饰

4.以后所有的构造方法都使用public修饰,如果不想让创建对象,就使用private来修饰

三.内部类

特点:

1.虽然编写在同一个java文件中,但是编译后都是独立的".class"字节码文件

2.内部类编译后的字节码文件名是"外部类名$内部类名"

分类:

a.成员内部类

类中,方法外

Outer.Inner i=new Outer().new Inner(); 非静态成员内部类

Outer.Inner i=new Outer.Inner();静态成员内部类

b.局部内部类

方法中

c.匿名内部类

方法中或者方法参数中,且必须创建对象

一.注意:

1)new出来的实际上是类或接口的子类对象

2)如果创建了继承普通类的子类对象, 可以自主选择是否重写父类方法

3)如果创建了实现接口或抽象类的子类对象, 则必须重写父类所有抽象方法

二.匿名内部类的使用方式:

方式1:

创建并定义匿名内部类

使用变量接收创建的对象

使用对象变量调用方法

方式2:

创建并定义匿名内部类

直接.链式调用匿名内部类对象的方法

三.应用场景

a.作为参数进行传递

b.只用一次的抽象类或者接口的子类,免去专门定义一个类

四.扩展

a.修饰符

修饰符

内部类
局部内部类
成员变量
成员方法
构造方法
public


×



默认






protected
×

×



private
×

×



abstract



×

×
static
×

×


×
final





×


b.匿名内部类对象和直接定义子类实现接口或继承抽象类, 应该用哪种方式?

1.如果对于这个接口或抽象类, 只有一种实现方式, 就直接定义实现类, 创建该类对象作为参数传入

2.如果对于这个接口或抽象类, 会有多种实现方式, 定义很多实现类会导致代码很长复用性差, 此时使用匿名内部类比较方便



c.匿名内部类常见用途

监听器(Listener)或回调(Callback): 配合接口和匿名内部类实现

day05

一. Object类 & System类

1) String toString() 返回值:String



Object的toString方法:return getClass().getName() +

"@" + Integer.toHexString(hashCode())

getClass():返回一个字节码对象

getName():获取类的全名

Integer.toHexString():返回一个16进制的字符串

hashCode(); 获取hash值



2) boolean equals(Object obj)

比较两个对象内的属性是否相同,

需要重写Object的方法,Object默认是比较地址值



掌握:获取字节码对象的三种方法:

一个类仅有一个字节码对象

1)类名.class

2)对象.getclass()

3)Class.forName(类全名)

二.System

1)arrayCopy(Object src,int srcPros,Object dest,int destPros,int length);

src:源数组

srcPros:源数组起始索引

dest:目标数组

destPros:目标数组起始索引

length:复制长度

注意:不要数组越界

2)currentTimeMillis()

当前系统时间,以毫秒值进行返回

3)exit(int status)

种植当前正在运行的java虚拟机,参数status用作状态码,0为正常终止,

非0则为异常终止

三.日期相关类

Date 表示特定的瞬间,精确到毫秒,



Date() 创建一个表示当前系统时间的Date对象

Date(long time) 根据"指定时间"创建Date对象,time毫秒值



void setTime(long time) 设置毫秒值

long getTime()                获取毫秒值



SimpleDateFormat 格式化日期工具类

String<-->Date  解析与格式化

格式化

Date--->String

String format(Date date)

解析

String--->Date

Date parse(String source)

构造方法

SimpleDateFormat()使用默认模式创建

SimpleDateFormat(String pattern)使用自定义模式创建

"y" 年--->yyyy 1988

"M" 月--->MM 06

"d" 日--->dd 30

"H" 小时--->HH 05

"m" 分--->mm 59

"s" 秒--->ss 59

yyyy-MM-dd HH:mm:ss 1988-11-26 12:30:50



四.calender 日历

1)创建对象

Calendar c=Calendar.getInstance();

2)成员方法



获取: get(int field)

修改: set(int field,int 值)

添加: add(int field,int 值)

field为Calendar中的静态字段

static YEAR: 年份

static MONTH: 月份. 注意月份数值是0-11

static DAY_OF_MONTH: 日期

static HOUR: 小时(12小时制)

static HOUR_OF_DAY: 小时(24小时制)

static MINITE: 分钟

static SECOND: 秒

五.包装类

一.自动装箱

基本数据类型-->包装类

自动拆箱

包装类--->基本数据类型

二.

char: Character

int: Integer

以上有所区别,别的都是首字符大写

基本类型:  包装类

byte: Byte

short: Short

long: Long

float: Float

double: Double

boolean: Boolean

三.Integer-->int ,int intvalue()

int--->Integer,new Integer(int)

四.字符串和整数转换

  • String转int
  • 方式1: Integer Integer(String s)
  • 方式2: static int parseInt(String s)
  • 方式3: static Integer valueOf(String s)
  • int转String
  • 方式1: "" + int值
  • 方式2: String toString()
  • 方式3: static String toString(int i)




六.正则表达式

boolean matches(String regex)

常用的规则

x就是字符x

"?" 0次或者1次

"+"一次或者多次

"*"0次或者多次

"{n}"n次

"{n,}"至少n次

"{n,m}"至少n次,但是不能超过m次

\d 是[0-9]的数字

\w 单词字符[a-zA-Z0-9]

\s 是空白字符

[^a] 除了 a 以外



day06

一.集合 Collection

1)集合的体系结构:

由于不同的数据结构,所以java给我们提供了不同的集合

但是不同的集合他们的功能都是相似的,不断的向上抽取,

将共性的东西抽取出来,这就是集合体系形成的原因



2)Collectlion的基本方法

add() 添加

clear() 清空

contains() 包含

isEmpty() 是否为空

remove() 删除

size() 长度

toArray() 转化成Object类型数组



3)iterator 迭代器

获取迭代器对象: 集合对象.iterator();

next()        获取一下一个元素

hasnext() 判断是否有下一个元素


4)泛型

泛型:是一种广泛的类型,把明确数据类型的工作放在编译时期,借鉴数组的特点

优点:

1)避免了类型转换的问题

2)可以减少黄色警告线

3)可以简化我们代码的书写


5)增强型for循环

for(元素类型 变量名: 集合名){



}



二.常见的数据结构

数组的特点:

数组的长度一旦定义则不可改变

数组中的元素都有整数索引

数组只能存储同一类型的元素

数组即可以存储基本数据类型,也可以存储引用数据类型

增删慢,查询快

链表的特点:

查询慢,增删块

三.list的子体系



add(int index,Object obj)

add(Object obj)

remove(int index)

set(int index,Object obj)

get(int index)

LinkedList

底层是链式结构,查询慢,增删快

addFirst

addLast

removeFirst

removeLast

getFirst

getLast

问题:说出几个linkedlist特有的方法()

ArrayList

底层是数组结构,查询快,增删慢






0 个回复

您需要登录后才可以回帖 登录 | 加入黑马