Java学习笔记
文章平均质量分 79
lxq_xsyu
这个作者很懒,什么都没留下…
展开
-
Java学习笔记(1)——基本数据类型
一、进制转换10^n被称为权 10称为基数 计算机中正数和负数的关系是取反加一, 如: ~3+1=-3补码边界运算有溢出风险32位二进制补码最多表示2^32个数, -2G~2G1,计算机中的一个二进制数, 00001111,它的10进制为:0000 1111 = 15 正数直接转换2,1111 1001,10进制数是多少1111 10010000 0110原创 2013-08-05 18:23:27 · 2621 阅读 · 0 评论 -
Android多线程研究(3)——线程同步和互斥及死锁
为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码:package com.maso.test;public class ThreadTest2 implements Runnable{ private TestObj testObj = new TestObj(); public static void main(String[] args) { Thread原创 2014-05-21 17:55:59 · 5572 阅读 · 0 评论 -
Android多线程研究(7)——Java5中的线程并发库
从这一篇开始我们将看看Java 5之后给我们添加的新的对线程操作的API,首先看看api文档:java.util.concurrent包含许多线程安全、测试良好、高性能的并发构建块,我们先看看atomic包下的AtomicInteger.import java.util.concurrent.atomic.AtomicInteger;public class AtomicIntegerTest原创 2014-06-05 08:02:18 · 4034 阅读 · 2 评论 -
Android多线程研究(4)——从一道面试题说起
有一道这样的面试题:开启一个子线程和主线程同时运行,子线程输出10次后接着主线程输出100次,如此反复50次。先看下面代码:package com.maso.test;/** * * @author Administrator * 两个线程,其中是一个主线程,第一个线程先运行输出10次,主线程接着运行输出100次,如此反复50次 */public class ThreadTest3原创 2014-05-22 11:38:16 · 4249 阅读 · 1 评论 -
Android多线程研究(9)——线程锁Lock
在前面我们在解决线程同步问题的时候使用了synchronized关键字,今天我们来看看Java 5.0以后提供的线程锁Lock.Lock接口的实现类提供了比使用synchronized关键字更加灵活和广泛的锁定对象操作,而且是以面向对象的方式进行对象加锁。 @Override public void run() { while(true){ Lock lock = new Re原创 2014-06-08 21:08:55 · 11289 阅读 · 1 评论 -
Java的结构之美【1】——构造对象
当我们遇到多个构造器参数的时候可能会想到用构件器,代码如下:/** * 构建器 * @author 阳光小强 * */public class Lunch { private String cake; private String meat; private String milk; private String drink; public Lunch(){ this(原创 2014-06-28 00:19:04 · 5175 阅读 · 8 评论 -
Android多线程研究(8)——Java5中Futrue获取线程返回结果
我们先来看一下ExecutorService中的执行方法:在上一篇中我们使用了execute方法启动线程池中的线程执行,这一篇我们来看看submit方法的使用:submit提交一个返回值的任务用于执行,返回一个表示任务的未决结果的 Future。该 Future 的 get 方法在成功完成时将会返回该任务的结果。import java.util.concurrent.Callable;impor原创 2014-06-08 11:45:08 · 3207 阅读 · 2 评论 -
Java的结构之美【2】——销毁对象
先来看一段代码:import java.util.Arrays;import java.util.EmptyStackException;/** * 2014年6月28日09:31:59 * @author 阳光小强 * */public class Stack { private Object[] elements; private int size = 0; privat原创 2014-06-29 09:58:33 · 3184 阅读 · 0 评论 -
一个Java基础练习
今天在群里又有一个朋友问到了这样一个练习,我索性将代码贴到这里,下次需要的朋友可以来这里看。用到知识点:数组、集合、IO流问题描述:在如下图所示的一个txt文件中读取数据到内存,然后统计列除过0的各个数字的个数(放入Map)并按照列的数据大小排序。代码:package com.test;import java.io.BufferedReader;import java.io.File;im原创 2014-06-11 17:31:51 · 2720 阅读 · 0 评论 -
三种字符串拼接方式比较
在Java中对字符串的操作可以说是最常用的,在对字符串的操作中有三种拼接字符串的方法,下面我们来看看这三种方式有何不同,在什么时候用比较合适。一、从耗时角度看先来看一段代码:package com.codeing.snail.test;public class StringFormat { private static long startPointTime; public static原创 2014-09-12 23:39:58 · 9637 阅读 · 0 评论 -
Android多线程研究(8)——Java中的原子性理解
一、什么是原子性原子性是世界上最小单位,具有不可分割性。比如a=0;(a非long和double类型)这个操作是不可分割的,那么我们说这个操作是原子操作。再比如:a++;这个操作实际上是a=a+1;是可分割的,所以他不是一个原子操作。二、原子操作的作用非原子操作都会存在线程安全问题,需要我们使用同步技术(sychronized)来让它变成一个原子操作。一个操作是原子操作,那么我们就称它具有原子性。原创 2014-09-14 23:57:44 · 5641 阅读 · 5 评论 -
Android多线程研究(9)——读写锁
一、什么是锁在Java的util.concurrent.locks包下有关于锁的接口和类如下:先看一段代码:package com.codeing.snail.test;public class ReadWriteLockTest { public static void main(String[] args) { final Output output = new Output();原创 2014-09-16 00:05:09 · 6568 阅读 · 1 评论 -
Java中的软(弱)引用
一、Java中的强、软、弱、虚引用在JDK中我们可以看到有一个java.lang.ref的包,这个包中就是Java中实现强、软、弱、虚引用的包,如下:PhantomReference虚引用:如果一个对象持有虚引用,就和没有持有引用一样,在任何时候都可能被垃圾回收器回收。虚引用主要用来跟踪对象被垃圾回收的活动,虚引用还有一个和弱、软引用不同的地方是虚引用必须和引用队列联合使用。当垃圾回收器准备回收一原创 2014-09-28 22:28:33 · 2604 阅读 · 0 评论 -
设计模式——观察者模式
观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。下面来写一个简单的观察者模式:S原创 2014-06-05 15:28:37 · 2914 阅读 · 1 评论 -
Java中的反射——(1)什么是反射
Java程序中的各个Java类属于同一类事物,描述这类事物的Java类名就是Class.public class ReflectTest { public static void main(String[] args) throws ClassNotFoundException { String str1 = "abc"; Class cls1 = String.class; Cla原创 2014-06-05 22:57:09 · 2905 阅读 · 2 评论 -
Android多线程研究(6)——多线程之间数据隔离
在上一篇《Android多线程研究(5)——线程之间共享数据》中对线程之间的数据共享进行了学习和研究,这一篇我们来看看如何解决多个线程之间的数据隔离问题,什么是数据隔离呢?比如说我们现在开启了两个线程,这两个线程都要同时给同一个全局变量data赋值,各个线程操作它赋值后的变量数据,这里就需要用到隔离。先看一段代码:import java.util.Random;public class Th原创 2014-06-04 22:48:14 · 3211 阅读 · 0 评论 -
Android多线程研究(5)——线程之间共享数据
一、如果是每个线程都执行相同的代码,则可以使用同一个Runnable来实现共享public class MultiThreadShareData { public static void main(String[] args) { new Thread(new ShareData()).start(); new Thread(new ShareData()).start(); }原创 2014-06-04 20:16:45 · 7404 阅读 · 0 评论 -
java学习笔记(5)——内部类
一、内部类1,静态内部类使用static修饰,声明在类体中静态内部类中可以访问外部类的静态成员2,成员内部类声明在类体中,不使用static,具有类的成员特征,也就是,必须有类的实例才能创建内部类实例内部类实例可以访问共享外部类的成员变量(很常用)如:链表的节点就可以定义为内部类3,局部内部类把类声明在方法中,就是局部内部类,作用域类似局部变量(很少见)原创 2013-08-06 21:03:20 · 2533 阅读 · 0 评论 -
java学习笔记(8)——多线程
进程:是一个程序在其自身的地址空间的一次执行活动。线程:(区别于进程)线程没有独立的存储空间。几个概念:时间片 线程 进程 能不能够用多进程代替多线程呢?两个进程切换时要交换内存空间,而多线程切换时效率比较高,所以通常多个任务采用多线程,不要开启大量的进程。java在语言级别提供了对多线程程序设计的支持实现多线程程序的两种方式:1,从Thread类继承2,实现R原创 2013-08-06 21:13:01 · 2181 阅读 · 0 评论 -
java学习笔记(9)——网络
计算机网络:最简单的网络由两台计算机组成计算机A ---协议---> 网络 ---协议---> 计算机B---->端口1---->A软件192.168.0.118 192.168.0.10一、IP地址IP网络中每台主机都必须有一个唯一的IP地址;IP地址是一个逻辑地址;因特网上的IP地址具有全球唯一性;32位,4个字节,常用点分十原创 2013-08-06 21:14:46 · 3235 阅读 · 0 评论 -
java学习笔记(2)——函数
int a = 1;a = a++;1,取出a的值1作为a++表达式的值(a++表达式等于1)2,a增加1变为23,执行赋值运算,a++表达式的值再赋给a,a又成为了1.-----------------------------------------------package pack01;public class HexBie {public stati原创 2013-08-06 18:48:37 · 2424 阅读 · 0 评论 -
java学习笔记(3)——面向对象
this关键字this是当前对象的引用,是运行期间当前对象本身。可以使用this明确的访问当前对象的属性或者方法,类似于“我”this()可以调用本类的其他构造器,可以使用构造器的重用简化代码的实现this()必须写在构造器的第一行!一、java调用方法参照两点:1,方法签名(方法名+参数列表)2,就近原则:比如 f('a',5) ---->f(int ,int)原创 2013-08-06 20:59:23 · 2497 阅读 · 0 评论 -
Java学习笔记(4)——JavaSE
一、HashMapHashMap以键值对的形式存储对象,关键字Key是唯一的,不重复的1,key可以是任何对象,Value可以任何对象2,重复的key算一个,重复添加是替换操作(会覆盖原来的元素)3,根据key的散列值计算散列表,元素按照散列值排序4,HashMap默认的容量是16,默认加载因子0.755,HashMap根据Key检索查找value值hashMap常用的原创 2013-08-06 21:01:10 · 2484 阅读 · 0 评论 -
java学习笔记(6)——序列化
一、序列化与基本类型序列化1,将类型int转换为4byte,或将其它数据类型(如long->8byte)的过程,即将数据转换为n个byte序列叫序列化(数据->n byte)如:0x7fffffff -> [7f, ff, ff, ff]2,反序列化,将n byte转换为一个数据的过程(n byte->数据)如:[7f, ff, ff, ff] -> 0x7fffffff原创 2013-08-06 21:10:24 · 2325 阅读 · 0 评论 -
java学习笔记(7)——I/O流
一、File类File(File parent, String child);File(Stirng filename);--------------------------------------------------------//使用相对路径创建文件和目录package pack02;import java.io.File;import java.io.原创 2013-08-06 21:12:02 · 2306 阅读 · 0 评论 -
JAVA SE回顾及思考(3)——排序算法
排序的算法是很多公司的笔试和面试题,个人感觉Java中其实无需使用这些排序方法,因为Java中已经为我们提供了很方便效率很高的sort()方法。但是不使用不能代表不需要学习这些算法,也不是仅仅为了面试和笔试才去学这些算法,这些算法中有很好的数据结构方面的思想,掌握这些算法可以帮助我们更好的理解数据结构。这次既然是回顾和思考,我决定使用很形象的图文展示的方式,透彻的去理解每一个排序算法。一、选择原创 2013-12-21 19:40:15 · 2158 阅读 · 0 评论 -
JAVA SE回顾及思考(1)——面向对象的特点
学习Java已经三年了,现在开始做Android开发,虽说还在用Java语言但本人现在才真真的意识到无论学什么基础才是最重要的,可能一些刚接触Java或者Android的朋友现在还体会不到基础的重要性,感觉能做出实实在在的东西来才是自己真真能力的集中体现。都说IT行业是一个要会学习的行业,因为这个行业的知识更新很快,也许就是这个原因很多新人很重视新技术的使用方法缺往往忽视了基础。我认为作为技术人员原创 2013-12-20 23:00:05 · 3764 阅读 · 0 评论 -
JAVA SE回顾及思考(2)——数组的复制与动态扩展
我们知道在Java中数组是非基本类型既数组是对象(Object)的子类,所以用下面的这种方式是不能复制该对象的 public static void main(String[] args) { int[] arry1 = new int[]{1, 2, 3, 4}; //数组赋值 int[] arry2 = arry1; //一个数组对象,两个引用同时引用该对象 System.原创 2013-12-21 12:18:03 · 2801 阅读 · 0 评论 -
Android多线程研究(1)——线程基础及源码剖析
从今天起我们来看一下Android中的多线程的知识,Android入门容易,但是要完成一个完善的产品却不容易,让我们从线程开始一步步深入Android内部。一、线程基础回顾package com.maso.test;public class TraditionalThread { public static void main(String[] args) { /* * 线程的第原创 2014-05-20 11:12:29 · 3234 阅读 · 2 评论 -
Android多线程研究(2)——定时器
先来看一段代码: public static void main(String[] args) { new Timer().schedule(new TimerTask() { @Override public void run() { System.out.println("阳光小强"); } }, 5000); int i = 0; wh原创 2014-05-20 22:51:54 · 2952 阅读 · 5 评论 -
Java的IO流架构
输入输出是指应用程序与外部设备及其他计算机进行数据交流的操作,如读写硬盘数据、向显示器输出数据、通过网络读取其他节点的数据等。任何一种编程语言必须拥有输入输出的处理方式,Java语言也不例外。Java语言的输入输出数据是以流的形式出现的,并且Java提供了大量的类来对流进行操作,从而实现了输入输出功能。 所谓流是指同一台计算机或网络中不同计算机之间有序运动着的数据序列,Java把这些不同来转载 2014-12-26 15:41:53 · 2613 阅读 · 0 评论