java随记2
1、Arrays
java8里新添加了parallelSort等parallel开头的方法,表示利用cpu并行的能力
2.面向对象
如果继承树里的某个类要被初始化时,系统将会同时初始化该类的所有父类
子类不会获得父类的构造器,但子类构造器可以使用super调用父类构造器。但super调用也必须出现在构造器第一行,所以super和this不会同时出现。
另外,不管是否使用super调用来执行父类构造器,子类构造器总会调用父类构造器一次。因为系统会在执行子类构造器前,隐式调用父类无参数的构造器,父类会先调用更父类的构造器,所以最先执行的总是java.lang.Object类的构造器。
多态
java引用变量有两个类型:一个是编译时类型,一个是运行时类型。编译时类型由声明该变量时使用的类型决定,运行时类型由实际赋给该变量的对象决定。如果编译时类型和运行时类型不一致,就可能出现所谓的多态。
当把一个子类的实例对象直接赋给父类引用变量时,这个引用变量的编译类型是父类,运行类型是子类,所以当运行时调用该引用变量的方法时,总是表现出子类的方法,于是:相同类型的变量,调用同一个方法时,呈现多种不同的行为特征,这就是多态。
与方法不同的是,变量则不具有多态性,调用时依然是父类的变量值。
引用变量在编译阶段只能调用其编译类型所具有的方法,但运行时则执行它运行时类型所具有法方法,因此,多态时,可通过反射来调用父类所不具有的子类法方法。
递归
public static int fn(Integer n){
if(n.equals(0)){
return 1;
}
if(n.equals(1)){
return 4;
}
return 2*fn(n-1)+fn(n-2);
}
1、如果一个包装类和一个基本类型比较大小,或者是两个基本类型进行比较大小,直接用==就好;
如果是两个包装类进行比较大小,那么使用equals(),返回值是true,false,或者使用Xxx.compare(),返回值是1,0,-1。(这里的equals()方法,已经被包装类重写过了,不是Object的equals())
2、==和equals方法的区别
当使用==来判断两个变量是否想等时,比较的是栈内存中的值,如果两个变量是基本类型变量,且都是数值类型,那么栈内存中个存放的是基本类型变量的值,所以只要两个基本类型变量的值想等,就会返回true。但对于两个引用类型变量,由于栈内存中存放的是变量的引用,所以只有当这两个引用类型变量指向同一个对象是,==才会返回true。==不可用于比较类型上没有父子关系的两个对象。
equals()方法是Object类的一个实例方法,但这个方法和==没区别。不过String类和基本类型的包装类重写了这个equals()方法,不再比较引用对象的引用地址,而是比较所引用的值。
系统自动为接口里的成员变量添加public static final修饰符.
所以接口里定义int MAX = 50;和定义 public static final int MAX = 50;的意义是一样的.
3.Lambda表达式示例
Runnable r = () -> {
for (int i = 0; i < 100; i++) {
System.out.println(i);
}
}; new Thread(r,"线程1").start();
new Thread(r,"线程2").start();
Lambda表达式只能实现一个函数式接口(只有一个抽象方法的接口)
跟匿名内部类有很大的相似处
4.强制垃圾回收
System.gc()
Runtime.getRuntime().gc();
重写finalize()方法,可以看出是否执行了垃圾清理
java随记2的更多相关文章
- Java入门记(五):容器关系的梳理(下)——Map
注意:阅读本文及相关源码时,需要数据结构相关知识,包括:哈希表.链表.红黑树. Map是将键(key)映射到值(value)的对象.不同的映射不能包含相同的键:每个键最多只能映射到一个值.下图是常见M ...
- Java入门记(四):容器关系的梳理(上)——Collection
目录 一.Collection及子类/接口容器继承关系 二.List 2.1 ArrayList 2.1.1 序列化的探讨 2.1.2 删除元素 2.1.3 调整大小 2.2 Vector和Stack ...
- Java入门记(三):初始化顺序
初始化顺序的规则 1.在一个类的对象实例化时,成员变量首先初始化,然后才调用构造器,无论书写顺序.如果调用构造器前,没有显式初始化,那么会赋默认值. 这样做法的原因可以理解为:构造器执行时可能会用到一 ...
- Java入门记(二):向上转型与向下转型
在对Java学习的过程中,对于转型这种操作比较迷茫,特总结出了此文.例子参考了<Java编程思想>. 目录 几个同义词 向上转型与向下转型 例一:向上转型,调用指定的父类方法 例二:向上转 ...
- Java入门记(一):折腾HelloWorld
HelloWorld,学习每门语言的第一步.有人戏称,这些年的编程生涯就是学习各种语言的HelloWorld,不知是自谦还是自嘲.目前所在的公司使用Java作为主要开发语言,我进行语言转换也大半年了, ...
- Java琐记
svn项目倒入,所选的文件夹一定是src上面以及的:然后eclipse会自动创建一个项目,项目名称就是src上级文件夹的名称:然后会按照路径下的文档结构如导入到eclipse的结构中: 被标记为// ...
- java 随记
后台开发的过程中积累的关于java的杂记 架构 SSH框架 为什么要分层? 因为分层使代码变得清晰,容易写也容易阅读,更重要的是让代码扩展性更好,层与层之间的改动不会互相影响 各层的分工 dao--与 ...
- java随记 2月16
1.a=a+b 等于 a+=b ,且a+=b隐含强制类型转换 2.^ 表示异或 两个二进制同号为假,异号为真 即 0^0=0,1^1=0,0^1=1 3.三元运算 布尔表达式 ?表达式 ...
- java面试记很多次还是记不住的问题
1.java底层如何实现多态 https://blog.csdn.net/fan2012huan/article/details/51007517 (1)在常量池中找到方法调用的符号引用 (2)查看P ...
随机推荐
- 【Luogu】P3567Kur-Couriers(主席树)
题目链接 数组大小开到一千二百万才过- - 可以把数先离散化再全都加到主席树中. 对于一个区间[from,to] 取中间点mid 看看小于mid的数有多少个,如果个数的两倍<=to-from+1 ...
- [BZOJ4756] [Usaco2017 Jan]Promotion Counting(线段树合并)
传送门 此题很有意思,有多种解法 1.用天天爱跑步的方法,进入子树的时候ans-query,出去子树的时候ans+query,query可以用树状数组或线段树来搞 2.按dfs序建立主席树 3.线段树 ...
- robotframework使用
下面是ui自动化的使用,关于接口自动化的使用参照此博客:http://blog.csdn.net/wuxiaobingandbob/article/details/50747125 1.使用pytho ...
- CatchTheCaw ----广搜入门
抓住那头牛(POJ3278)农夫知道一头牛的位置,想要抓住它.农夫和牛都位于数轴上,农夫起始位于点N(0<=N<=100000),牛位于点K(0<=K<=100000).农夫有 ...
- shell的while/for脚本的简单入门
shell的while/for脚本的简单入门 while [condition] dodone关键字break跳出循环,continue跳过循环的余下部分. for var in ...;do...d ...
- grafana 安装 和 Nginx 、EL 联调
https://blog.csdn.net/u010735147/article/details/80943593
- python3.x对python2.x变动
原文地址:http://rookiedong.iteye.com/blog/1185403 python 2.4 与 python 3.0 的比较 一. print 从语句变为函数 原: pr ...
- IO流(1)-键盘录入学生信息(姓名,语文成绩,数学成绩,英语成绩),按照总分从高到低存入文本文件
1.先写一个Student类 public class Student { private String name; private int chinese; private int math; pr ...
- solr 简要笔记
创建搜索1 创建directory 2.分词器 analyzer 3indexwriter writer dic an 4.document doc.add writer.adddocument(do ...
- Linux配置防火墙添加端口(Ubuntu/Debian无法使用此方法)
注意:Ubuntu/Debian无法使用此方法 1.打开iptables vi /etc/sysconfig/iptables 2.添加防火墙规则 规则参考:http://www.cnblogs.co ...