- 博客(17)
- 收藏
- 关注
原创 java多线程等待唤醒机制
等待唤醒机制: Object类中提供了三个方法: wait():等待 notify():唤醒单个线程 notifyAll():唤醒所有线程 为什么这些方法不定义在Thread类而定义在Object类中呢? 这些方法的调用必须通过锁对象调用,而我们使用的锁对象是任意锁对象。所以,这些方法必须定义在Object类中。生产者和消费者多线程体现(线程间通信问题) 生产者:先看是否有数据,有就等
2016-05-23 01:24:38 346
原创 JAVA多线程实现的三种方式
方式一:继承Thread类 步骤: 1.自定义一个类并继承Thread类 2.自定义类需要重写Thread的run()方法 3.创建对象 4.启动线程class MyThread extends Thread{ public void run() { for(int i=0;i<100;i++){ System.out.println(get
2016-05-23 00:48:22 363
原创 进程与线程的区别
学习多线程的时候必然会遇到另外一个名词:进程。二者一字之差有什么区别呢? 看的一本书上有这样一段话: Windows操作系统是多任务操作系统,它是以进程为单位。一个进程是一个包含有自身地址的程序,每个独立执行的程序都称为进程,也就是正在执行的程序。系统可以分配给每一个进程一段有限的使用CPU的时间(也可叫CPU时间片),CPU在这段时间中实行某个进程,然后下一个时间片又调至另一个进程中去执行。由
2016-05-22 23:40:19 712
原创 并发与并行的区别
学习多线程的时候会遇到一个名词:并发。这是属于操作系统中的词汇,需要了解并发和并行的区别,从网上搜集了几种说法帮助理解。 一: 并发是指一个处理器同时处理多个任务。 并行是指多个处理器或者是多核的处理器同时处理多个不同的任务。 并发是逻辑上的同时发生(simultaneous),而并行是物理上的同时发生。 来个比喻:并发是一个人同时吃三个馒头,而并行是三个人同时吃三个馒头。 二: 并行
2016-05-22 23:17:31 79631 19
转载 用StringBuffer与String解决同一个问题
关于StringBuffer与String的相互转换: 将String转换成StringBuffer:String s = "hello";// 方式1:通过构造方法StringBuffer sb = new StringBuffer(s);// 方式2:通过append()方法StringBuffer sb2 = new StringBuffer();sb2.append(s);注意:
2016-05-20 00:30:03 580
原创 关于StringBuffer
StringBuffer:线程安全的可变字符串。 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加合适一些。
2016-05-19 23:32:27 341
原创 详谈String类
String类概述: String 类代表字符串。Java 程序中的所有字符串字面值(如 “abc” )都作为此类的实例实现。字符串是由多个字符组成的一串数据(字符序列),字符串可以看成是字符数组。构造方法: public String ():空构造 public String(byte[] bytes):把字节数组转成字符串 public String(byte[] bytes, int
2016-05-18 17:24:58 306
原创 Object类概述
java.lang.Object 1.java.lang包在使用的时候无需显示导入,编译时由编译器自动导入。 2.Object类是类层次结构的根,Java中所有的类从根本上都继承自这个类。 3.Object类是Java中唯一没有父类的类。其他所有的类,包括标准容器类,比如数组,都继承了Object类中的方法。构造方法 public Object() Object类只有这一个构造方法,并且是
2016-05-18 14:40:26 355
原创 内部类
内部类概述:把类定义在其他类的内部,这个类就被称为内部类。内部类分类:成员内部类、静态内部类、方法内部类(又叫局部内部类)和匿名内部类。内部类共性: 1.内部类仍然是一个独立的类,在编译之后内部类会被编译成独立的.class文件,但是前面冠以外部类的类名和$符号 。 2.内部类不能用普通的方式访问。内部类是外部类的一个成员,因此内部类可以自由地访问外部类的成员变量,无论是否是private的 。
2016-05-17 02:17:01 269
转载 抽象类与接口杂记
抽象类的特点 1.抽象类和抽象方法必须用abstract关键字修饰 2.抽象类中不一定有抽象方法,但是有抽象方法的类必须定义为抽象类 3.抽象类不能实例化,因为它不是具体的,但是它有构造方法用于子类访问父类数据的初始化。 4.抽象类的子类: a.子类还是抽象类,可以不必重写父类抽象方法; b.子类是一个具体的类,必须重写所有的抽象方法。 (抽象类的实例化其实是靠具体的子类实现的,多态的
2016-05-16 17:04:46 403
转载 深入理解Java的接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:abstract void fun(); 抽象方法必
2016-05-15 15:18:27 232
原创 多态特点及弊端
一、多态中的成员访问特点 Father f=new Son() 1.成员变量:编译看左边,运行看左边 f只能访问父类中定义过的成员变量,不能访问子类中特有的成员变量,并且该成员变量的值与父类一致。 2.构造方法:创建子类对象时,会访问父类的构造方法,先对父类进行初始化。 3.成员方法(非静态):编译看左边,运行看右边 f只能访问父类中定义过的成员方法,不能访问子类中特有的成员方法。如果该
2016-05-15 14:35:09 614
原创 equals和==的区别
一、“==”比较两个对象的地址是否相同。二、equals() 一般类的equals()方法继承自Object类,源码如下:public boolean equals(Object obj) { return (this == obj); }可见其比较的也是对象的地址是否相同,与“==”效果一样。可是有些类重写了equals()方法,比如说String类,源代码如下:publ
2016-05-13 12:10:48 278
原创 继承中构造方法的关系
在继承中,子类所有的构造方法默认访问父类中的无参构造,子类中每一个构造方法第一条语句默认为super();class Father{ public Father(){ System.out.println("父类无参构造"); } public Father(String s){ System.out.println("父类有参构造");
2016-05-12 19:44:36 794 1
原创 代码块
java中将用{}包起来的代码称之为代码块,根据其位置和声明的不同可将其分为:局部代码块、构造代码块、静态代码块和同步代码块。 局部代码块:处于局部位置,可用于限定变量的生命周期。public class CodeBlock { public static void main(String[] args) { { int y=0;//只存在于{}内
2016-05-12 19:23:19 338
原创 Static关键字
static特点: 1.可以修饰成员变量或成员方法; 2.随着类的加载而加载,优先于对象存在; 3.被类的所有对象共用; 4.可以通过类名调用也可以通过对象调用(推荐使用类名调用)。注意: 1.静态方法中是没有this关键字的(this随对象存在,static优先于对象存在); 2.静态方法只能访问静态的成员变量和静态的成员方法。静态变量和成员变量的区别: 1.所属不同:静态变量属于类
2016-05-12 18:59:17 215
原创 构造方法
java的类中,如果没有给出构造方法,通过反编译可以看出系统将默认提供一个无参构造方法,方法体中内容为空:class Demo{ Demo(){} 这是系统提供的默认的构造方法}public class Gouzao { public static void main(String[] args) { Demo d=new Demo(); }}如果我们给
2016-05-12 18:43:03 301
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人