.net 程序员应该知道的java 知识(1) : 基础篇. 持续更新中....

做了多年的.net 之后, 最近开始转向java 编程.
这个系列记录了其间遇到的一些与.net 不同或者没有接触过的概念. 所以,其中一些可能比较浅显.

开篇介绍一些基础知识和概念, 会持续更新中....

语法点

  • Arrays.asList() 返回的是一个固定大小的list.
    • 如果想要修改其返回结果, 需要将其包装为LinkedList:
      • List<String> list = new LinkedList<String>(Arrays.asList(split));
  • java 中代表后续字符串为原始值(不需要转移)的符号为: \\\\
    • 这个类似于c# 中的@.
    • 例如: String.split(“\\\\|”).
  • 将byte[] 转换为string.
    • new String(bytes);
    • 同时可以指定encoding.
  • lamda 表达式中访问的外部局部变量必须是final 或者隐式final 的.
    • 但是lamda 能够获得对成员变量或静态变量的读写权.
  • Static
    • java 没有static 类.
      • 可以使用final class + private constructor + static members(method+fields)来模拟.
      • Math 类应该是static 的, 虽然并没有该关键字.
      • static 类可以不含有static 方法,它不能被实例化. 而static 方法必须在static 类中.
    • 有static nested 类.
      • 它与普通nested 类的区别是,可以独立于外部类的实例,被直接构造.
    • java有const 关键字,但是没有任何功能.
      • const 在C++ 中用来创建const-pointer.
      • 在java 中使用final 实现.
      • 在C# 中有readonly 关键字.
  • ClassLoader
    • JVM 判定两个class 是否相等时,不仅要判断两个类名是否相同,而且要判断是否由同一类加载器加载的.
    • 双亲委托模型
      • 每个ClassLoader 实例都有一个父类加载器的引用(包含而非继承关系).
      • 安全因素: 防止随时使用自定义的类来替换java 核心api 中定义的类型.
      • 避免重复加载同一类.

java API

  • 管道(PipedInput/OutputStream.).
    • 一个in 和一个out 相关联. 或者使用connect() 来关联两个管道.
    • 必须在不同的线程上, 分配两个相关联的管道, 否则在一个线程中同时进行读和写,可能会导致死锁.
    • 为运行在同一JVM 中(同一进程下的)的两个线程提供了通信能力(传递字节数据).
    • 线程多数情况下需要传递的是完整的对象信息而非原始的字节数据.
    • 管道也可以作为数据源及目标媒介.
    • Unix 中, 运行在不同的地址空间的两个进程可以通过管道通信.
  • 网络
    • 使用网络API 在不同的进程间建立网络连接, 之后使用IO 在建立了连接之后的进程间交换数据.
    • 能够对文件进行写入数据(FileOutputStream)的代码, 同样也能写入到网络连接(OutputStream)中去.
  • Stream(二进制: 字节: 0到255), Reader/Writter(文本: 字符: 0到65535).
    • Reader会根据文本的编码,一次读取若干个字节(并发固定的2个).

java 8 新特性

  • �拼接字符串数组到一个结果字符串中.
    • StringJoiner.
StringJoiner sj = new StringJoiner(":", "[", "]");
sj.add("George").add("Sally").add("Fred");
String desiredString = sj.toString();
  • elements.stream().collect(Collectors.joining()).
List<Integer> numbers = Arrays.asList(1, 2, 3, 4);
String commaSeparatedNumbers = numbers.stream() .map(i -> i.toString()) .collect(Collectors.joining(", "));
  • 继承了两个拥有相同签名的default方法的接口的类, 必须override 该方法, 可以使用InterfaceA.super.method()来调用某个接口的方法.
    • default 方法的产生, 是为了向后兼容( 对接口新增方法时,不必对所有实现类进行连带修改).
    • JDK 8 的Collections 接口就扩展了foreach(). 实现类可以override.
    • static default 会强制所有的实现类override该方法.
  • Lambda 表达式与匿名类的区别
    • 匿名类的this 代表该匿名类, 而lambda 表达式中的this 代表外部类.
    • 编译lambda 表达式时,将其转化为类里面的私有含有, 并使用invokedynamic 来动态绑定该方法.
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,340评论 5 467
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,762评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,329评论 0 329
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,678评论 1 270
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,583评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 47,995评论 1 275
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,493评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,145评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,293评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,250评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,267评论 1 328
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,973评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,556评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,648评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,873评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,257评论 2 345
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,809评论 2 339

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,559评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,531评论 18 399
  • Java 8自Java 5(发行于2004)以来最具革命性的版本。Java 8 为Java语言、编译器、类库、开发...
    谁在烽烟彼岸阅读 882评论 0 4
  • 这段时间才开始进入了安卓的学习,是一个实实在在的菜鸟,今天,运用才学到的知识,做了一个简单的登录界面,算是对这段时...
    鱼我所欲阅读 2,497评论 0 3
  • 一直都希望有一个能够真正能够懂自己的人,在我伤心难过的时候,不需要过多的安慰,只需要静静地陪伴着我。 一直都希望能...
    那些年我最深的回忆阅读 244评论 3 0