
Java基础
文章平均质量分 57
l_vaule
植根于内心的修养;无需提醒的自觉;以约束为前提的自由;为别人着想的善良。
展开
-
java中的加载顺序以及父类与子类的构造方法
public class fatt{public static void main(String[] args){ animal a=new cat(9);}}class animal{ static int qq=7; static { System.out.println("父类静态"); } { System.out.println("父类非静态"); }原创 2014-12-31 15:53:46 · 1533 阅读 · 0 评论 -
观察源码分析HashMap和Hashtable的区别
老生常谈的问题,有时候总是记不太清,希望今天好好总结一下。首先打开HashMap源码:public class HashMap extends AbstractMap implements Map, Cloneable, Serializable可以发现Hash继承的是AbstractMap类,并且分别实现了Map接口,Cloneable和序列化接口。再看HashT原创 2016-07-10 18:52:17 · 403 阅读 · 0 评论 -
Java基于Socket的简单推送
做过安卓的肯定大多使用过推送,其实我们也可以通过socket做一个简单的推送平台,如果想考虑高并发的情况可以采用mina或者netty等开源框架(如果有时间我会把关于minasocket的文章补上来)。这里就先用Java原生的socket简单实现以下。其实推送的原理也无非就是轮询和长链接,这里是服务端与客服端要建立一个长连接,建立连接后客户端要不停的去监听来自服务端的消息。再贴代码之前我先稍微原创 2016-05-07 15:54:27 · 5307 阅读 · 1 评论 -
Java类锁和对象锁
synchronized关键字事实上,synchronized修饰非静态方法、同步代码块的synchronized (this)用法和synchronized (非this对象)的用法锁的是对象,线程想要执行对应同步代码,需要获得对象锁。synchronized修饰非静态方法以及同步代码块的synchronized (类.class)用法锁的是类,线程想要执行对应同步代码,需要获得类锁。1、对象方...原创 2018-03-10 18:08:50 · 273 阅读 · 0 评论 -
java中的String类
在这我想把String的一些容易混淆的地方进行一下区分。首先,我想知道String a="aaa";和String b=new String("aaa");有没有区别,如果有的话,区别在哪。String a="aaa";a在栈区,他会在常量池加载出它所要的内容并且直接指向堆区的常量池中“aaa”所在的位置。第二个是不可变字符序列。他会先在堆区创建一个字符数组并且将“aaa”存到里面,并让b指向他。...原创 2014-11-19 15:56:50 · 800 阅读 · 0 评论 -
java的多态性
java的多态有两种表现形式,重写(覆盖)和重载(类本身内的,和继承什么的都没关系)。public abstract class anmial{ String runString;public void run(String howrun){ runString=howrun; System.out.println("anmial run");}public void run()...原创 2014-11-19 15:46:26 · 718 阅读 · 0 评论 -
java中把一个百分制数变成小数
public static void main(String[] args) {String a="18%";float result=new Float(a.substring(0,a.indexOf("%")))/100;System.out.println(result);}原创 2014-10-14 23:14:51 · 1452 阅读 · 0 评论 -
java中保留两位小数
4种方法,都是四舍五入,例:import java.math.BigDecimal;import java.text.DecimalFormat;import java.text.NumberFormat;public class format { double f = 111231.5585; public void m1() { BigDecimal bg...转载 2014-09-11 18:25:52 · 937 阅读 · 0 评论 -
Java数组和链表模拟队列
package com.example.datastruct;import java.util.Arrays;public class LinkQueue<T> { Node<T> head; Node<T> tail; int mSize; public boolean addNode(Node<T> node){ if (...原创 2018-03-04 19:12:28 · 205 阅读 · 0 评论 -
内部类,抽象类和接口
普通类继承抽象类要把抽象类中的所有抽象方法原创 2014-10-30 11:48:04 · 725 阅读 · 0 评论 -
java对象的内存布局
在HotSpot虚拟机中,对象在内存中存储的布局可以分为三个区域:对象头(Header).实例数据(Instance Data)和对齐填充(Padding)。 HotSpot虚拟机的对象头包括两部分信息:一部分是用于存储对象自身运行时数据,如hashcode,gc分代年龄,锁状态标志,线程持有的锁,偏向线程ID,偏向时间戳等,这部分的数据长度在32位和64位虚拟机(未开启指针压缩[指针压缩是原创 2015-10-14 16:49:31 · 430 阅读 · 0 评论 -
Java的集合类
集合类存放于java.util包中。集合类存放的都是对象的引用,而非对象本身,出于表达上的便利,我们称集合中的对象就是指集合中对象的引用(reference)。集合类型主要有3种:set(集)、list(列表)和map(映射)。1)集集(set)是最简单的一种集合,它的对象不按特定方式排序,只是简单的把对象加入集合中,就像往口袋里放东西。对集中成员的访问和操作是通过集中对象的引用进行的,所以集中不...原创 2015-02-09 11:58:57 · 551 阅读 · 0 评论 -
Class类文件的结构
Class文件是一组以8字节为基础单位的二进制流,各个数据项目严格按照顺序紧凑的排列在Class文件之中,中间没有添加任何分隔符,使得整个class文件中几乎全是运行程序的必要数据。中间也没有任何分隔符,如果遇到占8字节以上空间的数据项,则会按照高位在前的方式分隔成若干个8位字节进行存储。Class文件按照一种类似于C语言中结构体来存储数据, 这种伪结构中只有两种数据类型,无符号数和表,后面的原创 2016-03-21 20:11:12 · 434 阅读 · 0 评论 -
Java中==与equlas的区别
public class Test { public static void main(String[] args) { Object object = new Object(); Object object1 = object; Object object2 = new Object(); System.out.println(object+"=="+object1+"=="+...原创 2014-10-23 10:48:07 · 2437 阅读 · 1 评论 -
Java顺序表简单实现
import java.util.Arrays;public class ArrayList { T datas[]; private int index; public ArrayList() { this(10); } public ArrayList(int size){ if (size > 0) { datas = (T[]) new Object[size]原创 2016-05-05 18:41:13 · 845 阅读 · 0 评论 -
Java对象序列化
我们知道当Java创建对象时,只要你需要,它就会一直存在,但是在程序终止时,无论如何它都不会继续存在。尽管这么做肯定有意义的,但是仍旧存在某些情况,如果对象能够在程序不运行的情况下仍能存在并保存其信息,那将非常有用。这样,在下次运行程序时,该对象将被重建并且拥有的信息与程序上次运行时他所拥有的信息相同。Java序列化将呢些实现了Serializable的接口的对象转换成一个字节序列,并能够在以原创 2016-05-06 15:08:24 · 749 阅读 · 5 评论 -
JavaI/O系统
Java类库中IO分为输入和输出两部分,任何自InputStreame或Reader派生来的类都含有read()方法,用于读取单个字节或者字节数组。同样,任何自OutputStreame或Writer派生而来的类都含有名为write()的方法,用于写单个字节或字节数组。一般使用都是多个对象叠合(装饰着模式)来使用。所有跟输入(读)有关的类都应该继承InputStreame,而所有和输出(写)有原创 2016-04-21 15:51:54 · 532 阅读 · 0 评论 -
浅谈Java反射
我们知道在java中想要生成一个对象,我们主流就是要么通过new关键字,要么通过反射(反射可以绕过jvm的权限检测机制,也就是说我们可以通过反射去操作一些本来拿不到的东西,下面我会用代码进行解释)。public class Refecter { public static double stadouble;}public class Refecter1 extends Refecte原创 2016-05-05 12:28:11 · 579 阅读 · 0 评论 -
Java容器类
画了个简略图,,感觉画的有点乱,不过大体逻辑还算清晰。原创 2016-04-18 20:44:15 · 345 阅读 · 0 评论