Java基础积累篇
lostinai
这个作者很懒,什么都没留下…
展开
-
java中的volatile和synchronized
这个可能是最好的对比volatile和synchronized作用的文章了。volatile是一个变量修饰符,而synchronized是一个方法或块的修饰符。所以我们使用这两种关键字来指定三种简单的存取变量的方式。 int i1; int geti1() {return i1;}volatile int i2;转载 2016-09-26 11:08:20 · 293 阅读 · 0 评论 -
Java集合---LinkedList源码解析
一、源码解析1、 LinkedList类定义2、LinkedList数据结构原理3、私有属性4、构造方法5、元素添加add()及原理6、删除数据remove()7、数据获取get()8、数据复制clone()与toArray()9、遍历数据:Iterator()二、ListItr 一、源码解析 1、 LinkedLis转载 2015-11-20 18:16:14 · 572 阅读 · 0 评论 -
关于ArrayList的初始容量以及扩容的效率问题
论坛的一个问题:有这样一段很简单的代码: ArrayList a = new ArrayList (); a.addAll(b); a.addAll(c); 其中DataVO是一个实体类,b和c都是一个ArrayList 类型。 如果当b,c数据量很大的时候,请问这样一段代码是不是会很影响效率? 我们看一下ArrayList的源代码转载 2015-11-13 21:08:49 · 3299 阅读 · 0 评论 -
【Java基础】泛型方法
http://blog.csdn.net/feng88724/article/details/8792891JDK1.5中引入了泛型(Generic)机制。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。泛型方法典型用法, Collections类中的s转载 2015-11-13 14:00:41 · 350 阅读 · 0 评论 -
Java集合---HashMap源码剖析
http://www.cnblogs.com/ITtangtang/p/3948406.html一、HashMap概述二、HashMap的数据结构三、HashMap源码分析 1、关键属性 2、构造方法 3、存储数据 4、调整大小 5、数据读取 6、H转载 2015-11-13 15:04:58 · 468 阅读 · 0 评论 -
Java集合---ArrayList的实现原理
http://www.cnblogs.com/ITtangtang/p/3948555.html目录: 一、 ArrayList概述 二、 ArrayList的实现 1) 私有属性 2) 构造方法 3) 元素存储转载 2015-11-13 14:54:54 · 565 阅读 · 0 评论 -
Java(Android)线程池
介绍new Thread的弊端及Java四种线程池的使用,对Android同样适用。本文是基础篇,后面会分享下线程池一些高级功能。1、new Thread的弊端执行一个异步任务你还只是如下new Thread吗?Javanew Thread(new Runnable() { @Override public void run() { // TODO A转载 2015-09-10 14:35:34 · 342 阅读 · 0 评论 -
Java对Map排序
Java中对Map(HashMap,TreeMap,Hashtable等)的排序时间 首先简单说一下他们之间的区别: HashMap: 最常用的Map,它根据键的HashCode 值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null(多条会覆盖);允许多条记录的值为 Null。非 首先简单说一下他们之间的区别: HashM转载 2015-08-01 15:05:35 · 1787 阅读 · 0 评论 -
Java反射机制的学习
Java反射机制是Java语言被视为准动态语言的关键性质。Java反射机制的核心就是允许在运行时通过Java Reflection APIs来取得已知名字的class类的相关信息,动态地生成此类,并调用其方法或修改其域(甚至是本身声明为private的域或方法)。也许你使用Java已经很长时间了,可是几乎不会用到Java反射机制。你会嗤之以鼻地告诉我,Java反射机制没啥用。或许在J2EE、J转载 2015-06-30 15:00:44 · 336 阅读 · 0 评论 -
Java 之 文件读写及性能比较总结
干Java这么久,一直在做WEB相关的项目,一些基础类差不多都已经忘记。经常想得捡起,但总是因为一些原因,不能如愿。其实不是没有时间,只是有些时候疲于总结,今得空,下定决心将丢掉的都给捡起来。文件读写是一个在项目中经常遇到的工作,有些时候是因为维护,有些时候是新功能开发。我们的任务总是很重,工作节奏很快,快到我们不能停下脚步去总结。文件读写有以下几种常用的方法1、字节读写(Inpu转载 2015-12-11 16:09:49 · 869 阅读 · 0 评论 -
【Java】并发之线程池
先看一段我们熟悉的代码:[java] view plaincopyfor (int i = 0; i 100; i++) { Thread thread = new Thread(new OneTask(i)); thread.start(); } 其中,OneTask为Runnable接口的实现类。思考一个问题:当要异步执行大量转载 2015-11-23 19:05:29 · 357 阅读 · 0 评论 -
Java 如何有效地避免OOM:善于利用软引用和弱引用
想必很多朋友对OOM(OutOfMemory)这个错误不会陌生,而当遇到这种错误如何有效地解决这个问题呢?今天我们就来说一下如何利用软引用和弱引用来有效地解决程序中出现的OOM问题。下面是本文的目录大纲: 一.了解 强引用、软引用、弱引用、虚引用的概念 二.进一步理解软引用和弱引用 三.如何利用软引用和弱引用解决OOM问题 如果有不正之处,希望谅解和批评指正,不胜感激。转载 2015-11-24 13:13:20 · 794 阅读 · 0 评论 -
Android开发之反射与注解
反射类类型Class的使用类类型Class的实例获取方式有一下三种1234567891011121314151617181920publicstatic void转载 2016-10-09 17:38:02 · 844 阅读 · 0 评论 -
Java之美[从菜鸟到高手演变]之Exception
Exception这个东西,程序中必须会有的,尽管我们很不乐意看到它,可是从另一个角度考虑,有异常则说明程序有问题,有助于我们及时改正。有的时候程序出错的原因有很多,比如不合法的输入、类型、空指针甚至内存不足,如果光从软件来看,我们只知道它出问题了,并不清楚问题出在哪儿,给软件排错是个很头疼的事情,因为可能出问题的地方太多了,语法上的问题还好点儿,毕竟能从视觉上看出来,有些逻辑上的问题才是致命的,转载 2015-12-18 08:33:34 · 605 阅读 · 0 评论 -
浅析Java中的final关键字
谈到final关键字,想必很多人都不陌生,在使用匿名内部类的时候可能会经常用到final关键字。另外,Java中的String类就是一个final类,那么今天我们就来了解final这个关键字的用法。下面是本文的目录大纲: 一.final关键字的基本用法 二.深入理解final关键字 若有不正之处,请多多谅解并欢迎指正。 请尊重作者劳动成果,转载请标明原文链接: htt转载 2015-12-17 20:32:10 · 448 阅读 · 0 评论 -
Java 同步方式 (1) —— synchronized 和 Java 同步方式 (2) —— wait和notify/notifyall (很全面)
前两篇博客 ArrayList 用法比较 和 String 用法比较,介绍过程中都提及到了同步和线程安全的问题,本篇将重点介绍Java同步方式之一的synchronized用法。线程安全线程安全,是指每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的。或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行转载 2015-12-11 20:53:19 · 742 阅读 · 0 评论 -
Java中Synchronized的用法 (写的非常好,非常清晰)
原文:http://blog.csdn.net/luoweifu/article/details/46613015作者:luoweifu 转载请标名出处《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念synchronized.转载 2015-12-11 20:50:22 · 989 阅读 · 0 评论 -
Java 多线程(六) synchronized关键字详解(牛叉)
http://www.cnblogs.com/mengdd/archive/2013/02/16/2913806.html多线程的同步机制对资源进行加锁,使得在同一个时间,只有一个线程可以进行操作,同步用以解决多个线程同时访问时可能出现的问题。 同步机制可以使用synchronized关键字实现。 当synchronized关键字修饰一个方法的时候,该方法叫做同步方法。 当s转载 2015-12-11 18:00:07 · 300 阅读 · 0 评论 -
Java锁 到底锁的是哪个对象?
更新:在一次和一位专家的交谈中,他对一下代码能否能够成功同步,给予了否定的答案,他的理由是”以构造函数的成员变量作为synchronized的锁,在多线程的情况下,每一个线程都持有自己私有变量的锁,这个锁的地址能一样吗?怎么可能成功同步?这是最错误的写法!“,哎呀妈,说实话,当时我都被惊了一下,都开始怀疑这个代码的正确性了。我亲自测试了一下本文中的代码(测试代码在资源和硬盘中已保存)。结论是可转载 2015-12-11 17:20:30 · 834 阅读 · 0 评论 -
StringBuffer和String的优缺点比较--------HashMap和Hashtable的区别
1. String 类 String的值是不可变的,这就导致每次对String的操作都会生成新的String对象,不仅效率低下,而且大量浪费有限的内存空间。 String a = "a"; //假设a指向地址0x0001 a = "b";//重新赋值后a指向地址0x0002,但0x0001地址中保存的"a"依旧存在,但已经不再是a所指向的,a 已经指向了其它地址。转载 2015-11-24 10:12:35 · 739 阅读 · 0 评论 -
Android 获取屏幕尺寸与密度
遇到一个问题,我的地图浮标图片在WVGA手机上正好,在QVGA上就显的太大,所以我要根据屏幕的不同调整浮标的大小使其在QVGA大小合适。有的同事提出了依据分辨率来区分不同的屏幕,但是单WVGA就支持好几种不同的分辨率,QVGA又支持好几种。。。而且更神奇的时候,有时候,通过代码获取屏幕分辨率竟然得到了 320 x 427 ,Android文档是不支持这种分辨率的,所以依据分辨率来区分不同的屏幕是行转载 2015-03-12 10:19:34 · 542 阅读 · 0 评论 -
Java内存访问重排序的研究
http://tech.meituan.com/java-memory-reordering.html什么是重排序请先看这样一段代码1public class PossibleReordering {static int x = 0, y = 0;static int a = 0, b = 0;public static void main(String[] args)转载 2015-01-15 13:26:31 · 818 阅读 · 0 评论 -
一个经典例子让你彻彻底底理解java回调机制
转帖请注明本文出自xiaanming的博客(http://blog.csdn.net/xiaanming/article/details/17483273),请尊重他人的辛勤劳动成果,谢谢以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过转载 2014-06-11 15:27:35 · 747 阅读 · 0 评论 -
JAVA IO系列----FileInputStream和FileOutputStream类,Reader和Writer
·FileInputStream和FileOutputStream类分别用来创建磁盘文件的输入流和输出流对象,通过它们的构造函数来指定文件路径和文件名。·创建FileInputStream实例对象时,指定的文件应当是存在和可读的。创建FileOutputStream实例对象时,如果指定的文件已经存在,这个文件中的原来内容将被覆盖清除。·对同一个磁盘文件创建FileInputStream对象转载 2012-07-14 14:35:13 · 588 阅读 · 0 评论 -
DataInputStream与DataOutputStream的简单使用
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://hanchaohan.blog.51cto.com/2996417/922387 package com.hanchao.test;import java.io.DataInputStream;import java.io.DataOutputStream;import转载 2012-07-15 18:20:04 · 942 阅读 · 0 评论 -
Java I/O流-总结(InputStream,OutputStream,Reader,Writer)
一、 流的分类 • 按数据流动方向 – 输入流:只能从中读取字节数据,而不能向其写出数据 – 输出流:只能向其写入字节数据,而不能从中读取数据 • 按照流所处理的数据类型 – 字节流:用于处理字节数据。 – 字符流:用于处理Unicode字符数据。 • 按照流所处理的源 – 节点流:从/向一个特定的IO设备读/写数据的流转载 2012-07-14 23:51:14 · 1187 阅读 · 0 评论 -
Java,IO之FileOutputStream和FileWriter写入文件(疯狂java讲义)
import java.io.*; public class FileOutputStreamTest { public static void main(String[] args) throws IOException { FileInputStream fis = null;原创 2012-07-14 14:28:31 · 579 阅读 · 0 评论 -
Java 文件的处理
1. File类 1)File类介绍(《core java》638页) File类封装了对用户机器的文件系统进行操作的功能。例如,可以用File类获得文件上次修改的时间移动,或者对文件进行删除、重命名。换句话说,流类关注的是文件内容,而File类关注的是文件在磁盘上的存储。File类的主要方法有:getName(),getCanonicalFile(),lastModified()转载 2012-07-14 14:21:47 · 567 阅读 · 0 评论 -
Java,IO之FileInputStream和FileReader读取文件(疯狂java讲义)
import java.io.*; public class FileInputStreamTest { public static void main(String[] args) throws IOException { //创建字节输入流 FileInputStream f原创 2012-07-14 14:25:59 · 669 阅读 · 0 评论 -
Java IO流 FileOutputStream类 和 FileInputStream类 FileReader类和FileWriter类
FileOutputStream类和FileInputStream类,他们的父类分别是OutputStream类和InputStream类。FileOutputStream类FileInputStream类都没有子类了。它们的父类都是抽象类不能实例化。所以FileOutputStream类和FileInputStream类,就是其父类最直接的现。 FileInputStream类在创建的转载 2012-07-14 14:12:33 · 918 阅读 · 0 评论 -
Java中DataOutputStream.writeUTF(String)在c#中的替代
java public static String webPost(String msg,String myurl){ String ret = ""; HttpURLConnection conn = null; DataOutputStream dos = null; DataInputStream di转载 2012-07-15 18:21:45 · 1763 阅读 · 0 评论 -
Java Math.round() ---学习笔记
public class MathTest { public static void main(String[] args) { System.out.println("小数点后第一位=5"); System.out.println("正数:Math.round(11.5)=" + Math.round(11.5));转载 2012-08-19 18:48:44 · 411 阅读 · 0 评论 -
删除ArrayList中重复元素
用Set ,倘若list里边的元素不是基本数据类型而是对象,那么请覆写Object的boolean equals(Object obj) 和int hashCode()方法.returnnewArrayList(newHashSet(list)); 方法一:循环元素删除//删除ArrayList中重复元素publicstaticvoidremoveDuplicate转载 2012-08-20 12:59:48 · 704 阅读 · 0 评论 -
JAVA split 用法
java.lang.string.splitsplit 方法将一个字符串分割为子字符串,然后将结果作为字符串数组返回。stringObj.split([separator,[limit]])stringObj 必选项。要被分解的 String 对象或文字。该对象不会被 split 方法修改。separator 可选项。字符串或 正则表达式 对象,它标识了转载 2012-09-27 21:18:41 · 764 阅读 · 0 评论 -
遍历List 同时 remove 元素
[java] view plaincopyList list = new ArrayList(); list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); for (Iterator iter = list.iterator(); iter.hasNext();)转载 2013-08-24 23:41:44 · 1555 阅读 · 0 评论 -
JAVA练手小项目四:贪吃蛇游戏
http://blog.csdn.net/java_cxrs/article/details/3878093JAVA练手小项目四:贪吃蛇游戏时间:2009年2月3日开发工具:ECLIPSE项目描述:贪吃蛇游戏,实现了蛇,食物,界面等对象。实现了蛇的移动,食物的随机出现以及蛇吃食物变长和蛇移动,食物的随机出现以及蛇吃食物变长和蛇移动到界面外死亡的功能,本项目主要是练习面向转载 2013-01-16 16:09:06 · 1050 阅读 · 0 评论 -
JAVA 基本数据类型长度
Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。 1、整数:包括int,short,byte,long 2、浮点型:float,double 3、字符:char 4、布尔:boolean 基本型别大小最小值最大值boolean----------------ch转载 2013-01-16 09:48:44 · 475 阅读 · 0 评论 -
Java Math的 floor,round和ceil的总结(有用)
floor 返回不大于的最大整数 round 则是4舍5入的计算,入的时候是到大于它的整数(当-1.5时可见,四舍五入后得到的结果不是我们期待的,解决办法是先对他取绝对值,然后在用round方法)round方法,它表示“四舍五入”,算法为Math.floor(x+0.5),即将原来的数字加上0.5后再向下取整,所以,Math.round(11.5)的结果为12,Math.round(-11转载 2012-07-18 21:35:57 · 462 阅读 · 0 评论 -
JVM中堆与栈区别
1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收转载 2013-01-13 20:14:19 · 599 阅读 · 0 评论 -
Android文件IO详解
首先让我们回顾一下JavaIO。看图: 看到这么多流,是不是头都大了,当年我学这块的时候,心想什么玩意,这流那流的。什么时候该用什么流?输入流和输出流经常弄混,不知道什么时候该用输出?什么时候该用输入?接下来看图 :上面这张图说明了最基本的输入,输出。当然我们的数据源方向不一定只有文件,或许是内存或者网络。接下来说一下什么是字节流,字符流。转载 2012-10-10 14:13:32 · 642 阅读 · 0 评论