Java基础
-Sloth-
脚踏实地 仰望星空
展开
-
Java内部类
静态内部类: 1.static可以修饰内部类,通常用来给外部类赋值( 建造者模式)。 2.静态内部类不能使用外部类非静态的属性,必须用对象名调用。 3.在外部类中 创建静态内部类可以直接创建,不需要创建外部类。 4.不能使用成员内部类的方式创建静态内部类对象。 5.外部类.内部类 对象名 = new 外部类.内部类();。原创 2016-07-25 20:34:14 · 377 阅读 · 0 评论 -
Java多线程下的生产者消费者模式
用多线程的生产者消费者模式实现工厂的面包运到超市,顾客去超市购买,超市每次最大存储6个面包。public class Test1Consumer { public static void main(String[] args) { Supermarkt s = new Supermarkt(); Factory f = new Factory(s); Consumer c =原创 2016-08-10 19:39:26 · 996 阅读 · 0 评论 -
Java线程问题实现打印数字字母
.写两个线程,一个线程打印1-52,另一个线程答应字母A-Z。打印顺序为12A34B56C……5152Z。通过使用线程之间的通信协调关系。public class Test1 { public static void main(String[] args) { Print print = new Print(); Num n = new Num(print); Alphabet原创 2016-08-10 19:34:04 · 1371 阅读 · 0 评论 -
Java中的死锁问题
死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。简而言之,一个线程锁住了资源a ,还要使用资源b,另外一个线程 锁住了资源b ,还想着得到资源a,当两者互不相让,就形成了死锁。死锁形成的条件:1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资原创 2016-08-10 19:30:01 · 870 阅读 · 1 评论 -
多线程下的懒汉式单例模式
在多线程下实现懒汉式单例模式是不安全的,所谓的不安全,就是在同一时间段有两个线程同时执行一段代码。解决方法包括将懒汉式改为饿汉式或者让线程同步。下面代码实现线程的同步,保证多线程下的懒汉式单例是安全的。public class LazyInstance { public static void main(String[] args) { Threadlazy t = new Threa原创 2016-08-10 19:21:22 · 1155 阅读 · 0 评论 -
Java中的多线程
1 进程是一个独立的程序2 线程 是程序中的一条执行路径3 多线程 多个线程同时执行 每一个线程执行的任务叫做线程任务4 真正来说 cpu 不是同时执行的多个线程,而是每一个线程都有可能抢占到cpu的时间片段5 cpu执行时间是随机(多线程执行时随机的)6 多线程的特点:随机的宏观意义上时同步的 ,微观意义上是一个一个执行的多核除外7 线原创 2016-08-10 19:08:03 · 292 阅读 · 0 评论 -
JSON数据解析(二)——GSON
GSON谷歌提供的一种解析JSON的开元框架,在使用的过程中javabean 中的 属性名称必须与解析的json字符串中的 "键/名字" 一直, 否则该属性解析不出来当然在使用之前需要 导包。 实例:public class GSONDEMO { public static void main(String[] args) { String s = "{name:zhangsan,原创 2016-08-20 14:56:42 · 557 阅读 · 0 评论 -
JSON数据解析(三)——FastJson
FastJson是阿里巴巴的JSON处理工具包。在使用过程中要求javabean 必须要包含一个无参的构造方法,有标准的get*** , set****方法,当然 在使用之前先导入jar包。public class FastDemo { public static void main(String[] args) { String str = "{no:1,name:'androi原创 2016-08-20 15:05:54 · 415 阅读 · 0 评论 -
JSON数据解析(一)——原生方法
public class JSONDEMO { public static void main(String[] args) throws JSONException { String str = "{person:[{name:'zhangsan',age:20},{name:'lisi',age:2},{name:'wangwu',age:3}]}"; List l = new Ar原创 2016-08-20 11:46:08 · 4316 阅读 · 2 评论 -
Java多线程下模拟文件下载
将一个文件分为四个部分,采用多线程模拟下载。public class Test3Download { public static void main(String[] args) { int fileLength = 0; // 1 创建文件对象 File file = new File("C:\\123.mp4"); // 2 拿到文件的长度 if (file.exis原创 2016-08-10 19:42:17 · 1134 阅读 · 0 评论 -
Java中的反射
反射就是把Java类中的各种成分映射成一个个的java对象。例如,一个类有:成员变量,方法,构造方法,包等等信息,利用反射技术可以对一个类进行解剖,把各个组成部分映射成一个个对象。反射常用的Java 类型◦Class类—可获取类和类的成员信息◦Field类—可访问类的属性 ◦Method类—可调用类的方法◦Constructor类—可调用类的构造方法使用反射原创 2016-08-12 19:27:39 · 239 阅读 · 0 评论 -
HashMap和Hashtable的区别
1.两者最主要的区别在于Hashtable是线程安全,而HashMap则非线程安全Hashtable的实现方法里面都添加了synchronized关键字来确保线程同步,因此相对而言HashMap性能会高一些,我们平时使用时若无特殊需求建议使用HashMap,在多线程环境下若使用HashMap需要使用Collections.synchronizedMap()方法来获取一个线程安全的集合。2.原创 2016-08-13 10:36:48 · 7017 阅读 · 0 评论 -
OkHttp GET 和 POST 的使用
1 OkHttp 介绍Android 开发,不可避免的会用到网络技术,而多数情况下,我们都是使用 HTTP 协议来发送和接收网络数据。Android 系统主要提供两种方式来进行 HTTP 通信,HttpURLConnection 和 HttpClient,但是从 Android 2.3 及以后版本中,Google 推荐使用 HttpURLConnection,究其原因,就是由于 HttpCli原创 2016-08-17 20:55:17 · 16237 阅读 · 0 评论 -
观察者模式示例
public class FirstTeam implements NotifyListener { @Override public void notifyTeam(String msg) { System.out.println("第一组得到消息:" + msg); System.out.println("第一组不打牌了,开始工作了!!!"); }}public clas原创 2016-11-10 17:16:10 · 369 阅读 · 0 评论 -
String类,Stringbuilder类,Stringbuffer类之间的区别
String 类型最大的特点是 String 是不可变的对象,因此我们每次对String进行操作,都是生成一个新的 String 对象,然后指针指向新生成的String对象,所以面对那些需要经常修改的字符串不要使用String类,因为每次生成对象都影响系统的性能,特别当内存中无引用对象多了以后, JVM 的 GC 就会开始工作,那速度是一定会相当慢的。如果使用StringBuffer类,则每次修改原创 2016-08-13 11:47:00 · 1226 阅读 · 0 评论 -
HashMap和Hashtable的实现原理
HashMap和Hashtable的底层实现都是数组+链表结构实现的,这点上完全一致添加、删除、获取元素时都是先计算hash,根据hash和table.length计算index也就是table数组的下标,然后进行相应操作,下面以HashMap为例说明下它的简单实现 /** * HashMap的默认初始容量 必须为2的n次幂 */ static fin转载 2016-08-13 10:45:00 · 3924 阅读 · 0 评论 -
Java中String类为什么定义为final
String类用final定义,表示这个类不可被修改。当我们用String定义一个“aaa”时,在再定义一个“aaabbb”时,不是在原来的内存地址中修改”aaa为“aaabbb“的,是在另外的地址上存入“aaabbb”的。个人认为,将String类定义为final,最主要的原因是保证安全。例如执行下面的程序:public class Test1 { public static void原创 2016-08-13 10:07:33 · 2968 阅读 · 0 评论 -
Java中的接口回调
经典问题:小李遇到一个1+1的问题,发现解决不了,于是给小王打电话 问问题,小王说 我先玩会,玩完了再说吧。使用接口回调解决:public class Li { Wang wang; public Li(Wang wang) { super(); this.wang = wang; } public void call(String question) { wang.原创 2016-08-12 20:30:20 · 298 阅读 · 0 评论 -
HttpClient下载图片和向服务器提交数据实例
GET方法使用 HttpClient 需要以下 6 个步骤:1. 创建 HttpClient 的实例2. 创建某种连接方法的实例,在这里是GetMethod。在 GetMethod 的构造函数中传入待连接的地址3. 调用第一步中创建好的实例的 execute 方法来执行第二步中创建好的 method 实例4. 读 response5. 释放连接。无论执行方法是否成功,都必须原创 2016-08-18 20:51:09 · 6455 阅读 · 0 评论 -
SAX解析XML文件
XML是可扩展标记语言,可以使用SAX或者PULL解析。今天所写的是使用SAX解析XML文件。 SAX是Simple API for XML的缩写,几乎所有的XML解析器都会支持它。使用SAX解析的步骤:1, 创建SAX 解析器的工厂 2, 通过解析器工厂 创建 SAX解析器 3, 自定义解析的处理器 MyHandler 继承 DefaultHandler类 4, 解析xml原创 2016-08-18 19:59:32 · 404 阅读 · 0 评论 -
PULL解析XML文件
PULL解析XML文件的步骤:1, 导包 2, 创建pull解析器工厂 3, 创建解析器对象 4, 设置解析的数据源(要解析的内容) 5, 获取事件的类型(int) 6, 循环解析, 直到文档解析完成解析实例:XML文件: 1 zhangsan 20 male 2 lisi 21 female原创 2016-08-18 20:15:42 · 390 阅读 · 0 评论 -
增强型for循环和可变数组
public class Test { public static void main(String[] args) { // 增强for循环 // 数据类型 变量 : 数组名/集合名字 for (String string : args) { }原创 2016-07-27 09:13:33 · 896 阅读 · 0 评论 -
Java设计模式-建造者模式
public class WeiXin { String usename; int psw; String email; int age; WeiXin(Build d) { this.usename = d.usename; this.psw = d.psw; this.email = d.email; this.age = d.age; } @Overrid原创 2016-07-25 20:41:20 · 312 阅读 · 0 评论 -
Java设计模式-工厂模式
静态工厂模式: 为了创建对象而产生 1 有工厂类,有一个可以根据需求返回创建的对象的方法 2 工厂类中的产生对象的方法的返回值类型是 父类的类型,产生的对象都是子类对象 3 强调: 工厂类中的方法的返回值和返回的对象中存在着向上转型的关系以工厂做衣服为实例:public class Clothes { public void zuo(){ System原创 2016-07-22 20:35:26 · 442 阅读 · 0 评论 -
Java设计模式-单例模式
1.单例模式的目的: 节省资源,避免歧义 分类:饿汉式::先创建对象 , 在返回。懒汉式:调用的时候才返回。2, 单例模式的要点: 1.构造方法必须私有化 2.必须在本类内部创建对象,饿汉式用final关键字 以确保 对象唯一性懒汉式在调用的时候判断是否为空 如果为空创建对象,不为空直接返回 3.注意:懒汉式 在多线程中不安全。饿汉式:原创 2016-07-22 20:19:30 · 274 阅读 · 0 评论 -
Java中的基本数据类型
1.基本类型: 整数型 byte,short,int,long 浮点型 float,double) 字符型 char 布尔型 boolean2.引用数据类型 类 class 字符串 String 数组 array 接口 interface 枚举3.基本数据类型的取值范围 byte 1字节 -128–127 short原创 2016-07-20 13:46:43 · 281 阅读 · 0 评论 -
HttpURLConnection的get和post请求实例
get请求可以获取静态页面,也可以把参数放在URL字串后面,传递给servlet, public class DemoConnection02 { /** * @param args * @throws IOException */ public static void main(String[] args) throws IOException { String pa原创 2016-08-17 20:46:08 · 3447 阅读 · 0 评论 -
Java集合--自定义泛型实例
public class UserDefined { public static void main(String[] args) { Teacher p = new Teacher(11, 11, "bb"); System.out.println(p.getT()); System.out.println(p.getA()); System.out.println(p.get原创 2016-08-02 20:00:11 · 1028 阅读 · 0 评论 -
Java集合--自定义受限制泛型实例
import java.util.ArrayList;import java.util.List;public class UserDefinedlimit { public static void main(String[] args) { ArrayList arrayList = new ArrayList(); arrayList.add(22); arrayList.原创 2016-08-02 20:17:27 · 433 阅读 · 0 评论 -
TreeSet集合添加自定义类的自然排序实例
如果自定义的类想要添加到TreeSet集合中就必须 实现 Comparable 或者 Comparator,如果实现Comparable 就是自然排序,Comparator 就是 定制排序 自然排序的步骤1 定义bean类 实现Comparable接口并且重写 compareTo方法2 测试类进行测试。public class Test { public static voi原创 2016-08-01 20:14:22 · 379 阅读 · 0 评论 -
Java中的I/O流
IO 与输入/输出有关的类和接口 分类: 方向(输入/输出) 从程序外部传向程序的流 从程序传到外部的流 单位 (字节/字符) 字节流是以字节为传输单位的数据读写形式,用于直接读取二进制数据,如图像和声音文件等.InputStream和OutputStream分别为面向字节的输入流类的父类和 输出流类原创 2016-08-16 20:40:42 · 318 阅读 · 0 评论 -
Set重写hashCode()和equals()的实例
import java.util.HashSet;public class Test { public static void main(String[] args) { HashSet hashset = new HashSet(); hashset.add(new Weather("11", 11, 3)); hashset.add(new Weather("11", 12,原创 2016-08-01 20:10:48 · 358 阅读 · 0 评论 -
Java集合--Set集合总结
Set集合特点; 无序 不允许重复的实现类: HashSet 通过hash码数据结构进行存储的 无序 不重复 如果想要判断两个对象是否是同一个对象 ,通常情况比较地址,但是现在需要通过制定内容来判断是否相同 hashCode() 判断的其各个属性的hashcode 而非对象真正的地址原创 2016-08-01 19:59:47 · 710 阅读 · 0 评论 -
TreeSet集合添加自定义类的定制排序实例
如果自定义的类想要添加到TreeSet集合中就必须 实现 Comparable 或者 Comparator如果实现Comparator 就是 定制排序定制排序的步骤1 定义bean类2 创建一个类 去实现Comparator接口 并且重写compare方法3 创建TreeSet对象 向构造方法中传递public class TestNO2Studen原创 2016-08-01 20:18:04 · 330 阅读 · 0 评论