软件测试


网站首页 | 软件测试论坛 | 软件测试培训 | 软件测试博客 | 软件测试杂志 | 软件测试沙龙 | 软件测试下载 | 软件测试顾问
业界新闻 | 软件测试人才 | 软件测试技术 | 软件测试工具 | 行业软件测试 | 软件测试管理 | 软件质量专栏 | 软件开发专栏
当前位置:首页>>软件开发专栏>>java>>正文
java基础知识问答—java入门与加深二 (2)
文章出处:赛迪论坛 作者:E剑 发布时间:2006-01-25

 45 我想将一个父类对象转换成一个子类对象该怎么做?  

  答:强制类型转换。如

  public void meth(A a)

  {

  B b = (B)a;

  }

  如果a实际上并不是B的实例,会抛出ClassCastException。所以请确保a确实是B的实例。  

  46 其实我不确定a是不是B的实例,能不能分情况处理?  

  答:可以使用instanceof操作符。例如  

  if( a instanceof B )

  {

  B b = (B)a;

  }

  else

  {

  ...  

  }  

  47 我在方法里修改了一个对象的值,但是退出方法后我发现这个对象的值没变!  

  答:很可能你把传入参数重赋了一个新对象,例如下列代码就会造成这种错误:  

  public void fun1(A a) //a是局部参数,指向了一个外在对象。  {

  a = new A(); //a指向了一个新对象,和外在对象脱钩了。如果你要让a作为传出变量,不要写这一句。  

  a.setAttr(attr);//修改了新对象的值,外在对象没有被修改。

  }  

  基本类型也会出现这种情况。例如:  

  public void fun2(int a)

  {

  a = 10;//只作用于本方法,外面的变量不会变化。

  }  

  六、java.util篇  

  48 java能动态分配数组吗?  

  答:可以。例如int n = 3; Language[] myLanguages = new Language[n];  

  49 我怎么知道数组的长度?  

  答:用length属性。如上例中的 myLanguages.length 就为 3。  

  50 我还想让数组的长度能自动改变,能够增加/删除元素。  

  答:用顺序表--java.util.List接口。  

  你可以选择用ArrayList或是LinkedList,前者是数组实现,后者是链表实现。  

  例如: List list = new ArrayList(); 或是 List list = new LinkedList(); 。  

  51 什么是链表?为什么要有两种实现?  

  答:请补习数据结构。  

  52 我想用队列/栈。  

  答:用java.util.LinkedList。

  53 我希望不要有重复的元素。  

  答:用集合--java.util.Set接口。例如:Set set = new HashSet()。  

  54 我想遍历集合/Map。  

  答:用java.util.Iterator。参见API。  

  55 我还要能够排序。  

  答:用java.util.TreeSet。例如:Set set = new TreeSet()。放进去的元素会自动排序。  

  你需要为元素实现Comparable接口,还可能需要提供equals()方法,compareTo()方法,hash Code()方法。  

  56 但是我想给数组排序。  

  答:java.util.Arrays类包含了sort等实用方法。  

  57 我想按不同方法排序。  

  答:为每种方法定义一个实现了接口Comparator的类并和Arrays综合运用。  

  58 Map有什么用?  

  答:存储key-value的关键字-值对,你可以通过关键字来快速存取相应的值。  

  59 set方法没问题,但是get方法返回的是Object。  

  答:强制类型转换成你需要的类型。参见45。  

  60 我要获得一个随机数。  

  答:使用java.util.Random类。  

  61 我比较两个String总是false,但是它们明明都是"abc" !  

  答:比较String一定要使用equals或equalsIgnoreCase方法,不要使用 == !  

  ==比较的是两个引用(变量)是否指向了同一个对象,而不是比较其内容。


站内搜索
相关文章
◎java基础知识问答—java入门与加深二 (1)
◎MVC设计模式
◎Struts行为测试框架StrutsTestCase实战
◎Java学习之路:不走弯路,就是捷径
◎JRockit JVM 中的内存泄漏检测
◎基于JDK5.0的一些Thread总结
◎消除内存泄漏
◎POJO应用架构:Spring与EJB 3.0的对比
◎构建高性能J2EE应用的10个技巧
◎有可能挑战Java开发优势的四种技术
◎六种异常处理的陋习
◎多处理器平台上J2EE应用的内存争用
◎MVC模式在j2me项目中的应用(二)
◎MVC模式在j2me项目中的应用(一)
◎J2ME程序开发新手入门九大要点
◎精通J2ME中的Hello World
◎浅析Java多线程程序设计机制
◎J2EE架构学习者的6个最佳实践
◎Tomcat在Windows 2000下的安装配制
◎KJava在移动设备中的应用
◎Java-IDE环境
◎理解Java应用服务器的七种武器
◎Java嵌入式开发之二
◎Java嵌入式开发之一
◎Java学习从入门到精通
◎凤凰浴火JBuilder2006新功能赏析
◎UML技术在基于Web的应用系统中的应用
◎Oracle9i 数据库控制文件
◎J2EE Server下的第一个EJB程序
◎Java CORBA入门
◎CORBA 入门
◎Struts 框架
◎Struts标记库
◎ejb入门
◎Java语言编码规范
◎J2EE从零开始之J2EE平台简介
◎J2EE从零开始之测试平台安装
◎J2EE从零开始之准备工作
◎J2EE从零开始之EJB开发过程
◎J2EE从零开始之企业Beans(EJB)简介
◎J2EE从零开始之EJB(1)
◎J2EE从零开始之EJB(2)
◎J2EE从零开始之实体EJB
热门文章
◎Java学习从入门到精通
◎Windows下JAVA环境变量的设置祥解
◎Struts标记库
◎Struts 框架
◎Java学习之路:不走弯路,就是捷径
◎JAVA基础测试中异常问题汇总
◎凤凰浴火JBuilder2006新功能赏析
◎hibernate应用配置说明-middlegen和hbm2java的配置
◎java经典网址
◎J2EE从零开始之J2EE平台简介
◎MVC设计模式
◎将数据库操作封装到Javabean
◎J2EE从零开始之EJB(1)
◎ejb入门
◎Java常见问题集锦
◎J2EE从零开始之EJB开发过程
◎Java语言编码规范
◎消除内存泄漏
◎Hibernate如何配置操作多个数据库
◎J2EE从零开始之EJB(2)
◎java基础知识问答—java入门与加深二 (1)
◎J2EE从零开始之测试平台安装
◎以小博大Java性能优化技巧集锦
◎java经典问题:传值还是传引用
◎Oracle9i 数据库控制文件
◎J2EE从零开始之实体EJB
◎Struts行为测试框架StrutsTestCase实战
◎用Java实现磁盘文件以大对象二进制文件形式存储到Oracle数据库
◎J2EE从零开始之准备工作
◎Tomcat在Windows 2000下的安装配制
◎J2EE从零开始之企业Beans(EJB)简介
◎Java CORBA入门
◎J2EE Server下的第一个EJB程序
◎六种异常处理的陋习
◎应用Java技术实现数据库应用系统
◎JRockit JVM 中的内存泄漏检测
◎J2EE架构学习者的6个最佳实践
◎UML技术在基于Web的应用系统中的应用
◎Java平台上的CRM系统
◎Java-IDE环境
◎POJO应用架构:Spring与EJB 3.0的对比
◎有可能挑战Java开发优势的四种技术
◎J2ME程序开发新手入门九大要点
◎CORBA 入门
◎Java嵌入式开发之一
◎KJava在移动设备中的应用
◎理解Java应用服务器的七种武器
◎构建高性能J2EE应用的10个技巧
◎基于JDK5.0的一些Thread总结
◎MVC模式在j2me项目中的应用(一)

Google提供的广告