博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java学习笔记
阅读量:5021 次
发布时间:2019-06-12

本文共 3946 字,大约阅读时间需要 13 分钟。

 

<类的继承>

class Father{

public Father () {
System.out.println("This is the constructor in Father class.");
}
private void sayHi() {
System.out.println("HI");
}
public void sayHello() {
System.out.println("Hello");
}
}
class Son extends Father{
public Son() {
//super();add automatically
System.out.println("This is the constructor in Son class.");
}
// private void sayHi() {
// System.out.println("HI");
// }
// public void sayHello() {
// System.out.println("Hello");
// }
}

子类是无法继承父类的构造方法的。但是会使用super()在子类的构造方法中自动调用父类的构造方法。用来消除重复代码。 

对象向上转型中, 一个引用能调用那些成员取决于这个引用的类型,能调用那些方法取决于这个引用指向的对象。

子类重写父类方法时不能是比父类更严格的访问权限,不要去继承一个已经完成好的类。

内部类可以使用外部类的成员变量和方法,但是并不意味着内部类继承了外部内,之所以能使用是因为在实例化内部类之前需要先实例化外部类

<String>
string字符串的内容无法更改,只是改变了变量的指向,而stringbuffer可以更改
<集合>
List由ArrayList或者Vector实现,可以放入重复元素;Set接口不能加入重复元素但是可以排序,其子类有Hashset(无序排放)和treeset(有序排放)。
iterator迭代输出时不能对list进行操作。
map接口有两个子类,hashmap和tablemap,都是无序存放,与允许key重复。Map有两个泛型,一个key,一个value。

<static> 

 用static定义的成员变量可以直接用类名调用。而且,该类的不同对象中的static变量都是同一个。同理静态方法也可以直接用类名调用。但是方法中只能引用静态变量,不能用this关键字 。静态代码块static {},没有名字,在装载类的过程中调用,主要作用是为成员变量赋初始值。

<接口>

 定义了接口就是定义了调用对象的标准,接口就是比较纯粹的抽象类,方法全是抽象方法,可以不写abstract,所有方法的权限都是public。

 <I/O>

数据的流向是以Java程序为参照物的,即input是读,output是写。

字节流的核心类:InputSream/OutputStream抽象类,所 输入输出的父类,最常用子类是FileInputStream/FileOutputSream。

File file = new File(filePath);

StringBuffer content = new StringBuffer();

1.Use FileInputStream reading by bytes

try {
byte[] temp = new byte[1024];
FileInputStream fileInputStream = new FileInputStream(file);
while(fileInputStream.read(temp) != -1){
content.append(new String(temp));
temp = new byte[1024];
}
fileInputStream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}

2.Use inputStreamReader reading by characters

char[] temp = new char[1024];

FileInputStream fileInputStream = new FileInputStream(file);
InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
while(inputStreamReader.read(temp) != -1){
content.append(new String(temp));
temp = new char[1024];
}
fileInputStream.close();
inputStreamReader.close();

---------------------------------------------------------------------------------------------

public String readLine() throws IOException //读取一行数据
装饰者模式:减少继承.

//the efficiency of writing methods from high to low is FileWriter,BufferedOutputStream,FileOutputStream

public static void writeFileByFileOutputStream(String filePath, String content) throws IOException{
File file = new File(filePath);
//synchronized (file) {
FileOutputStream fos = new FileOutputStream(filePath);
fos.write(content.getBytes("GBK"));
fos.close();
//}
}
public static void writeFileByBufferedOutputStream(String filePath, String content) throws IOException{
File file = new File(filePath);
//synchronized (file) {
BufferedOutputStream fos = new BufferedOutputStream(new FileOutputStream(filePath));
fos.write(content.getBytes("GBK"));
fos.flush();
fos.close();
// }
}
public static void writeFileByFileWriter(String filePath, String content) throws IOException{
File file = new File(filePath);
//synchronized (file) {
FileWriter fw = new FileWriter(filePath);
fw.write(content);
fw.close();

<多线程>

实现线程的方法一:

new()生成线程对象,start()启动线程,进入就绪状态,与主线程抢占CPU,如果抢到了CPU就进入执行状态,如果之后CPU又被抢走就在回到就绪状态,直到run()的内容执行完毕,线程死亡。

MyThread thread1 = new MyThread();

Thread thread = new Thread(thread1);
thread.start();

class MyThread extends Thread{

        public void run() {  //the name must be run
               for (int i = 1; i < 10; i++) {
                   System.out.println("Thread 1: "+ i );
               }
      }
}

实现线程的方法二(实际开发常用,将线程体和执行线程分开):

在初始化Thread类或者其子类的线程对象时,把实现接口Runnable的类的对象传给线程的实例。再使用start()

class MyThread implements Runnable {

          public void run() {
              for (int i = 1; i < 10; i++) {
                  System.out.println("Thread 1: "+ i );
              }
          }
}

线程的控制方法:

Thread,sleep(毫秒)休眠让出CPU,时间到了后进入就绪状态,不是立即运行;类外需要抛出异常
Thread.yield()当前线程让出CPU,但是还会去抢
优先级设置方法
get/setPriority(),线程的优先级最大是10最小是1,优先级越大执行的概率越大 但不代表会先执行。

转载于:https://www.cnblogs.com/JiachengZhang/p/8300762.html

你可能感兴趣的文章
QT 资源链家暂存
查看>>
[牛客Wannafly挑战赛27D]绿魔法师
查看>>
New for ASP.NET Web Pages: Conditional attributes
查看>>
关于FP10.2的自定义鼠标功能
查看>>
利用GSEA对基因表达数据做富集分析
查看>>
SpringCloud(13)—— SpringBoot Redis缓存使用
查看>>
(五)容器网络 -上
查看>>
从OGRE,GAMEPLAY3D,COCOS2D-X看开源
查看>>
Android 微信分享解疑
查看>>
luogu 1608 路径统计--最短路计数
查看>>
C++11 对 string的改变
查看>>
qml和C++混合编程,UI和业务逻辑混合
查看>>
CSS_级联和继承
查看>>
shell爬虫--抓取某在线文档所有页面
查看>>
Freescale 车身控制模块(BCM) 解决方案
查看>>
Insert Interval
查看>>
sim卡联系人name为空的问题。
查看>>
fzu2198 快来快来数一数
查看>>
RSA大会播报 – 2014最佳安全博客提名
查看>>
前端基础之JavaScript_(3)_DOM对象
查看>>