Java基础——java的引用问题
1.
public class EasyError1 {
class Student {
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
public List<Student> getList(List<String> names){
List<Student> studentList=new ArrayList<Student>();
Student student=new Student();
for(String str:names){
student.setName(str);
studentList.add(student);
}
return studentList;
}
public static void main(String[] args) {
EasyError1 easyError1=new EasyError1();
List<String> list=new ArrayList<String>();
list.add("pitt");
list.add("tom");
list.add("weiling");
List<Student> studentList= easyError1.getList(list);
for(Student student:studentList){
System.out.println(student.getName());
}
}
}
/******************************************************
* the results in console:
* weiling
* weiling
* weiling
*因为Student student=new Student();写在了循环的外面,在循环里每次都把名字放在了一块堆内存里,并把引用
*存放在了list中,只是一个引用,而不是三个不同的引用存放在list中,最后,这个引用只想向了“
相关文档:
1. 变量不做初始化。
2. 分配的对象不做销毁。一个好的习惯就是,每生成一个类时,就自动写一个自己的InitInstanceMember,和 ReleaseInstanceMember()方法。
3. 包的分类,如果自己不做source的逻辑分类,C++环境一般是不会自己做的。这个跟Java中的package和文件物理上存储方式一致是不一样的。
C++ ......
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
package mypakage;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; ......
1.Proxy
模式
代理模式支持将某些操作从实际的对象中分离出来,通过它的代理类提供处理。这样便于修改和管理这些特定的操作。
下面示例一个代理模式的实现。
<<interface>>Subject.java
package
com.zj.proxy;
public
interface
Subject {
void
operation1();
......
设计模式
一个程序员对设计模式的理解:
“不懂”为什么要把很简单的东西搞得那么复杂。后来随着软件开发经验的增加才开始明白我所看到的“复杂”恰恰就是设计模式的精髓所在,我所理解的“简单”就是一把钥匙开一把锁的模式,目的仅仅是着眼于解决现在的问题,而设计模式的“复杂&rdq ......
一、国际化和 Java 编程语言
和大多数使用其它语言的程序员不同,Java
程序员是大量构建在 JDK 中提供 I18N 支持的标准代码的受益者。大部分代码最初来自 IBM 的 Taligent 子公司(自从合并进
IBM 以后),代表了许多人年的工作成果,比大多数公司独自在其产品中提供的代码要切实可行得多。
这些
代码 ......