文章列表
我们来说一下复用类最简单的方法:聚合(aggregation)
其实说白了,就是建立了一个类,然后在其他地方引用来使用。
package com.ray.ch05;
public class Test {
public static void main(String[] args) {
}
}
package com.ray.ch05;
public class Test2{
public static void main(String[] args) {
new Test();
}
}
建立了Test这个类,我们可以在程序的任何地方new出来,就好像在Test2里面new ...
- 2015-10-29 16:45
- 浏览 1089
- 评论(0)
这一章节我们来讨论一下public 、private和protected
1.CLASS_PATH
环境变量里面的CLASS_PATH,这个路径就是我们java寻找文件的路径。
注意:一般在CLASS_PATH里面都会加上"."代表当前文件夹,如果不加上这个符号,那么,你编辑的java很有可能不能编译,因为在CLASS_PATH里面特定的几个文件夹里面很可能找不到你的源文件。
2.public
对于所有成员公开
package com.ray.ch05;
public class Test {
private int id;
private void say() ...
- 2015-10-29 15:49
- 浏览 310
- 评论(0)
今天的话题是在清理对象的时候是使用=null还是gc,我们下面做出比较。
1.写这篇文章的缘由
之前我写了一篇文章是对象的清理(点击跳转),有一位网友给了另外一种方法,因此我特意使用visual vm来测试一下看看。
2.使用检测工具 visual vm
下载地址:https://java.net/projects/visualvm/downloads/download/release138/visualvm_138.zip
使用参考文章:
使用 VisualVM 进行性能分析及调优
3.测试用例
下面是使用gc来清理:
package com.ray.ch05;
public cl ...
- 2015-10-28 15:30
- 浏览 1278
- 评论(0)
这一章节我们来讨论一下包(package)。
1.包里面是一组类,主要是提供一个命名空间,使得各个类以及功能不会冲突。
建立一个项目,然后建立两个包,里面都包含Test这一个类,功能一模一样。
package com.ray.ch04;
public class Test {
private int id = 0;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
package com.ray.ch05;
public class Test {
pr ...
- 2015-10-28 11:19
- 浏览 442
- 评论(0)
这一章节我们来聊一下为什么需要访问权限?
1.因为它解决了一个问题:把不变的和经常改变的分开来
package com.ray.ch05;
public class Test {
private int id = 0;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
}
从代码上面我们可以看见,id这个属性域经常会根据操作不停的变化,而方法get和set基本都是固定下来的了,因此id是private,而get、set方法是public
2.解决前后端程序员之间 ...
- 2015-10-28 10:41
- 浏览 359
- 评论(0)
这一章节我们来简单聊一下枚举类型。
1.枚举类型是一种数据类型
package com.ray.ch04;
public class Test {
public static void main(String[] args) {
MyType myType = MyType.ONE;
System.out.println(myType instanceof Object);
}
}
enum MyType {
ONE, TWO, THREE
}
输出: ...
- 2015-10-28 10:18
- 浏览 292
- 评论(0)
接着上一节,我们这一章节来聊一下数组的另外一个应用:可变参数列表
1.可变参数列表带来的改变
在没有出现可变参数列表的时候,我们一般会使用数组来替代,但是有一个问题,每一次都需要先建立一个数组作为参数,不能动态的形成数组作为参数。
package com.ray.ch04;
public class Test {
public static void printArray(Object[] objects) {
for (int i = 0; i < objects.length; i++) {
System.out.println(objects[i]);
}
}
...
- 2015-10-28 09:46
- 浏览 473
- 评论(0)
这一章节我们来讨论一下数组的初始化。
1.数组是一个对象。
package com.ray.ch01;
public class Test {
public static void main(String[] args) {
int[] a = {};
System.out.println(a instanceof Object);
}
}
输出:true
2.把数组赋值给变量,其实是把数组的引用赋值给变量。
package com.ray.ch04;
import java.util.Arrays;
public class Test {
public static ...
- 2015-10-28 08:28
- 浏览 345
- 评论(0)
接着上一章节。
(4)显性初始化静态域
通过静态代码块来初始化某些属性域。
package com.ray.testobject;
public class Test {
private static int id;
private static String name;
static {
id = 0;
name = "abc";
System.out.println("id:" + id);
System.out.println("name:" + name);
}
pu ...
- 2015-10-27 23:26
- 浏览 355
- 评论(0)
这一章节我们接着上一章节的内容。
(3)静态数据的初始化
a.静态数据只会执行一次
package com.ray.testobject;
public class Test {
private static Book book1 = new Book(1);
private static Book book2 = new Book(2);
public Test() {
System.out.println("create test");
book1.say();
book2.say();
Book book3 = new Bo ...
- 2015-10-27 23:07
- 浏览 390
- 评论(0)
这一章节我们来聊聊构造器的初始化。
(1)域的初始化在构造器初始化之前
package com.ray.testobject;
public class Test {
private int id;
public Test() {
System.out.println("id:"+id);
id = 2;
System.out.println("id:"+id);
}
public static void main(String[] args) {
new Test();
}
}
输出:
id ...
- 2015-10-27 22:35
- 浏览 267
- 评论(0)
这一章节我们来讨论一些this
1 this是在类的内部使用,它指向对象的引用。
package com.ray.ch01;
public class Test {
private Test getTest() {
return this;
}
public static void main(String[] args) {
}
}
上面代码里面的this就是返回Test这个类型的对象。
this还可以操作方法:
package com.ray.ch01;
public class Test {
private void say() {
System.out.p ...
- 2015-10-26 09:03
- 浏览 385
- 评论(0)
这一章节我们来讨论一些默认构造器与this的注意点。
1.默认构造器
当你不设置任何构造器的时候,系统默认会建立一个。
package com.ray.ch01;
public class Test {
}
上面的代码其实里面默认包含了一个无参的构造器,这个时候可以使用new Test()来创建对象。但是,如果自己定义了一些构造器,而且没使用无参构造器,那么就不可以使用new Test()来创建,因为这里系统默认是自己定义的,不再默认的添加。
package com.ray.ch01;
public class Test {
public Test(int i) {
}
pu ...
- 2015-10-26 09:00
- 浏览 239
- 评论(0)
这一章节我们来聊一下方法重载。
1.为什么需要方法重载?
因为在java里面规定,构造器只有一个,那么,如果我需要多种方式来创建对象,那么怎么做?这个时候就需要方法重载,因为构造器全名叫做构造器函数,他是一个特殊的方法,因此,我们可以对他使用方法重载,而且方法重载对于所有方法都是一样的。
例子:
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
}
}
class TestClass {
public TestClass() {
}
public T ...
- 2015-10-25 23:21
- 浏览 452
- 评论(0)
这一章节我们来聊聊创建与初始化对象。
这个需要讨论的问题源自于c语言,在c语言中,很大部分的错误是忘记了初始化某些东西,他把库的构建的使用需要完成两个操作-创建与初始化,但是在java里面,使用构造器来创建与初始化,他们是在一起的,因此避免了一部分忘记初始化的错误。
package com.ray.testobject;
public class Test {
public static void main(String[] args) {
TestClass t1=new TestClass();
TestClass t2=new TestClass();
}
}
class ...
- 2015-10-25 22:48
- 浏览 353
- 评论(0)