
JAVA基础
ckinghan58
苦逼的程序员
展开
-
JAVA读取XML之SAX方式
好记性不如赖笔头…………XML文件:XmlDemo.xml<?xml version="1.0" encoding="UTF-8"?><Test> <Test1 > <node1>TestName</node1> <node2>TestDemo</node2> <node3>4</node3> <node4>5</node4> </Test原创 2017-06-06 18:01:39 · 499 阅读 · 0 评论 -
通过IO转换流,读写控制台输入的数据
好记性不如赖笔头…………在IO中,有两个类(InputStreamReader/OutputStreamWriter)可以将字节流转换为了字符流,它们是字节流与字符流之间的桥梁。 以下示例主要是使用字节流读取控制台中输入的数据,并将文件中的数据,以字节流的形式写入到控制台注意:System.out 与 System.in是对应的,一个输出字节流,一个输入字节流package com.Ckingha原创 2017-05-16 12:38:15 · 423 阅读 · 0 评论 -
抽象装饰者模式
好记性不如赖笔头……抽象装饰者模式比之装饰模式多了更大的扩展空间, 装饰模式在IO中大量使用。******************************************************抽像类******************************************************package com.ckinghan.extend;public abstrac原创 2017-05-16 09:31:45 · 257 阅读 · 0 评论 -
JAVA装饰者模式
JAVA中的装饰者模式主要使用了继承与多态来实现。******************************************************抽像类******************************************************package com.ckinghan.extend;public abstract class Writer { pu原创 2017-05-16 00:24:34 · 227 阅读 · 0 评论 -
JAVA使用字节流与高速缓冲字节流复制文件对比
好记性不如赖笔头……/** * @author Ckinghan * @描述:使用字节流复制文件与使用高速缓冲流复制文件的对比示例 * WebLogin.log 文件大小:15,028,378 字节(14.3M) */package com.Ckinghan.outputStream;import java.io.BufferedInputStream;import java.原创 2017-05-15 16:23:02 · 2102 阅读 · 0 评论 -
JAVA IO使用高速缓冲区的字节流复制文件
好记性不如赖笔头……带有高速缓冲区的字符流示例package com.Ckinghan.outputStream;import java.io.BufferedInputStream;import java.io.BufferedOutputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;i原创 2017-05-15 16:04:14 · 859 阅读 · 0 评论 -
JAVA IO流使用字节复制图片及字符型文件
好记性不如赖笔头……package com.Ckinghan.outputStream;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream原创 2017-05-15 15:15:14 · 460 阅读 · 0 评论 -
JAVA中inputStream/OutputStream字节输入流、输出流读写文件
好记性不如赖笔头…… 注意:InputStream/OutputStream是抽象类,不能被实例化,只能实例化其子类,且是字节流,不是字符流InputStream is = new FileInputStream(“a.txt”); 等同于 InputStream is = new FileInputStream(new File(“a.txt”));OutputStream类似与之类似,pa原创 2017-05-15 14:36:45 · 12452 阅读 · 0 评论 -
使用高效缓冲流BufferedReader/BufferedWriter实现文件复制
好记性不如赖笔头……package com.Ckinghan.ioDemo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import ja原创 2017-05-15 10:39:30 · 703 阅读 · 0 评论 -
java IO,bufferedReader/bufferedWriter对文件的读写
好记性不如赖笔头…………package com.Ckinghan.ioDemo;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.FileNotFoundException;import java.io.FileReader;import java.io.FileWriter;import原创 2017-05-15 10:21:51 · 609 阅读 · 0 评论 -
使用JAVA线程写的一个UDP简易通讯程序(三)
好记性不如赖笔头…………服务器代码package com.ckinghan.client;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;pu原创 2017-05-23 14:58:03 · 346 阅读 · 0 评论 -
使用JAVA写的一个简易TCP通讯程序(一)
好记性不如赖笔头…………使用TCP测试通讯时,注意必须 先启动服务端,否则客户端会报错。因为TCP是需要三次握手的协议,如果服务器没有启动,握手失败,就会提示“连接异常”的错误而UDP就没有这个问题,因为它是一种广播式的协议,在发送信息前,它不会去检查服务器有没有启动、存在不存在,它只是把消息发出去,好了,它的工作完成了,不管消息被 收到还是没有被收到。所以它才可以不用管启动顺序。服务端代码:pac原创 2017-05-23 14:45:48 · 2792 阅读 · 0 评论 -
JAVA局部内部类
在类的方法中创建的类,称之为局部内部类(感觉用的不多。。。)class Demod{ public static int age = 10; //类中的方法 public void show(){ //在类的方法中创建的类,称为局部内部类 class Inter{ public void show(){ System.out.println("局部内部类原创 2017-04-06 21:44:15 · 223 阅读 · 0 评论 -
匿名类与匿名对象的区别
匿名类的创建方法:new 接口名(){实现方法}.方法名();注意,这里new的是一个接口,不是对类。通过这个方法,相当于创建了一个接口的实现类,但这个类是匿名看不到的。所以称为匿名类。实例代码如下://创建一个接口interface Service{ public abstract void show();}class Test{ public sta原创 2017-04-06 20:22:10 · 852 阅读 · 0 评论 -
JAVA内部类
//内部类:类中套类,称为内部类class ExternalClass{ //外部类属性 public static String name = "小明"; //创建一个内部类 class InternalClass{ public int age = 10; //内部类的方法 public void printString(){ System.out.println原创 2017-04-06 09:36:29 · 434 阅读 · 0 评论 -
String常见问题及面试常问题
String string1= “helloWorld”; String string2 = new String(“helloWorld”); 问: string1 == string2 是true还是false? 为什么?String string3 = “hello”; String string4 = “World”; 问:string1 == (string3原创 2017-04-13 17:33:41 · 396 阅读 · 1 评论 -
PrintWriter打印流实例
好记性不如赖笔头…………注意: PrintWriter只有输出写入功能,而没有读取功能 PrintWriter 是字符输出,PrintStream 是字符输出 PrintWriter的底层还是由BufferedWriter、BufferedStreamWriter实现的。package com.Ckinghan.ioDemo;import java.io.BufferedReader;imp原创 2017-05-16 15:24:44 · 3015 阅读 · 0 评论 -
java中的自动拆箱、装箱是指什么?
JAVA语言中有个名词叫自动拆箱、装箱,那这个自动拆箱、装箱到底是指啥?自动拆箱、装箱是从JDK1.5开始才有的特性,其实它主要就是指基本类型与包装类的自动转换。如int 与Integer类型。 int 是基本类型,而Integer是int的包装类,在JDK1.5之前,int类型的值是不能直接赋给Integer类型的值 的,也就是说 Integer integer = 5; 会报错原创 2017-05-08 10:51:52 · 4264 阅读 · 0 评论 -
使用JAVA写的一个简易通讯程序(一)
好记性不如赖笔头…………两种常见的网络传输模型:一、OSI模型分层专业人员一般不说每一层的名称二是说第几层,这是等价的,层的位次得记清楚。 7)应用层——为终端用户提供应用程序服务。 6)表示层——为应用提供数据的表示形式。例如表示层告诉应用层哪儿有加密或它是否为一张.jpg图片。 5)会话层——在用户间管理会话。 4)传输层——在源定义数据段并编号,传送数据,并在目的地重组数据。增加(源、原创 2017-05-19 14:41:34 · 3810 阅读 · 1 评论 -
hashMap与hashTable的区别
相同点: 1、都是无序的数据集 2、都不能出现生复的key值不同点: 1、hashTable 是线程安全的,效率相对较低,hashMap是非线程安全的 2、hashTable的key值与value都不能出现null,hashMap的key可以出现一个Null值,value值可以出现多个null值原创 2017-05-10 16:52:16 · 191 阅读 · 0 评论 -
MAP集合的遍历方法
好记性不如赖笔头……*******************************实体类*******************************package com.***.equalsDemo;import java.util.Date;public class Entity implements Comparable<Entity>{ public Integer id;原创 2017-05-10 16:20:32 · 327 阅读 · 0 评论 -
什么是守护线程?
好记性不如赖笔头…………在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆: 只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。 Daemon的作用是为其他线程的运行提供便利服务,守护原创 2017-05-18 16:36:11 · 618 阅读 · 0 评论 -
JAVA线程调用yield方法主动让出CPU资源
好记性不如赖笔头…………实体类:package com.Ckinghan.threadEach;public class YieldThread extends Thread { @Override public void run() { for(int i = 0; i < 100; i++){ System.out.println(this.原创 2017-05-18 15:46:49 · 1162 阅读 · 0 评论 -
JAVA线程中join方法可以强占CPU资源直至执行结束
好记性不如赖笔头…………join()方法在API中的说明:void join() 等待该线程死亡。 可以理解为当线程调用了这个方法时,它会强占CPU资源,直到线程执行结果为止。 注意:这里说的是强点,而不是抢占,也就是说当这个线程调用 了join方法后,线程抢占到CPU资源,它就不会再释放,直到线程执行完毕。示例代码如下:----------------------------原创 2017-05-18 15:31:44 · 1151 阅读 · 0 评论 -
JAVA中设置了线程优先级,能保证这个线程一定先执行吗?
好记性不如赖笔头………………API中关于线程的优先级的说明:public final void setPriority(int newPriority) : 更改此线程的优先级。 static int MAX_PRIORITY :线程可以拥有的最大优先级。 (值 为10)static int MIN_PRIORITY :线程可以拥有的最小优先级。 (值 为1)static int NO原创 2017-05-18 14:59:17 · 7662 阅读 · 2 评论 -
使用点餐的过程示例线程交互
好记性不如赖笔头…………注意一点:在唤醒线程时,必须使用锁对象唤醒,否则,会报错。在进行wait状态时,锁并没有让出去。这里主要讲述的是线程的交互点餐的实体类:package com.Ckinghan.threadEach;/** * @author Ckinghan * @描述:线程交互,点餐实体类 */public class Rice { //点的菜名 privat原创 2017-05-18 14:26:24 · 304 阅读 · 0 评论 -
两种创建线程的方式/线程的生命周期及各自使用同步锁时的区别
好记性不如赖笔头…………两种创建线程的方法在使用同步锁的区别实现了Runnable接口的类创建线程: 因在创建多个线程时,实现Runnable接口的类只须要创建一个,所以它的锁对象默认为 this继承了Thread类的类,在创建线程时,如果使用了同步锁,那么它默认锁对象默认为 类名.class,原因在于继承了Thread的类在创建线程时,每创建一个线程创建了一个新的对象,要保证它的锁是固定的原创 2017-05-18 10:32:36 · 284 阅读 · 0 评论 -
线程的生命周期
好记性不如赖笔头…………线程的生命周期: 1.新建:使用new创建对象 2.准备就绪:调用了start()方法,但还没有抢占到CPU资源 3.运行:调用了start()方法并抢占到了cpu资源,开始执行 4.阻塞:调用 sleep()/wait()方法,使线程让出CPU资源并进入休眠状态,可调用notity()方法使线程进入到准备就绪状态 5.销毁:run方法执行结束或调用 stop()方原创 2017-05-17 15:43:33 · 189 阅读 · 0 评论 -
JAVA创建线程的两种方式
好记性不如赖笔头…………创建线程有两种方式:1、 继承Thread类,重写run方法,run方法内部写入线程执行的具体代码,创建线程时代码如下://创建线程Thread thread = new Thread;//启动线程thread.start();2、 实现Runnable接口,重写run方法,run方法内部写入线程执行的具体代码,创建线程时,代码如下 //假设Demo类实现了Runnab原创 2017-05-17 14:59:51 · 294 阅读 · 0 评论 -
JAVA 编码转换
好记性不如赖笔头…………常见字符编号如下: 1.Acsii码:使用7bit来存储数据 2.IOS-8859-1:拉丁码表,用8bit来存储数据 3.GB2312:简体中文编码(国标码) 4.GBK:在GB2312上做了增强 5.GB18030:对GBK做了增强,支持繁体 6.Unicode:支持多个国家的语言,是国际标准,用2个字节来存储,不管是什么字符都用两个字节来存储,会浪费存储空间原创 2017-05-17 11:22:12 · 2019 阅读 · 0 评论 -
序列化与反序列化及为何要实现Serializable接口
好记性不如赖笔头……为何要实现Serializable接口:Serializable接口是启用其序列化功能的接口。实现java.io.Serializable 接口的类是可序列化的。没有实现此接口的类将不能使它们的任一状态被序列化或逆序列化。序列化:将class文件及内容通过流写入到文件中(也称为持久化), 反序列化:读取文件内容转为指定的class类并填充其读取到的内容-------------原创 2017-05-17 09:25:20 · 355 阅读 · 0 评论 -
JAVA中的Collection迭代器
在Collection接口中,提供 了一个iterator的接口,它的主要作用是用于遍历集合中的数据,被称为迭代器。Collection中迭代器的特点是一行一行向下执行,它的指针随之每次加1,直至指针的数量达到当前迭代器的数量为止。也可以理解为它就是循环。示例代码如下: Collection collection = new ArrayList<>();//创建集合 /原创 2017-05-08 15:45:14 · 299 阅读 · 0 评论 -
Properties集合读写数据到文件
好记性不如赖笔头…………Properties集合:继承于HashTable,是线程安全的Properties可以保存到流或流中加载属性列表中的每个键和它的相应值是一个字符串没有泛型不建议使用put/putAll方法,建议使用setProperty/getPropertypackage com.Ckinghan.properties;import java.io.BufferedReade原创 2017-05-16 17:07:33 · 678 阅读 · 0 评论 -
JAVA中的System类常用方法
System类从我们接触JAVA就一直在用。可能你并不没有意识到。。。 这里简单记录一下几个方法,以后可能会用的到System.in: 这是个用来监听键盘事件的输入流。。System.gc(): 调用垃圾回收器,注意,这里的调用不是实时生效的,因为它相当于通知了JVM要调用GC回收器去加回收空间,但GC的什么时间去执行,则由JVM来分配。System.currentTimeM原创 2017-04-18 00:26:36 · 680 阅读 · 0 评论 -
Random指定生成的随机数序列
Random类是JDK提供的一个随机数类,包含了生成随机大部分基本类型的方法。 例如:public static void main(String[] args) { Random random = new Random(); int num = random.nextInt(); System.out.println("int类型随机数"+num)原创 2017-04-17 23:28:11 · 1676 阅读 · 0 评论 -
数组倒置
互换的对应关系直接上代码: public static void main(String[] args){ int[] array = {1,2,3,4,5,6,7,8,9,10}; //打印数组 printArray(array); //将数组倒置 sortDesc(array); //打印数组 printArray(array); } //打原创 2017-03-21 00:05:48 · 1342 阅读 · 0 评论 -
程序的加载流程
代码如下:class ThisClass{ String name; Integer age; public void printThis(){ System.out.println("ThisClass本次调用对象的地址为:\t\t\t"+this); } }class Test{ public static void main(String[] args){ Th原创 2017-03-27 15:19:49 · 606 阅读 · 0 评论 -
this关键字
this关键字this只能在类的方法中使用this代表当前调用这个this所在方法的对象的自身this可以在方法内区分同名类的属性和参数名,有this一定是属性,没有this一定是方法的参数this不能在static修饰的语句块内出现一言不合就上代码:class ThisClass{ String name; Integer age; public void prin原创 2017-03-27 15:00:53 · 282 阅读 · 0 评论 -
冒泡排序
/** 冒泡排序: 相邻两个数进行对比(根据条件 > 或 <),满足条件后进行互换位置 */ public static void main(String[] args){ //创建一个数组 int[] array = {1,454,56,67,234,556,78,34}; //打印原始数组 printArray(array); //对数组进行排序原创 2017-03-20 00:15:04 · 293 阅读 · 0 评论 -
获取数组中的最大值与最小值
代码如下: public static void main(String[] args){ //创建一个数组 int[] array = {1,454,56,67,234,556,78,34}; //求数组的最大值 int maxVal = getArrayMaxVal(array); //输出数组的最大值 System.out.println("数组array的最大原创 2017-03-19 23:09:38 · 2074 阅读 · 0 评论