黑马训练营预习视频之学习日记(二)

129

学习内容:27-32

由反射引出框架

类加载器管理资源配置文件: config.properties 在加载时写

InputStream ips = new FileInputStream(“config.properties”);

Properties pros = new Properties();

pros.load(ips);

ips.close();//及时关闭 否则可能会内存泄露.

内省IntroSpectorJavaBean进行操作,JavaBean是一个特殊的Java. 符合set/get打头这种特殊规则的类叫做JavaBean.可以当作JavaBean类来使用.

注意:set方法接收参数 get方法无参数.

BeanUtils工具类:Apache提供,导入jar(放到工程内部)

1210

学习内容:33-39

1. 注解应用

注解的属性:例在注解类中增加String color(). @Annotation(color=”red”)

2.泛型入门:限定集合中的输入类型

Vector<String> vc = new Vector<Object>();×//后面的<Object>不写就对了

Vector<Object> vc = new Vector<String>();×

Vector<Integer> vcList[] = new Vector<Integer>[10];×//数组的元素不能使用参数化类型

Vector v1 = new Vector<String>();

Vector<Object> v = v1;

3.泛型的通配符应用:<?>表示任意类型都可以接收

限定上边界通配符:

Vector<? extends Number> x = new Vector<Integer>();

Vector<? extends Number> x = new Vector<String>();×

限定下边界:

Vector<? super Integer>  x = new Vector<Number>();

Vector<? super Integer>  x = new Vector<>(Byte);×//super父类 ByteInteger平级.

注意:限定通配符总是包括自己

1211

学习内容:高新技术40-47

1.       自定义泛型

泛型的高级应用

练习例题:1.自动将Object转换成其它类型 2.交换数组中前后位置3.打印任意参数化集合中的所有内容4.复制数组到另一个数组当中去.等等.

应用:数据库中 泛型应用于定义字段类型,可写在类后面.

注意:静态方法不能用泛型类型

2.       通过反射获得泛型的实际类型参数:

方法:getGenericXXX等方法 获得泛型的类型/返回类型等.

3.       类加载器: 类加载器负责加载 Java 类的字节代码到 Java 虚拟机中.

默认的加载器类:Bootstrap/ExtClassloader/AppClassLoader

获得加载器方法:类名.class.getClassLoader().getClass().getName();

父级加载器getParent()

代理模式: 类加载器在尝试自己去查找某个类的字节代码并定义它时,会先代理给其父类加载器,由父类加载器先去尝试加载这个类,依次类推。

面试题:能不能自己写个java.lang.system. 通常情况下,不可以.因为委托机制可以从上级中找到这个类并加载.但是自己可以编写个类加载器加载上….

4.       自定义加载器:父类→loadClass/findClass→得到的class文件转换成字节码→defineClass()

5.       Class加密工具类

1212

学习内容:高新技术48-56

1.       类加载器的高级应用:建立web工程,建立servlet文件,显示servlet加载类

2.       代理: 异常处理/计算程序的运算时间/事务管理等等.

AOP 面向方面

JVM创建动态类

StringBufferStringBuilder区别: 都是添加动态类的方法.

单线程下Builder效率高,多线程下Buffer效率高.考虑线程安全.

代理三要素:对象/方法/参数.

3.Bean工厂

1213

学习内容:Java基础视频中IO1-5

File 例子:创建文件 有则删除 无则创建

RandomAccessFile:支持随即访问的方式.

遇到问题:年龄超过256 输出显示不正确

解决:写入和读取时用writeIntreadInt.

遇到问题:姓名使用中文字符时,年龄输出不正确

解决:一个中文字占两个字节 与英文是不一致的.在写入时使用writeChars,读取时使用readChar.

流的讲解 分为两类:节点流类和过滤流类

InputStreamOutputstream的主要方法: (后者相对应 省略)

int read() byte类型表示-1 int类型表示255

int read(byte[] b) 读字节数

int read(byte[] b,int off,int len)

long skip(long n) 跳过n个来读

int available()

void mark(int readlimit)输入流中建立标记 参数表示最多还能读取多少字节的内容

void reset()配合mark方法使用 从标记处开始读

Boolean markSupoorted()是否支持markreset操作

void close() 关闭流 释放资源

FileInputStreamFileOutputStream 可指定文件名和路径.

ReaderWriter :字符流类

总结:

1.导入io,抛出IO异常 2.跳读注意跳过多少字节 3.要及时关闭流,释放与IO流相关资源.

1214

学习内容:Java基础视频IO6-15

PipedInputOutputStreamPipedInputStream:管道通信 线程之间通信.

PipedWriterPipedReader  使用管道通信 ,可实现强内聚,弱耦合

ByteArrayInputStreamByteArrayOutputStream:字节数组的读写

ByteArrayInputStream构造函数:

ByteArrayInputStream(byte[] buf)

ByteArrayinputStream(byte[] buf,int offset,int length)offset开始读取length个字节

ByteArrayOutputStream构造函数:

ByteArrayOutputStream():创建32字节缓冲区

ByteArrayOutputStream(int):根据指定大小创建缓冲区

StringWriterStringReader:字符IO流处理字符串.

重视IO程序的可复用性:

1.System.in 连接键盘 System.out连接显示器

2.InputStream中的read方法返回-1表示结束.

3.windows Ctrl+z结束输入流标记 Linux 则是Ctrl+D

总结:读取大段数据的过程放在函数中完成,使用-1作为键盘输入结束点, InputStream形式参数读取数据,System.in作为实参传递给Inputstream形参来调用函数.

字符编码的讲解与应用 转换等问题

Gb2312 UTF-8 UTF-16 Unicode iso8859-1

过滤类与包装类

BufferedInputStreamBufferedOutputStream 创建缓冲区

BufferedInputStream构造方法:

BufferedInputStream(inputStream in)

BufferedInputStream(inputStream in,int size)

 

BufferedOutputStream构造方法:

BufferedOutputStream(outputStream out)

BufferedOutputStream(outputStream out,int size)

 

BufferedReaderBufferedWriter

BufferedReaderreadLine读取一行文本数据

BufferedWriternewLine换行符

 

DataInputStreamDataOutputStream

DataInputstream方法:只有readUTF

DataOutputStream方法:writeChars()/writeBytes()/writeUTF().

 

PrintStream :将基本类型数据转换成字符串输出.

构造函数:

PrintStream(OutputStream out): 输出流 不会自动清空缓冲区

PrintStream(OutputStram out,Boolean autoflush): autoflush自动刷新缓冲区

PrintStream(OutputStram out,Boolean autoflush,String Encoding): Encoding指定字符集编码

 

ObjectInputStreamObjectOutputStream

字节流与字符流转换

                                              To Be Continued...

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值