自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 问答 (1)
  • 收藏
  • 关注

原创 下面代码创建了几个String对象

String s1 = "hello";String s2 = s1.substring(2,3);String s3 = s1.toString();String s4 = new StringBuffer(s1).toString();明确一下几点会对做这道题有帮助:①String类是不可变的。②jvm对String类做了优化,凡是equals相同的String对象,都

2017-07-06 09:44:50 3869 2

原创 数组定义的三种方式

//数组定义的三种方式      //第一种      int []a = newint[5];//    a[0] = 10;            //第二种      int []c = newint[]{1,2,3};      //第三种      int []i ={1,2,3,4};      //错误的写法  

2017-06-26 09:24:02 50729

原创 判断是否是质数

判断一个数是否是质数:publicclass IsZhiShu {   publicstaticvoid main(String[]args) {      judge(1);   }    publicstaticvoid judge(inta){      intcount = 0;      for(inti =1;ia;i++){        if

2017-06-26 09:21:55 563

转载 25岁就死了,75才埋,程序员们的中年危机:有点懵

25岁就死了,75才埋,程序员们的中年危机:有点懵转载自:http://www.techug.com/post/coders-midlife-crisis.html科技公司裁撤中年技术员工的传闻,每隔一段时间就会在网上弥漫、发酵。程序员们有点懵。十年前,当他们踏着高考重点录取线,走进大学计算机院系的时候,想象的而立生活一定不是这样的。于南发现,最近连老家的中学同

2017-06-21 20:18:53 2290 2

原创 Enumation和Iterator的区别

在之前的集合中我们使用了两种不同的迭代器分别对不同的结合进行了遍历,分别是Enumation迭代器和Iterator迭代器。二者有什么区别呢?首先二者都是java.util工具包下的接口,二者的代码如下:Enumeration: public interface Enumeration {   booleanhasMoreElements

2017-06-07 12:19:14 1121

转载 Hashtable和HashMap分析

转载自:http://www.cnblogs.com/xinzhao/p/5644175.html特别喜欢签名的那句话: As a programmer, I hate to use things I don't understand.作为一个编程者,我希望对使用的东西知根知底。HashMap和HashTable有什么不同?在面试和被面试的过程中,我问过也被问过这个问题,也见过

2017-06-07 10:43:30 316

原创 局部内部类访问局部变量

为什么局部内部类对象访问局部变量时要加final关键字?说到底是因为生命周期的不同。局部内部类需要GC调用才能回收,而局部变量在对应的栈帧出栈即被抛弃。因此有可能还存在的局部内部类对象去访问一个根本已经不存在的局部变量,这是不被允许的情况。因此,无奈之下,只能加上final关键字来修饰局部内部类对象调用的局部变量。在1.8版本的jdk中不需要添加fianl关键字了,但是只是假象

2017-06-07 10:30:34 669

原创 ThreadLocal线程本地变量

package cn.liz.threaddemo;// ThreadLocal 与 绑定 解决同一个线程内的数据共享问题// 将数据拷贝一份到线程中 ,因此 线程 之间的数据互不影响 public class ThreadLocalTest { private static ThreadLocal local = new ThreadLocal(); public s

2017-06-02 23:38:17 264

原创 单例模式--锁优化

package cn.liz.threaddemo;public class Single { private Single(){ } private static Single single; // 如果不加锁 ,那么 结果得到的对象不是用一个 public static /*synchronized */Single getInstance1(long time) thr

2017-06-02 23:12:58 738

原创 线程--死锁

当我们为了线程安全而加锁的时候,可能一不注意就造成了死锁。比如下面这样:package cn.liz.threaddemo;public class ThreadDeadlock{ public static void main(String[] args) { Object obj1 = new Object(); Object obj2 = new Objec

2017-06-02 22:49:22 231

原创 什么是线程

// 线程总结:/** 三种创建方式:* 什么是线程 : 程序的多个执行路径 ,改变了程序顺序执行的特点,可以多条线共同执行,实际是模拟的并行* 那么既然是并发,就存在线程安全问题,即同时访问同一份数据* 因此就要保证要访问的数据的安全性* 涉及到 锁!!!* synchronized * 同步块 (引用类型|.class类|) | 同步方法 加在方法上* 注意

2017-06-02 22:39:09 252

原创 单例模式--静态内部类

静态内部类是一个很好的实现单例的方式:看代码:package cn.liz.syn;public class StaticInner { // 私有化 构造器 private StaticInner(){ } // 私有的静态内部类 private static class Inner{ static StaticInner single = new St

2017-06-02 20:17:20 340

原创 懒汉式

懒汉式:不在类加载的时候创建对象,什么时候调用获取对象的方法,什么时候再返回该类的对象。节省空间。为了防止多线程下创建该类的多个对象,要加锁。我们采用的是双重检测锁:package cn.liz.syn;public class FullSingleTon { //私有化构造器 private FullSingleTon(){ } // 类初始化的时候不创建该类的

2017-06-02 20:08:54 440

原创 单例模式--饿汉式

单例模式就是保证在程序中只有一个该类的对象:饿汉式:类加载的时候就创建。代码体现:package cn.liz.syn;public class SingleTonPattern { // 私有 构造器 禁止外部实例化对象 private SingleTonPattern(){ } // 静态的私有对象 private static SingleTonPattern si

2017-06-02 19:57:45 809

原创 线程的小问题

看一个问题,匿名内部类和重写的问题:public class Test01 { public static void main(String[] args) { new Thread(new Runnable() { @Override public void run() { System.out.println("传入的实现Runnable接口的类");

2017-06-02 19:44:18 204

原创 线程的三种创建方式

public class Web12306 { public static void main(String[] args) throws InterruptedException, ExecutionException { // 方式 1 继承Thread类,重写run方法 ThreadTest01 test01 = new ThreadTest01(); test01.

2017-06-02 17:19:31 256

原创 java集合继承关系图

面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。数组虽然也可以存储对象,但长度是固定的;集合长度是可变的,因为内部实现了自动扩容;数组中可以存储基本数据类型,集合只能存储对象。集合如果再存放对象的时候存放的是基本类型,那么会发生自动装箱,以对应的基本类型的包装类存入集合中。集合可以存储不同类型的对象,但是我们使用集合的

2017-06-02 10:22:39 931

原创 Vector与Stack容器

LinkedList 底层是链表Vector底层也是数组,和ArrayList一样,不同的是Vector是线程安全的,Vector有自己独特的遍历方式。Vector vector = new Vector(); vector.add("周杰伦"); vector.add("周杰"); vector.add("周亚伦");// 和迭代器遍历相似 Enumeration接口 E

2017-06-02 09:59:02 346

原创 TreeSet排序规则

TreeSet在存放对象元素的时候就会排序。因此在存放完之后,对结合中的元素进行修改,那么修改也不会影响原先的排序。如果存放进去的对象没有实现 Comparable接口就会抛出异常。直接上代码:public class MusicBoxTest02 { public static void main(String[] args) { MusicBox box1 = new Musi

2017-06-01 20:47:10 926

原创 HashSet的去重问题

HashSet的去重问题:我们知道HashSet在存放对象的时候会判断对象时候是同一对象。默认引用类型比较的是地址值,如果地址值相同,那么这是一模一样的对象,那么判断肯定是同一对象,就不再重复的往里放。如果对象重写了hashcode和equals方法,就比较这二者是否相等。如果hashcode相等,那么比较equals方法,如果equals再相等,那么证明这是同一个对象;如果equals

2017-06-01 20:37:30 7317

原创 集合的遍历方式

Set集合的遍历方式:Set集合无序,不可重复。import java.util.HashSet;import java.util.Iterator;import java.util.Set;public class HashSetTest { public static void main(String[] args) { Set set = new HashSet(

2017-06-01 19:42:14 190

原创 Properties类

Properties  :继承自Hashtable要求键和值都必须是字符串,都不能为空Properties一般用于读取配置文件,如.properties结尾的配置文件。配置文件如:注意:配置文件中间不要用空格。例如:username    =    lss步骤如下:Properties pro =new Properties();Pro.load(“路径

2017-06-01 19:37:48 367

原创 hashcode和equals重写规则

HashSet  HashSet底层是HashMap实现的。因此HashSet无序不可重复,也就意味着存放到HashSet中的对象元素是经过排序比较的。如何比较呢?1.HashMap底层是根据hashcode和equals来存放对象的。2.我们知道Object父类中的hashcode方法默认返回的是对象的地址值,因此如果不重写hashcode,那么默认比较的是存放到集合中的对象

2017-06-01 16:01:21 2575

原创 阶乘之和

package cn.liz.test01;public class Demo02 { public static void main(String[] args) { // 调用第一种方式求阶乘  getJie(); int sum = 0; for(int i =1;i<=10;i++){ sum+=ge

2017-06-01 14:57:11 253

原创 编程思考

为什么计算机采用补码?String s = new String("ss");到底创建了几个对象?

2017-03-13 17:17:18 236

原创 单元测试之Junit测试框架

看完这篇文章,不要再说自己不会单元测试了 ! ! !Junit是什么!?单元测试框架!(Java+Unit)你真的没有用过吗?与之类似的TestNG,同样是一个单元测试框架,你可能也经常会用到。单元测试是什么?通常来讲,单元测试也叫白盒测试,与黑盒测试不同,白盒测试需要看代码。单元测试的内容是测试一个类内部的方法是否正确,返回值是否与预期值一致,如果返回值与预期值不符,那么使用Juni

2017-01-05 16:30:02 641

原创 段地址与物理地址

上节提到了段地址的概念,实质上,内存并没有分段,而是从CPU的角度把内存按段来看待和操作。段地址的值x16就是物理地址的初始地址·,偏移地址代表段中的内存单元。将若干地址连续的内存单元看做一个段,用段地址x16定位段的起始地址,用偏移地址定位段中的内存单元。有两点需要注意:1.段的起始地址一定是16的倍数,这是肯定的。2.偏移地址位16位,16位的寻址能力是64KB,所

2017-01-03 18:00:09 2264

原创 内存物理地址

CPU访问内存时要给出内存单元的地址(内存地址),每个内存单元都有一个唯一的地址,称之为物理地址。首先给出一个公式:物理地址=段地址x16+偏移地址物理地址指的是cpu访问内存数据的内存地址,段地址指的是8086cpu的16位的地址总线,偏移地址也指的是16位的地址总线。什么是段地址?首先我们知道8086cpu有20位的地址总线,而8086机是16位机,也即字长是16位

2017-01-03 17:02:10 3026

原创 寄存器

寄存器分类:CPU由运算器、控制器、寄存器和时钟构成。在CPU中:运算器进行信息处理寄存器存放指令和数据控制器控制各种器件工作时钟决定CPU的处理速度寄存器是CPU中程序员可以用指令进行读写的部件,可以通过改变寄存器中的内容来控制CPU。不同的CPU,寄存器的格式和结构都是不同的。8086CPU有14个寄存器,这些寄存器是:AX,BX,CX,DX,SI,DI,SP,

2017-01-03 16:37:56 790

原创 指针与引用

上文我们讲了内存与内存地址。对CPU来说,系统中的所有存储器中的存储单元都以内存地址的形式分配到逻辑存储器中,它的容量受地址总线的宽度限制,这个逻辑存储器就是我们说的内存地址。也可以说是C语言的指针。java中没有指针,是因为指针指向内存的地址空间,会造成内存泄漏,因此java中禁止了直接对内存进行操作的指针。java语言中的引用则说的是JVM堆中的对象数据的引用,它指向堆中的对象

2017-01-03 15:22:28 548

原创 内存与内存地址

上节讲到cpu如何通过总线与存储器交互,存储器由那些部分构成呢?      cpu直接与内存进行交互。内存是计算机中的重要部件,与之对应的是外存。      "内存(Memory)也被称为内存储器,其作用是用于暂时存放CPU中的运算数据,以及与硬盘等外部存储器交换的数据。只要计算机在运行中,CPU就会把需要运算的数据调到内存中进行运算,当运算完成后CPU再将结果传送出来,内存的运行也决定了

2017-01-03 14:38:57 726

原创 地址总线、数据总线、控制总线

地址总线:决定内存数据操作的地址CPU通过地址总线来指定存储器单元。地址总线上能传送多少个不同的信息,cpu就能对多少个内存单元进行寻址、公式如下:寻址大小m=2的N次幂,N是地址总线的个数上图展示的是具有9根地址线的cpu向内存中发送数据的信息,信息不完整,假如传送的数据是100,数据总线的二进制信息应该是什么?(涉及到十进制与二进制的转换与表示)数据总线:决定传输的数据

2017-01-03 13:40:28 13952 2

原创 CPU与存储器

上文说到计算机的组成。计算机诞生初期的功能就是代替人工进行大数据量的运算。人们善于思考,但是不善于复杂重复的计算,因而这些任务就都交给计算机来做。如果一开始就做高级编程语言的开发工作,而对计算机底层的知识了解甚少,那么很容易产生知识盲点,而且当知识进步,编程语言变化的时候,会产生"技术变化的太快,跟不上脚步"的感觉,因此从从业生涯的角度来说,学习计算机基本知识是十分有必要的。了解计算机

2017-01-03 12:47:11 4828 1

原创 微机组成

在高级编程语言当道的今天,一般只需要了解一款IDE,顺便熟悉下一门语言的语法和API即可上手编程,计算机的底层和硬件变得越来越透明,越来越"冷门"。仅仅是学习一门语言的语法,知道如何去掉用写好的方法,知道如何去实现接口,继承抽象类,如何去让程序跑起来,看似这些已经够用了,但是当业务变得复杂,代码的运行效率越来越慢,这个时候如果能知道计算机的底层知识,知道程序是如何跑起来的,程序在计算机的底层是

2017-01-03 11:03:56 395

转载 Log4j使用与配置(真心详细~)

转载自:http://www.cnblogs.com/alipayhutu/archive/2012/06/21/2558249.htmleclipse, Log4j配置(真心的详细~)【1】从零开始 a). 新建Java Project>>新建package>>新建java类;b). import jar包(一个就够),这里我用的是log4j-1.2.14.jar,

2016-12-23 11:40:15 390

转载 for、foreach、Iterator(二)

转载自:http://blog.sina.com.cn/s/blog_c38cdb710101f3xz.htmlfor:大家初学编程最先接触到的循环,最熟悉不过。他有很多优点也有缺陷,   例如:需要知道集合或数组的大小,而且需要是有序的,不然无法遍历;interator:是一个接口类型,他不关心集合或者数组的类型,而且他还能随时修改和删除集合的元素foreach:iter

2016-12-15 17:48:47 568

原创 for、foreach、Iterator迭代效率

public class TestFor {public static void main(String [] args){String ss = "aa";List list = new ArrayList();for (int i=0; ilist.add(i);} int size = list.size();//普通的forLong l1

2016-12-15 17:14:29 798

转载 eclipse之API提示

转载自:http://blog.csdn.net/xuqingfeng77/article/details/7847352由于重新配置了环境,并且eclipse也是装的4.2的,今天用的时候发现了,居然没有自动提示功能,也就是当一个对象居然点不出他的相关方法。后来网上搜索了下,成功的 办法是。1、我window->Preferences->Java->Editor->con

2016-12-15 11:07:29 698

转载 【转】非计算机专业的福音-Windows快捷组合

非计算机专业的福音!!!------------------------------------------------------------一、常见用法:F1           显示当前程序或者windows的帮助内容。F2           当你选中一个文件的话,这意味着“重命名”F3           当你在桌面上的时候是打开“查找:所有文件” 对话框 F

2016-12-14 14:42:27 697

转载 【转】jdk环境变量配置问题最终篇

之前的博客里也讲过java jdk配置过程中出现的错误及解决办法,把这篇博客里的问题也是这两天一直困扰我的环境配置问题发出来,算是终章了。至少涵盖了大部分的环境配置中的难题。这篇文章中的解决办法是从 http://blog.csdn.net/shichg/article/details/38312505 这里找到的答案。感谢博主。-----------------------分割线--

2016-12-14 12:59:49 711

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除