Think in java备忘录
1..new在内部类中的使用
.new可以用使用外部类对象创建一个内部类,对象
DotNew.java
package com.gxf.innerclass;
public class DotNew {
class InnerClass{ //定义内部类
public String toString(){
return "this is InnerClass";
}
}
public static void main(String[] args) {
DotNew dtn = new DotNew();
InnerClass inc = dtn.new InnerClass(); //使用外部类 + .new实例化内部类
System.out.println(inc);
}
}
必须使用外部类实例来实例化内部类对象,不能直接new 外部类名.内部类名,如上面的dtn.new DotNew.InnerClass()
2.java System.arraycopy()函数只能改变数组内容,不能改变数组大小
package com.gxf.ArrayTest;
public class Test {
public static void main(String []args){
int dest[] = new int[]{1,2,3,4,5};
int src[] = new int[]{6,7,8};
System.arraycopy(src, 0, dest, 0, src.length); //System.arraycopy()只能改变数组中的内容不能改变数组的大小
showArray(dest);
}
private static void showArray(int []num){
for(int i = 0; i < num.length; i++){
System.out.println(num[i] + " ");
}
}
}
output:
6
7
8
4
5
3.java主线程退出,守护线程不会退出
这里创建通过主线程创建了一个子线程,子线程每一秒输出一个数字并且无线循环。
ThreadExit.java
/**
* 测试主线程退出,子线程是否退出
* @author Administrator
*
*/
public class ThreadExit { //子线程每秒向控制台输出一个数字
class MyThread extends Thread{
int count = 0;
public void run(){
while(true){
System.out.println("count = " + count ++);
System.out.println("当前线程名称: " + Thread.currentThread().getName());
try {
Thread.sleep(1000); } catch (InterruptedException e) {
e.printStackTrace();
}//catch
}//while
}//run
}//class public static void main(String args[]){
ThreadExit threadExit = new ThreadExit();
MyThread myThread = threadExit.new MyThread();
myThread.start(); //启动线程
System.out.println("当前线程名称: " + Thread.currentThread().getName());
}
}

这里并不能说明主线程已退出,注意这里说的是主线程,不是进程。
使用jps和jstack这两个工具可以看到进程中堆栈信息,这里我暂时成为堆栈信息
信息有点长就不贴出来了,从信息中可以看出,主线程是退出了,子线程并没有退出。
这个好像和c/c++有点不同
4.Iterator.remove()
API文档中是这样写的
从迭代器指向的 collection 中移除迭代器返回的最后一个元素(可选操作)。每次调用 next 只能调用一次此方法。如果进行迭代时用调用此方法之外的其他方式修改了该迭代器所指向的 collection,则迭代器的行为是不确定的。
这里我的理解是返回最后一个next所指的元素
下面的代码中我用了一个list放了10,用Iterator来遍历list。如果5 = iterator.next(),调用iterator.remove()方法,通过最后输出list可以看出5被删除了
package com.gxf.collection; import java.util.ArrayList;
import java.util.Iterator;
import java.util.List; public class TestForIterator {
public static void main(String[] args) {
List<Integer> list = new ArrayList<Integer>();
for(int i = 1; i <= 10;i++){
list.add(i);
}//for
System.out.println(list); Iterator<Integer> iterator = list.iterator();
while(iterator.hasNext()){
int temp = iterator.next();
if(temp == 5)
iterator.remove(); //5从list中删除了
}//while System.out.println(list);
}
}
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 2, 3, 4, 6, 7, 8, 9, 10]
5.随机种子相同,产生的随机数是一样的
package com.gxf.test;
import java.util.Random;
public class Test {
public static void main(String[] args) {
Random random1 = new Random(1);
Random random2 = new Random(1);
System.out.println(random1.nextInt());
System.out.println(random2.nextInt());
}
}
output:
-1155869325
-1155869325
6.类什么时候被加载/类加载时机:
第一:生成该类对象的时候,会加载该类及该类的所有父类;
第二:访问该类的静态成员的时候;
第三:class.forName("类名");
7.java中的三种类加载器
其实在java中有三种类类加载器。
1)Bootstrap ClassLoader 此加载器采用c++编写,一般开发中很少见。
2)Extension ClassLoader 用来进行扩展类的加载,一般对应的是jre\lib\ext目录中的类
3)AppClassLoader 加载classpath指定的类,是最常用的加载器。同时也是java中默认的加载器。
这是从CSDN上面看到的,感觉是正确的,待验证
Think in java备忘录的更多相关文章
- JAVA备忘录
本文主要是记录一下JAVA: 1.Arrays.的几个用法: fill:数组全部置一个数 sort:排序 binarySearch:二分查找 2.Map的用法: Map<Integer,Inte ...
- 重学 Java 设计模式:实战备忘录模式「模拟互联网系统上线过程中,配置文件回滚场景」
作者:小傅哥 博客:https://bugstack.cn - 原创系列专题文章 沉淀.分享.成长,让自己和他人都能有所收获! 一.前言 实现不了是研发的借口? 实现不了,有时候是功能复杂度较高难以实 ...
- Spark案例分析
一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...
- 设计模式03备忘录(java)
先贴代码有空来写内容. 备忘录1 //简单的备忘录,只可以记录上一次修改前的状态,实现撤回一次的操作. class Student{ private String name; private Stri ...
- JAVA 设计模式 备忘录模式
用途 备忘录模式 (Memento) 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态. 这样以后就可将该对象恢复到原先保存的状态. 备忘录模式是一种行为型模式. 结构
- Head First 设计模式系列之二----备忘录模式(java版)
申明:这几天无意中关注到备忘录模式,比较陌生回家一番参考书,只在附录里记录了该模式.后来在园子里有发现了有专门写设计模式的博客,并且写的也得牛逼.附上链接 http://www.cnblogs.com ...
- [译]Java 设计模式之备忘录
(文章翻译来自Java Design Pattern: Memento) memento是一个保存另外一个对象内部状态拷贝的对象.这样以后就可以将该对象恢复到原先保存的状态. 在将来时空旅行将成为显示 ...
- java设计模式---备忘录模式
一.引子 俗话说:世上难买后悔药.所以凡事讲究个"三思而后行",但总常见有人做"痛心疾首"状:当初我要是--.如果真的有<大话西游>中能时光倒流的& ...
- Java进阶篇设计模式之十二 ---- 备忘录模式和状态模式
前言 在上一篇中我们学习了行为型模式的策略模式(Strategy Pattern)和模板模式(Template Pattern).本篇则来学习下行为型模式的两个模式,备忘录模式(Memento Pat ...
随机推荐
- 通过string型类名实例化一个类
DataTable dt = new DBHelper().getIndexInfo(code_id); DataRow row = dt.Rows[0]; string dllName = row[ ...
- jQuery插件Skippr实现焦点图
史上效果最好的焦点图幻灯片jQuery插件Skippr,轻量级插件.响应式布局插件,强大的参数自定义 配置,可自定义切换速度.切换方式.是否显示左右箭头.是否自动播放.自动播放间隔时间等配置 参数,调 ...
- JQuery 的几个有用的技巧
JQuery代码 /* 新窗口打开链接:JQuery filter attr * 禁止鼠标弹出右键菜单:DOM contextmenu * 回到页面顶端:DOM scrollTo * 动态更换Css样 ...
- nodejs前端自动化构建
http://99jty.com/?p=1257 http://www.jankerli.com/?p=1628 http://www.cnblogs.com/zhepama/archive/2013 ...
- POJ C++程序设计 编程题#1 编程作业—继承与派生
编程题#1 来源: POJ (Coursera声明:在POJ上完成的习题将不会计入Coursera的最后成绩.) 注意: 总时间限制: 1000ms 内存限制: 65536kB 描述 写一个MyStr ...
- 【PHP开源产品】Ecshop的商品筛选功能实现分析之一
一.首先,说明一下为什么要对category.php文件进行分析. 原因如下: ①个人对商城类商品筛选功能的实现比较好奇: ②对商城中关于商品的数据表设计比较感兴趣.(该功能涉及到与数据库的交互,而且 ...
- php变量那些事:学习过程中遇到的关于php变量的有趣的问题(不断发现不断更新)
不断发现……,不断更新……,不断寻找答案……例子的测试环境:php5.3,win7,64位Num1:<?$a=array(1,2,3,4,5,6); $b=$a;$m=memory_get_us ...
- android开源代码
Android开源项目--分类汇总 转自:https://github.com/Trinea/android-open-project Android开源项目第一篇——个性化控件(View)篇 包括L ...
- psql: 致命错误: 用户 "postgres" Ident 认证失败
RedHat: 问题: psql -U postgres 时出现:psql: 致命错误: 用户 "postgres" Ident 认证失败 解决: 修改 /var/lib/pgs ...
- 刀哥多线程现操作gcd-10-delay
延迟操作 // MARK: - 延迟执行 - (void)delay { /** 从现在开始,经过多少纳秒,由"队列"调度异步执行 block 中的代码 参数 1. when 从现 ...