Java学习中的不解
一直以来,都是用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;} }
类泛型如:
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,原因:不能创建静态类型的泛型参数
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,原因:继承关系错误
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学习中的不解相关推荐
- java学习中,字符串使用(比较、构造方法)(java 学习中的小记录)
java学习中,字符串使用(比较.构造方法)(java 学习中的小记录)作者:王可利(Star·星星) String的使用 1.在内存中是如何保存字符串. == :比较的是地址(引用数据类型) equ ...
- java学习中,异常和错误的简介、捕获异常、抛出异常、自定义异常、finally关键字(java 学习中的小记录)
java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常.finally关键字(java 学习中的小记录) 参考文章: (1)java学习中,异常和错误的简介.捕获异常.抛出异常.自定义异常. ...
- java学习中,instanceof 关键字 和 final 关键字、值的传递(java 学习中的小记录)...
java学习中,instanceof 关键字 和 final 关键字.值的传递(java 学习中的小记录)作者:王可利(Star·星星) instanceof 关键字 作用: 1.用来判断某个对象是否 ...
- java学习中,DVD管理系统纯代码(java 学习中的小记录)
java学习中,DVD管理系统纯代码(java 学习中的小记录)作者:王可利(Star·星星) class DvdMain{public static void main (String[] args ...
- Java学习中遇到的中文乱码问题的整理和解决方法
目录 前言 1. 学习SpringMVC框架的时候遇到的中文乱码(一) 2. 学习SpringMVC框架的时候遇到的中文乱码(二) 3. 学习Servlet的时候可能会遇到的中文乱码(一) 4. ...
- JAVA学习中好网站
http://www.54bk.com/ 我是博客 http://www.java-cn.com/ java中文网 http://java.sun.com/ sun官方网站 http://www.co ...
- java poll()是什么方法,JAVA学习中的一点小发现:LinkedList中.poll()方法在输出时使用应注意的小点...
在学习JAVA类集一章中关于LinkedList子类中.poll()方法易错点的分析心得 例如如下代码: package Test; import java.util.LinkedList; publ ...
- Java学习中的数据库和数据库开发工具
一.数据库 1.数据库,通常是一个戒一组文件,保存了一些符合特定规格的数据,数据库对应的英询单词是DataBase,简称DB:数据库软件称为数据库管理系统,英文简称DBMS,全称为DataBase M ...
- java学习中常见比较模糊的部分
"=="和"equals"的用法 在Java中,boolean.byte.short.int.long.char.float.double这八种是基本数据类型, ...
最新文章
- distanceTransform函数
- Linux学习笔记--文件夹结构
- c 语言绘图函数,c语言图形编程(三、绘图函数-)(C language graphics programming (three, drawing function -)).doc...
- python 判断列表为空_Python 判断列表为空
- 深度技术win11 32位稳定版系统v2021.08
- R语言分类算法之朴素贝叶斯分类(Naive Bayesian Classification)
- 关于Android工程师转vue的三两事儿(10)--原型与原型链
- 招聘笔试c语言题库,2014年腾讯校园招聘C语言笔试题含答案
- 计算机游戏动漫制作自我鉴定,关于游戏实习的自我鉴定
- 华为nova5iotg功能使用_华为nova5ipro支持otg功能吗
- 【Python从入门到精通】(二十八)五万六千字对Python基础知识做一个了结吧【值得收藏】
- 对numpy的数组取补集运算
- mysql报错You do not have the SUPER privilege and binary logging is enabled
- 【115@365】三国杀开源系列之六-入口文件解读
- WCDMA常见缩略语
- springboot的学习(1)
- C语言入门 | c语言基础知识
- contain 不区分大小写
- 11 个最佳免费安全网站
- 封头名义厚度如何圆整_关于几种形式封头特点的比较
热门文章
- 注册表修改大全(浏览文章时可以使用CTRL+F查找)
- Java----日期算法(计算两个date类型的时间差)
- mysql+5.6+左连接_第5章 索引与算法
- 5.15 vs2019 静态编译_xmake v2.3.8 发布, 新增 Intel C++/Fortran 编译器支持
- Android开发笔记(二)颜色的使用
- Redlock 算法:Redis 实现分布式锁(译)
- iOS 修改webView字体
- vue2.x-cnode(vue全家桶)
- Android提升篇系列:Activity recreate(Activity 重新创建/自我恢复)机制(一)
- 45.国际化-选择使用资源文件