一直以来,都是用C,C++,C#开发程序,从事的也是编译器相关方面的研究与开发,最近在测试方面有些比较好的想法,想从实验的角度验证想法是否可行。但C系列里面没有相关的benchmark,只有Java有,所以转而学习Java。Java中的语法基本与C++一致,上手很容易,但是有些地方依然不太顺手,故而本文记录本人在开发Java程序过程中遇到的问题,作为笔记。

1 参数传递问题。在Java中,参数传递没有C++中默认的传值以及传引用等相关标记,在Java中,内置类型对象参数采用传值方式,而类对象参数这采用引用传递。注意:Java中的String是类,而非内置对象;

2 集合使用问题。在C++中,STL非常好用;在Java中,也有List<>, Map<>, Set<>,Queue<>等容器,在使用Map时必须注意,其中的关键字必须是类,而不允许是内置类型,容器中的类型对象必须继承于Object。

3 在Java中const是保留字,具体用法不解。如果需要定义常量,可以使用final关键字

4 List<String>的contains用法,由于比较时用的事 (o==null ? e==null : o.equals(e)),即不是比较地址,而是比较两个对象中的内容

5 泛型比C++中更灵活,一样的分为类泛型和函数泛型(摘自官方Java tutorial)。函数泛型如:

public final class Algorithm {public static <T>int findFirst(List<T> list, int begin, int end, UnaryPredicate<T> p) {for (; begin < end; ++begin)if (p.test(list.get(begin)))return begin;return -1;}
}

类泛型如:

View Code

 1 public class Pair<K, V> {
 2
 3     public Pair(K key, V value) {
 4         this.key = key;
 5         this.value = value;
 6     }
 7
 8     public K getKey(); { return key; }
 9     public V getValue(); { return value; }
10
11     public void setKey(K key)     { this.key = key; }
12     public void setValue(V value) { this.value = value; }
13
14     private K key;
15     private V value;
16 }

错误的例子1,原因:不能创建静态类型的泛型参数

View Code

 1 public class Singleton<T> {
 2
 3     public static T getInstance() {
 4         if (instance == null)
 5             instance = new Singleton<T>();
 6
 7         return instance;
 8     }
 9
10     private static T instance = null;
11 }

错误的例子2,原因:继承关系错误

View Code

1 class Shape { /* ... */ }
2 class Circle extends Shape { /* ... */ }
3 class Rectangle extends Shape { /* ... */ }
4
5 class Node<T> { /* ... */ }
6
7 Node<Circle> nc = new Node<>();
8 Node<Shape>  ns = nc;  // error

转载于:https://www.cnblogs.com/YukiJohnson/archive/2012/12/10/2802903.html

Java学习中的不解相关推荐

  1. java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)

    java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...

  2. java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常、finally关键字(java 学习中的小记录)

    java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常.finally关键字(java 学习中的小记录) 参考文章: (1)java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常. ...

  3. java学习中,instanceof 关键字 和 final 关键字、值的传递(java 学习中的小记录)...

    java学习中,instanceof 关键字 和 final 关键字.值的传递(java 学习中的小记录)作者:王可利(Star·星星) instanceof 关键字 作用: 1.用来判断某个对象是否 ...

  4. java学习中,DVD管理系统纯代码(java 学习中的小记录)

    java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{public static void main (String[] args ...

  5. Java学习中遇到的中文乱码问题的整理和解决方法

    目录 前言 1. 学习SpringMVC框架的时候遇到的中文乱码(一)  2. 学习SpringMVC框架的时候遇到的中文乱码(二)  3. 学习Servlet的时候可能会遇到的中文乱码(一)  4. ...

  6. JAVA学习中好网站

    http://www.54bk.com/ 我是博客 http://www.java-cn.com/ java中文网 http://java.sun.com/ sun官方网站 http://www.co ...

  7. java poll()是什么方法,JAVA学习中的一点小发现:LinkedList中.poll()方法在输出时使用应注意的小点...

    在学习JAVA类集一章中关于LinkedList子类中.poll()方法易错点的分析心得 例如如下代码: package Test; import java.util.LinkedList; publ ...

  8. Java学习中的数据库和数据库开发工具

    一.数据库 1.数据库,通常是一个戒一组文件,保存了一些符合特定规格的数据,数据库对应的英询单词是DataBase,简称DB:数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBase M ...

  9. java学习中常见比较模糊的部分

    "=="和"equals"的用法 在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型, ...

最新文章

  1. distanceTransform函数
  2. Linux学习笔记--文件夹结构
  3. c 语言绘图函数,c语言图形编程(三、绘图函数-)(C language graphics programming (three, drawing function -)).doc...
  4. python 判断列表为空_Python 判断列表为空
  5. 深度技术win11 32位稳定版系统v2021.08
  6. R语言分类算法之朴素贝叶斯分类(Naive Bayesian Classification)
  7. 关于Android工程师转vue的三两事儿(10)--原型与原型链
  8. 招聘笔试c语言题库,2014年腾讯校园招聘C语言笔试题含答案
  9. 计算机游戏动漫制作自我鉴定,关于游戏实习的自我鉴定
  10. 华为nova5iotg功能使用_华为nova5ipro支持otg功能吗
  11. 【Python从入门到精通】(二十八)五万六千字对Python基础知识做一个了结吧【值得收藏】
  12. 对numpy的数组取补集运算
  13. mysql报错You do not have the SUPER privilege and binary logging is enabled
  14. 【115@365】三国杀开源系列之六-入口文件解读
  15. WCDMA常见缩略语
  16. springboot的学习(1)
  17. C语言入门 | c语言基础知识
  18. contain 不区分大小写
  19. 11 个最佳免费安全网站
  20. 封头名义厚度如何圆整_关于几种形式封头特点的比较

热门文章

  1. 注册表修改大全(浏览文章时可以使用CTRL+F查找)
  2. Java----日期算法(计算两个date类型的时间差)
  3. mysql+5.6+左连接_第5章 索引与算法
  4. 5.15 vs2019 静态编译_xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持
  5. Android开发笔记(二)颜色的使用
  6. Redlock 算法:Redis 实现分布式锁(译)
  7. iOS 修改webView字体
  8. vue2.x-cnode(vue全家桶)
  9. Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)
  10. 45.国际化-选择使用资源文件