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 ...
随机推荐
- 样式重置 取消input默认样式
body, h1, h2, h3, h4, h5, h6, hr, p,blockquote, dl, dt, dd, ul, ol, li,pre, form, fieldset, legend, ...
- IIS FTP文件服务器搭建步骤
利用IIS搭建需要验证用户用的FTP服务器(当然也可以不用验证,为了安全,添加验证) 1.C盘下创建文件夹,iftppub 2.打开关闭Windows功能,Internet信息服务全选,操作完后,重启 ...
- Android IOS WebRTC 音视频开发总结(五八)-- 图文解说视频直播原理
本文主要介绍rtmp&hls视频直播原理,文章最早发表在我们的微信公众号上,详见这里,欢迎关注微信公众号blackerteam,更多详见www.blackerteam.com 现在视频直播很火 ...
- Android IOS WebRTC 音视频开发总结(三九)-- win10升级为何要p2p
本文主要介绍webrtc p2p的应用场景,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. P2P最简单的解释就是两个客户端之间直接进行数据交互,不经过服务端转发. 最早接触P2P是 ...
- qt5.5实现 记事本程序
最近由于要做Qt相关的毕业设计课题,以前对Qt完全不了解,对于客户端图形界面程序,也只对Windows下的MFC熟悉, 所以,由于Qt的跨平台特性和相对比较纯的C++的特点,就准备学习一下吧.这两天逛 ...
- jQuery实现的Div窗口震动效果实例
本文实例讲述了jQuery实现的Div窗口震动效果.分享给大家供大家参考.具体如下: 这是一款jQuery窗口震动效果代码,在Div边框内点击一下鼠标,它就开始震动了,适用浏览器:IE8.360.Fi ...
- Silverlight读取Zip文件中的图片与视频
首先看看Demo的截图: 下面我将一步步展示实现这个Demo的过程,这个需求就是读出Zip文件中的图片与视频. Demo整体架构: 首先我们准备几张图片和视频,然后将其压缩至resource.zip文 ...
- 安卓手机的touchend事件不触发问题
问题描述 $(document).on("touchstart touchmove",".btn-highlight",function(event){ $(t ...
- 在c#中使用mongo-csharp-driver操作mongodb
1)下载安装 下载地址:http://github.com/mongodb/mongo-csharp-driver/downloads 编译之后得到两个dll MongoDB.Driver.dll:顾 ...
- (转)浅谈HTML5与css3画饼图!
神马系饼图? 饼图,大家都应该熟知,在统计数据对比方面,几乎处处用到.如cnzz的统计饼图 从饼图中,很形象地展示了访问者地区的分布,以扇形为块的方式拼成一个大圆. 都使用什么方法实现 目前众多站点制 ...