文章列表
百度版:
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索
- 2015-07-02 12:58
- 浏览 495
- 评论(0)
在说之前先普及一下线程是什么?
线程:说白了就是一个任务片段
进程:是一个具有独立功能的程序关于某个数据集合的一次运行活动,一个进程有一个或者多个线程
线程与进程的本质区别就是有么有数据共享空间,线程之间可以共享数据,进程不可以
下面进入主题:线程间的同步
由于现在业务流程增加,业务节点也增加,使用业务的人员也同时增加,这个时候就不可避免的出现并发问题,多个线程同时访问操作某一个数据单元
我们以银行转账为例说明,下面先上代码:
建立一个银行的类,里面主要包括三个方法,一个是转账,一个是得到现有银行存款总数,一个是得到现在存户数量
public class Bank {
...
- 2015-07-02 08:54
- 浏览 382
- 评论(0)
今天我们来看一下arraylist的存储开销,因为在项目当中,我尝试了一个非常大的arraylist,然后内存爆了
所以我看了下源码,原来arraylist的存储开销是比较大的,先上代码
import java.util.ArrayList;
public class Test {
public static void ma ...
- 2015-06-29 17:10
- 浏览 465
- 评论(0)
今天说说集合的iterator迭代器与集合下标的使用
先上代码
import java.util.ArrayList;
import java.util.Iterator;
public class Test {
public Test() {
// 初始化List
addItemToList();
}
private ArrayList<String> list = new ArrayList<String>();
private void addItemToList() {
for (int i = 0; i < 5; i ...
- 2015-06-19 11:59
- 浏览 1108
- 评论(0)
为什么需要使用泛型?
1.代码复用
2.保证类型安全
3.编程的便利
第一部分,先说说代码复用
1)建立一个Animal的父类
package com.ray.test;
public class Animal {
private String name="Animal";
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
2)建立连个Animal的子类Cat和Dog
p ...
- 2015-06-03 11:34
- 浏览 318
- 评论(0)
这里面涉及到两个类,一个是person类,一个是测试类test
首先我们说到的是浅克隆,对某个对象实施Clone时对其是一无所知的,它仅仅是简单地执行域对域的copy,如果是基本数据类型(int,float,char等)到没什么问题,基本遇上如string,Integer等不可变对象的时候也没有什么问题,但是如果遇上了date这个可变对象,或者是自己定义的可变对象,他只是简单的复制一下引用这些可变对象,而不是把这些可变对象再一次的复制
先上person类,这里面虽然是实现Cloneable接口,但是里面没有重写方法,只是super了一下就算了
package com.ray ...
- 2015-05-07 09:31
- 浏览 326
- 评论(0)
其实,java在自动装箱和自动拆箱的过程里面,留了不少的坑给我们,我们下面将以integer这个类为基础讨论一下
其实这里面主要涉及的是两点
1.当使用Integer x=1,这样的方式来赋值的时候,其实,编译器当那个1是String,然后需要通过valueof的方法转换过来,但是在转换的过程中,他为了优化速度,使用了我们所不知道的缓存,因为在这里会出现一些坑
2.Integer类里面重写了equals方法,里面不但对比对象,而且还对比里面的值
下面先上代码:(请仔细观看注释,里面已经提供了上面所述两个方法的源码)
package com.ray.object;
/**
* ...
- 2015-05-05 08:40
- 浏览 425
- 评论(0)
泛型数组列表,主要是为了解决运行时动态更改数组的问题
平常我们会定义一个部门里面的人员的一个数组,
但是在实际业务当中,这个数组的大小往往是不确定的,
如果定义过大,那么会浪费空间,定义过小,又不够用,
因为为了解决运行时动态更改数组的问题,我们提出下面的解决方案。
package com.ray.object;
import java.util.ArrayList;
/**
* 泛型数组列表 ,解决运行时动态更改数组的问题
*
* @author ray
* @since 2015-05-04
* @version 1.0
*
*/
public cla ...
- 2015-05-04 08:49
- 浏览 391
- 评论(0)
equils方法的特性:
1.自反性,对于任何非空引用x,x.equals(x)返回true
2.对称性,对于任何引用x,y,x.equals(y)返回true,那么y.equals(x)返回true
3.传递性,对于任何应用x,y,z,如果x.equals(y)回返true,以及x.equals(z)回返true,则y.equals(z)回 ...
- 2015-05-03 09:25
- 浏览 330
- 评论(0)
抽象类:具有抽象方法的类,需要使用abstract关键字修饰
关系图
下面上代码
package com.ray.testobject;
/**
* 抽象类
*
* @author ray
* @since 2015-05-02
* @version 1.0
*
*/
public abstract class Person {
public abstract void getDescription();
}
package com.ray.testobject;
/**
* 实现类
*
* ...
- 2015-05-02 21:04
- 浏览 391
- 评论(0)
java-final关键字在属性域的使用
package com.ray.testobject;
/**
* final在属性域的使用
*
* @author ray
* @since 2015-05-01
*
*/
public class Person {
private final String name = "ray";
public String getName() {
return name;
}
// private void set(String name) {
//这一句报错
// this.name=name;
/ ...
- 2015-05-01 21:13
- 浏览 388
- 评论(0)
先上代码
package com.ray.testobject;
/**
* 调用方法的过程
*
* @author ray
* @since 2015-05-01
*
*/
public class Person {
public void say() {
System.out.println("i am a person");
}
public void say(int age) {
System.out.println("i am " + age);
}
public void say(String n ...
- 2015-05-01 08:08
- 浏览 431
- 评论(0)
先贴上代码
<pre name="code" class="java">package com.ray.object;
/**
* 父类引用子类对象
*
* @author ray
* @since 2015-04-30
* @version 1.0
*
*/
public class Test {
class Person {
public void say() {
System.out.println("i am a person");
}
}
class Man ...
- 2015-04-30 10:08
- 浏览 480
- 评论(0)
在下面的代码中,展示的是静态导入的一些方便与不便
如Math类这种更方面辨认的、Calendar类这种需要写很多东西的类,可以使用静态导入,从而降低读的门槛
但是对于print这个方法,基本上是不会有人这么干的了
package com.ray.object;
import static java.lang.Math.pow;
import static java.util.Calendar.DAY_OF_MONTH;
import static java.lang.System.out;
/**
* 静态导入
*
* @author ray
* @since 201 ...
- 2015-04-29 10:23
- 浏览 288
- 评论(0)
package com.ray.object;
/**
* 不用main方法,也可以打印Hello World!
*
* @author ray
* @since 2015-04-29
* @version 1.0
*
*/
public class Person {
static {
System.out.println("Hello World!");
System.exit(0);
}
// 由于使用ide,有main方法执行更方便
public static void main(String[] args) {
}
}
...
- 2015-04-29 10:00
- 浏览 652
- 评论(0)