![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
Whiteleaf3er
这个作者很懒,什么都没留下…
展开
-
原子访问
原子操作是线性安全的,比如int i =1;而i++不是,因为会有取i,+1,再赋值给i,可能会发生线程中的同步异步问题所以提供了一个包,里面使得自增自减这些操作是安全得package multiplethread;import java.util.concurrent.atomic.AtomicInteger;public class TestThread { pu...原创 2018-09-15 10:03:14 · 489 阅读 · 0 评论 -
System.in/out
System.out是从控制台输出数据System.in是从控制台输入数据try(InputStream is = System.in;){while(true) int i = is.read;System.out.println(i);// 输入a会得到 97 13 10 //a 回车 换行 Scanner可以逐行读取,比System.in.read方便Scan...原创 2018-09-09 13:15:57 · 150 阅读 · 0 评论 -
对象流——序列化 FileInputStream(f) ObjectInputStream(fis)
注:把一个对象序列化有一个前提是:这个对象的类,必须实现了Serializable接口public static void main(String[] args) { //创建一个Hero garen //要把Hero对象直接保存在文件上,务必让Hero类实现Serializable接口 Hero h = new Hero(); ...原创 2018-09-09 13:09:43 · 1218 阅读 · 0 评论 -
数据流DataInputStream 数据输入流 DataOutputStream 数据输出流,与RandomAccessFile类基本一致,加强类
使用数据流的writeUTF()和readUTF() 可以进行数据的格式化顺序读写如本例,通过DataOutputStream 向文件顺序写出 布尔值,整数和字符串。 然后再通过DataInputStream 顺序读入这些数据。注: 要用DataInputStream 读取一个文件,这个文件必须是由DataOutputStream 写出的,否则会出现EOFException,因为DataOut...原创 2018-09-09 12:20:28 · 306 阅读 · 0 评论 -
Java中的异常
1-数组下标越界2-空指针异常,指向对象为空比如Class student,有name属性声明了student a如果让string s = a.name这就是空指针异常a并没有指向具体的实体对象,对象并没有建立解决方法两种第一种是student a = new student()第二种是让a=c并且c不为空3-父类转子类异常这种转型是可能实现的但是...原创 2018-09-03 18:42:27 · 124 阅读 · 0 评论 -
I/O FILE
1-创建一个文件对象// 绝对路径 File f1 = new File("d:/LOLFolder"); System.out.println("f1的绝对路径:" + f1.getAbsolutePath()); // 相对路径,相对于工作目录,如果在eclipse中,就是项目目录 File f2 = new File("LO...原创 2018-09-05 15:56:28 · 207 阅读 · 0 评论 -
多线程的同步问题
多个线程同时修改统一数据造成错误的数据输出叫做多线程的同步问题这是因为同时访问同一变量,当一个线程还未返回结果作为下一线程的参数时,下一线程已经开始,最后的结果也就是最后一个线程最后结束时变量最后改变的结果synchronized表示当前线程,独占 对象 someObject表示这个线程都占了此对象其他线程要想进行就得等待此进程得结束也就是 synchronized 块自然结束...原创 2018-09-11 22:59:07 · 304 阅读 · 0 评论 -
自定义异常
有些时候除了自带的exception异常还有些异常我们也需要捕捉,并且要给他一个好的名字让我们了解这是这个方面的异常比如一个英雄攻击另一个英雄的时候,如果发现另一个英雄已经挂了,就会抛出EnemyHeroIsDeadException创建一个类EnemyHeroIsDeadException,并继承Exception(这是一个类,所以可以继承)提供两个构造方法1. 无参的构造方法2. ...原创 2018-09-05 15:24:13 · 188 阅读 · 0 评论 -
Throwable
这是一个类,包括1-Error,2-Exception,Exception又包括RuntimeException和IOException(运行异常与可查异常)其中这个类常用的方法1-getMessage():获得更详细的异常信息2-toString():获得异常的简短描述3-printStackTrace():打印异常发生的堆栈跟踪信息,包括异常类,方法名以及所在行数对于e...原创 2018-09-05 14:59:13 · 219 阅读 · 0 评论 -
异常分类
1-可查异常: CheckedException可查异常即必须进行处理的异常,要么try catch住,要么往外抛,谁调用,谁处理,比如 FileNotFoundException如果不处理,编译器,就不让你通过2-运行异常比如空指针,无对象,下标越界,除数为0String str = null;str.length();//空指针异常这种异常不会导致编译错误,且较普遍,用...原创 2018-09-05 14:52:18 · 167 阅读 · 0 评论 -
缓存流 FileWriter(f),BufferedWriter(fw)//////FileOutputStream(f) BufferedOutputStream(inf)加强类
缓存的方式使流的过程减少了对硬盘的访问,字节流就是每个字节都去访问硬盘,效率很低,而缓存的方式是先放到一个缓存区中,需要就去缓存区取,取完了不够了再去访问硬盘,减少了对硬盘的访问,减少IO操作,效率提升BufferedReader x = new BufferedReader(fr)(fr是一个FileReader)String line = x.readline();(一次读取一行)...原创 2018-09-08 10:00:34 · 168 阅读 · 0 评论 -
字符流FileReader(f), BufferedReader(fr)
Reader——FileReader字符输入流 Writer——FileWriter字符输出流 专门用于字符的形式读取和写入数据书上是,InputStreamReader和OutputStreamWriter类但通常以缓冲情况进行,BufferedReader和BufferedWriterFileReader fr = new FileReader(f);BufferedRea...原创 2018-09-08 09:02:27 · 645 阅读 · 0 评论 -
calendar
package date; //import java.util.Calendar;import java.util.Date; public class TestDate { public static void main(String[] args) { //采用单例模式获取日历对象Calendar.getInstance(); C...原创 2018-08-30 15:36:41 · 158 阅读 · 0 评论 -
日期格式化类SimpleDateFormat
1-日期转字符串package date; //import java.text.SimpleDateFormat;import java.util.Date; public class TestDate { public static void main(String[] args) { //y 代表年 //...原创 2018-08-30 15:18:56 · 309 阅读 · 0 评论 -
日期类date
package date; //import java.util.Date; public class TestDate { public static void main(String[] args) { // 当前时间 Date d1 = new Date();//不带参数默认为当前时间 System.out.print...原创 2018-08-30 14:40:16 · 156 阅读 · 0 评论 -
ArrayList常用方法
1-add(x,对象)在x位置处,添加一个新对象ArrayList heros = new ArrayList(); // 把5个对象加入到ArrayList中 for (int i = 0; i < 5; i++) { heros.add(new Hero("hero " + i)); } ...原创 2018-09-15 17:59:54 · 502 阅读 · 0 评论 -
流stream FileInputStream(f)
package stream; import java.io.File;import java.io.FileInputStream;import java.io.IOException;public class TestStream { public static void main(String[] args) { try { ...原创 2018-09-06 14:00:54 · 476 阅读 · 0 评论 -
List接口|泛型generic
package collection; import java.util.ArrayList;import java.util.List; import charactor.Hero; public class TestCollection { public static void main(String[] args) { //ArrayList实现了...原创 2018-09-16 15:43:33 · 299 阅读 · 0 评论 -
Lock接口与对象
Lock lock = new ReentrantLock();用接口使用一个对象,达到线程同步化Lock lock = new ReentrantLock(); Thread t1 = new Thread() { public void run() { try { log...原创 2018-09-15 09:46:53 · 165 阅读 · 0 评论 -
线程池
即多个线程放在一起,在一个容器里操作比如又a,b,c三个线程,开始全部在wait在这个线程池里面,当放入一个任务,notify a,执行,结束后继续wait不结束线程java提供自带的线程池,而不需要自己去开发一个自定义线程池了。线程池类ThreadPoolExecutor在包java.util.concurrent下 ThreadPoolExecutor threadPool= ...原创 2018-09-15 09:27:45 · 135 阅读 · 0 评论 -
多线程县交互实例,生产消费
生产者消费者问题是一个非常典型性的线程交互的问题。1. 使用栈来存放数据1.1 把栈改造为支持线程安全1.2 把栈的边界操作进行处理,当栈里的数据是0的时候,访问pull的线程就会等待。 当栈里的数据时200的时候,访问push的线程就会等待2. 提供一个生产者(Producer)线程类,生产随机大写字符压入到堆栈3. 提供一个消费者(Consumer)线程类,从堆栈中弹出字符并打印到控...原创 2018-09-14 15:26:27 · 153 阅读 · 0 评论 -
死锁|线程之间的交互,wait和notify
A线程占用对象盖伦B线程占用对象提莫A试图占用提莫,等待B释放cpu资源B同理相互等待,GG—————————————————————————————————————————————————————————同样加血减血当hurt hp==1时就要停止,当血量加上去了才能继续hurt怎么处理?t1(关于hurt的线程)里面run覆盖,while(1)里面每次hp-...原创 2018-09-14 14:49:18 · 191 阅读 · 0 评论 -
常见线程方法
1-暂停Thread.sleep(1000); 表示当前线程暂停1000毫秒 ,但不会释放资源,其他线程不受影响 Thread.sleep(1000); 会抛出InterruptedException 中断异常,因为当前线程sleep的时候,有可能被停止,这时就会抛出 InterruptedException2-join,该线程加入主线程,只有该线程结束时,才会向下走是说如果之前t1.s...原创 2018-09-10 15:38:51 · 129 阅读 · 0 评论 -
多线程——启动
一-线程与进程:线程被称为轻负荷进程,一个进程可以包括多个线程多线程使在同一时间同一进程可以做多件事情二-多线程的创建1-extends+覆盖run方法class NewThread extends Thread(){ public void run()}Thread thread = new NewThread();thread.start();2-imp...原创 2018-09-10 15:12:55 · 178 阅读 · 0 评论 -
泛型
不使用泛型, ArrayList heros = new ArrayList();所有对象都可以放进去,那么问题来了,放进去是个AP,你取出来转换成AD,那就报错了使用泛型,ArrayList<APHero> heros = new ArrayList<APHero>();就只能放入APHero类型,取出来自然也是这个类型如果泛型定义为<Hero>...原创 2018-09-17 16:11:56 · 129 阅读 · 0 评论 -
关闭流
1-在try中关闭,不推荐,因为如果报错,抛出异常,会有巨大的资源占用隐患2-在finally中关闭 1-将流的声明放在try的外面,这样作用域才能抵达finally 2-在catch后在finally关闭之前判断是否文件为空3-不为空再使用一次try catch(IOException)这是标准关闭方法,但是相对繁琐,不重要或者测试时才会使用3-把流的定义放在try()里...原创 2018-09-06 22:52:23 · 358 阅读 · 0 评论 -
collection/s
collection是一个接口Collection是 Set List Queue和 Deque的接口Queue: 先进先出队列Deque: 双向链表上两种可以由LinkedList实现,其实现了了List接口而collections是一个工具类,容器的工具类,相对于Array对于数组的工具类1-反转reverse(List) 使List中的数据发生翻转Collecti...原创 2018-09-16 21:49:14 · 141 阅读 · 0 评论 -
HashMap/HashSet
HashMap也就是查字典一个key对应一个value,更新value会覆盖原有值一个value可以对应多个keypackage collection; import java.util.HashMap; import charactor.Hero; public class TestCollection { public static void main(S...原创 2018-09-16 21:37:28 · 138 阅读 · 0 评论 -
二叉树
排序二叉树package collection; public class Node { // 左子节点 public Node leftNode; // 右子节点 public Node rightNode; // 值 public Object value; // 插入 数据 public void add(...原创 2018-09-16 20:39:14 · 123 阅读 · 0 评论 -
线程安全的类相关
不安全的原因是因为共享变量被多个线程调用而出现数据错乱而前面讲到的锁就是让其同步操作,同一时刻只有一个线程可以操作这个变量,达到数据的一致性和同步性。 步骤 1 : HashMap和Hashtable的区别顶折纠问HashMap和Hashtable都实现了Map接口,都是键值对保存数据的方式区别1: HashMap可以存放 nullHashtable不能存放null...原创 2018-09-12 14:16:41 · 232 阅读 · 0 评论 -
LinkedList/Deque/Queue
一样实现了List接口,所以方法差不多同时还实现了双向链表结构Deque接口LinkedList<Hero> ll =new LinkedList<Hero>();//所以可以很方便的左右首尾操作addLast addFirst 添加getLast getFirst 查看removeFirst/Last 取出同时删除还实现了Queue接口队列of...原创 2018-09-16 16:14:34 · 280 阅读 · 0 评论 -
遍历Arraylist的三种方法
1-for (int i = 0; i < heros.size(); i++) { Hero h = heros.get(i); System.out.println(h); }2-相当于用一个heros的array方法iterator得到一个it对象,it就是一个迭代器,这个容器就是hero,然后每次判断,每次去...原创 2018-09-16 16:00:35 · 1807 阅读 · 0 评论 -
stringbuffer 变长数组
string是一个字符串数组加上一个buffer,就可以让他直接自由的改变字符串属于字面量,本身是不能改变地package character; public class TestString { public static void main(String[] args) { String str1 = "let there "; ...原创 2018-08-30 14:20:27 · 369 阅读 · 0 评论 -
异常处理
1-try catchtry表示你将要尝试的操作,catch(x),x表示可能出现的异常 File f= new File("d:/LOL.exe");try{ System.out.println("试图打开 d:/LOL.exe"); new FileInputStream(f); System.out.println("成功打开");}catch(FileNo...原创 2018-09-04 20:25:46 · 140 阅读 · 0 评论 -
字符串
1-字符串即字符的组合,在Java中,字符串是一个类,所以我们见到的字符串都是对象 常见创建字符串手段: 1. 每当有一个字面值出现的时候,虚拟机就会创建一个字符串 2. 调用String的构造方法创建一个字符串对象 3. 通过+加号进行字符串拼接也会创建新的字符串对象 1 2 3 4 5 6 7 8 9 ...原创 2018-08-24 17:55:24 · 163 阅读 · 0 评论 -
条件语句
public class Hero { String name; float ht; float armor; int moveSpeed; public void legendary() { System.out.println("超神"); } public void htDecate(float a) { ht=ht-a; } static boolean die(float h...原创 2018-06-28 21:48:13 · 212 阅读 · 0 评论 -
操作符
算数,关系,逻辑,赋值,三元与System.out.println("")对应的scannerimport java.util.Scanner; public class HelloWorld { public static void main(String[] args) { Scanner s = new Scanner(System.in);//声明一个接受输入的变量 ...原创 2018-06-28 20:07:02 · 91 阅读 · 0 评论 -
变量与类型转换,命名,作用域,final
一-变量1-整型后面加l表示长整型,long val = 26L; //以L结尾的字面值表示long型另外可以int xx xx表示二进制,八进制,十六进制等2-浮点型float 长度为32位 double 长度为64位 注意: 默认的小数值是double类型的 所以 float f = 54.321会出现编译错误,因为54.321的默认类型是 double,其类型 长度为64,超过了float的...原创 2018-06-28 15:43:15 · 500 阅读 · 0 评论 -
类与对象
public class Hero { String name; //姓名 float hp; //血量 float armor; //护甲 int moveSpeed; //移动速度}Hero(首字母大写)是个类moveSpeed(第二个单词大写)是个状态这样有了Hero这个模板new Hero()就创建一个新英雄相当于C语言中申请...原创 2018-06-28 15:06:44 · 157 阅读 · 0 评论 -
Eclipse
1-下载并解压到e:/eclipse,目录情况如图所示。2-打开exe应用程序如果是第一次创建Java项目 File->New->Other->Java->java Project 以后再创建java项目,就只需要 File->New->java project 输入项目名称 finish这样就可以像vs一样运行c语言程序了,也有点像python运行python...原创 2018-06-28 14:48:31 · 107 阅读 · 0 评论