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 ...
随机推荐
- 编程规范 html部分
不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的. HTML 部分 语法 对于属性的定义,确保全部使用双引号,绝不要使用单引号. 为每个 HTML 页面的第一行添加标准模式(st ...
- Oracle 查询字段在什么表
-- 查询字段在什么表 select * from all_tab_cols t where t.column_name='ABC'; -- 查询字段在什么表并且 判断是否是主键 select * f ...
- 关于OJ上内存问题的试验
char类型占一个字节 int类型占4个字节 如果杭电OJ上给的范围是32678K,那么内存大小就是32678*1024=33554432 那么可以开到多大的数组呢?!可以开到很大,但是可用的就只有3 ...
- 使用CSS创建有图标的网站导航菜单
在我创建的每一个互联网应用中,我都试图避免创建完全由图片组成的菜单.在我看来,网页菜单系统中应该使用文字.这样做也会让菜单变得更干净利落.清晰和易读,不用考虑应用程序如何读取它,以及页面放大的时候也不 ...
- Web Service 中返回DataSet结果的几种方法
Web Service 中返回DataSet结果的几种方法: 1)直接返回DataSet对象 特点:通常组件化的处理机制,不加任何修饰及处理: 优点:代码精减.易于处理,小数据量处理较快: ...
- C#中补0
C#中补0 编写人:CC阿爸 2014-3-16 首先先增加两个左补齐又补齐的函数 #region 该函数动态添加空格,对齐小票 public string AddSpace(string text ...
- int 类型 占多少字节是由什么决定的
int 类型占据多少字节?到底是跟编译器有关?还是系统来决定的? 1. CPU的设计者才不管你在上面跑什么程序.他们只是按着他们的想法来设计.而int的大小,至少在C/C++中,标准只说可以由实现者自 ...
- PHP 简单实现MySQL数据搜索、添加数据功能 以设备管理为例
测试截图: 数据库bzec ,表shebeidangan 列sb_name,sb_numandtype,sb_home,sb_usedate,sb_address,sb_updatetime,sb_r ...
- 合并果子 (codevs 1063) 题解
[问题描述] 在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆.多多决定把所有的果子合成一堆. 每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和 ...
- C# A窗口内容显示在B窗口中的方法
HeScripts script = new HeScripts(); //A窗口中实例化B窗口 string okscripts = "test"; //设置字段内容 scrip ...