ImmutableClass

一旦初始化,值无法修改
主要是用于多线程之间的数据共享,避免数据污染 class不设置setter即可实现Immutable Class public class ImmutableIntArray {
private final int[] array;
public ImmutableIntArray(int[] array) {
this.array = array.clone();
}
public int[] getValue() {
return this.clone();
}
}

null检查

对象null检查
Object obj = null;
Objects.isNull(obj); // true
Objects.nonNull(obj); // false 集合null检查 List<Object> list = new ArrayList<>();
list.add(1);
list.add(2);
list.add(null);
list.add(3);
list.stream().filter(Objects::nonNull).forEach(item -> {
System.out.println(item);
}); // 过滤null值

字符编码

BufferedWriter wr = Files.newBufferedWriter(Paths.get("demo.txt"),StandardCharsets.UTF_8)
BufferedReader reader = Files.newBufferedReader(Paths.get("demo.txt"),StandardCharsets.UTF_8)
String s = new String(Files.readAllBytes(Paths.get("demo.txt")), StandardCharsets.UTF_8);
byte[] bytes = "aaaa".getBytes(StandardCharsets.UTF_8);

default logger

private static final Logger logger = Logger.getLogger(TestController.class.getName());
logger.log(Level.INFO, String.format("%s: %s", "输出", "日志"));
logger.warning(String.format("%s: %s", "输出", "日志")); 日志等级
SEVERE
WARNING
INFO
CONFIG
FINE
FINER
FINEST

函数可变参数

void fn(int... x) {
for (int item : x) {
System.out.println(item);
}
}
fn(1,2,3,4,5);

Nashorn JavaScript engine

执行脚本文件

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
engine.eval(new FileReader("C:\\Users\\26401\\Desktop\\" + "demo.js"));

改变js文件输出流

ScriptEngineManager manager = new ScriptEngineManager();
ScriptEngine engine = manager.getEngineByName("nashorn");
StringWriter stringWriter = new StringWriter();
engine.getContext().setWriter(stringWriter);
engine.eval(new FileReader("C:\\Users\\26401\\Desktop\\" + "demo.js"));
return stringWriter.toString();

全局变量

engine.put("global", "globaldata");
engine.eval("print(global);"); engine.get("global");

2D图

package com.springlearn.learn.model;
import javax.swing.*;
import java.awt.*;
// MyPanel extends JPanel, which will eventually be placed in a JFrame
public class MyPanel extends JPanel {
// custom painting is performed by the paintComponent method
@Override
public void paintComponent(Graphics g){
// clear the previous painting
super.paintComponent(g);
// cast Graphics to Graphics2D
Graphics2D g2 = (Graphics2D) g;
g2.setColor(Color.red); // sets Graphics2D color
// draw the rectangle
g2.drawRect(0,0,100,100); // drawRect(x-position, y-position, width, height)
g2.setColor(Color.blue);
g2.fillRect(200,0,100,100); // fill new rectangle with color blue
}
} public class Test{
JFrame f;
MyPanel p; public Test(){
f = new JFrame();
// get the content area of Panel.
Container c = f.getContentPane();
// set the LayoutManager
c.setLayout(new BorderLayout());
p = new MyPanel();
// add MyPanel object into container
c.add(p);
// set the size of the JFrame
f.setSize(400,400);
// make the JFrame visible
f.setVisible(true);
// sets close behavior; EXIT_ON_CLOSE invokes System.exit(0) on closing the JFrame
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
} public static void main(String[] args) throws Exception {
DemoApplication t = new DemoApplication();
}
}

类单例

public class Singleton {
private static final Singleton INSTANCE = new Singleton();
private Singleton() {}
public static Singleton getInstance() {
return INSTANCE;
}
} public class Singleton {
private static class InstanceHolder {
static final Singleton INSTANCE = new Singleton();
}
public static Singleton getInstance() {
return InstanceHolder.INSTANCE;
}
private Singleton() {}
}

克隆

public class Test implements Cloneable {
@Override
public Object clone() throws CloneNotSupportedException {
return super.clone();
}
} Test test = new Test();
Test testcopy = (Test) test.clone();

修饰符

常用修饰符

    public 公开
protected 父类和子类可用
default 不写权限关键字,默认是default,只能在当前package下是使用
private 本类可用
final 表示固定不变的
final修饰的类不能被继承
final修饰的方法不能被子类重写
final修饰的变量就是常量,不能修改 final int j = 11;
static 表示静态,只能通过类本身访问 其他修饰符 strictfp 浮点计算
strictfp class A{}
volatile 多线程中,读取最新值
volatile boolean active;
synchronized 只允许一个线程操作
synchronized void SharedMethod(){}
void SharedMethod(){
synchronized (this){
...
}
}
transient 不会被序列化
public transient int limit = 55;

结语

本文章是java成神的系列文章之一

如果你想知道,但是本文没有的,请下方留言

我会第一时间总结出来并发布填充到本文

java成神之——ImmutableClass,null检查,字符编码,defaultLogger,可变参数,JavaScriptEngine,2D图,类单例,克隆,修饰符基本操作的更多相关文章

  1. Java自学第6期——Collection、Map、迭代器、泛型、可变参数、集合工具类、集合数据结构、Debug

    集合:集合是java中提供的一种容器,可以用来存储多个数据. 集合和数组既然都是容器,它们有啥区别呢? 数组的长度是固定的.集合的长度是可变的. 数组中存储的是同一类型的元素,可以存储基本数据类型值. ...

  2. java成神之——文件IO

    文件I/O Path Files File类 File和Path的区别和联系 FileFilter FileOutputStream FileInputStream 利用FileOutputStrea ...

  3. java成神之——Stream和Optional

    Stream流 基本使用 流关闭 平行流 流重用 iterator转换成流 分组计数 无限流 流转集合 压缩流 统计数值流 集合转换流遍历 流拼接 reduce 使用流生成随机字符串 流的包装流 几种 ...

  4. java成神之——注释修饰符

    注释修饰符 自定义注释 元注释 通过反射在runtime访问注释 内置注释 多注释实例 错误写法 使用容器改写 使用@Repeatable元注释 注释继承 使用反射获取注释 获取类的注释 获取方法的注 ...

  5. java成神之——网络编程基本操作

    网络编程 获取ip UDP程序示例 TCP程序 结语 网络编程 获取ip InetAddress id = InetAddress.getLocalHost(); // InetAddress id ...

  6. java成神之——MySQL Connector/J 的基本使用

    使用示例 DBCP连接池 结语 使用示例 public class demo { static Connection con = null; static Statement st = null; s ...

  7. java成神之——HttpURLConnection访问api

    HttpURLConnection 访问get资源 访问post资源 访问Delete资源 获取状态码 结语 HttpURLConnection 访问get资源 HttpURLConnection c ...

  8. java成神之——正则表达式基本使用

    正则表达式 常用匹配规则 基本使用 标记符的使用 部分正则标记 正则表达式在字符串方法中的使用 结语 正则表达式 常用匹配规则 [abc] abc其中一个 [^abc] abc之外的一个 [a-z] ...

  9. java成神之——集合框架之Maps,Hashtable

    集合 Maps HashMap 创建和初始化map 遍历方式 LinkedHashMap WeakHashMap TreeMap 线程锁 Hashtable 结语 集合 Maps HashMap Ma ...

随机推荐

  1. openvswitch的原理和常用命令

    一.Openvswitch工作原理 openvSwitch是一个高质量的.多层虚拟交换机,使用开源Apache2.0许可协议,由 Nicira Networks开发,主要实现代码为可移植的C代码.它的 ...

  2. struts中操作request,session

    在Action类中操作request,session 方法一.利用ActionContext.getContext().get("request"); //返回的是Map集合 Ma ...

  3. scrapy 碎片

    1.启动命令 2.目录结构 3.文件说明 4.架构图示 5.代码流程 参考资料: http://www.cnblogs.com/yangxt90/articles/9021530.html http: ...

  4. Javascript+CSS实现影像卷帘效果

    用过Arcgis的筒子们对于Arcmap里面的一个卷帘效果肯定记忆很深刻,想把它搬到自己的WebGIS系统中去,抱着同样的想法,我也对这种比较炫的卷帘效果做了一下研究,吼吼,出来了,给大家汇报一下成果 ...

  5. dojo chart详解

    Dojo提供了一套很完善的统计图(Chart)接口,在dojox/charting下面,可以支持很多种类型的. .简介 Dojo统计图提供快速的.简单的接口实现美观的.交互性强的web统计图表的实现. ...

  6. [置顶] 【机器学习PAI实践五】机器学习眼中的《人民的名义》

    一.背景 最近热播的反腐神剧"人民的名义"掀起来一波社会舆论的高潮,这部电视剧之所能得到广泛的关注,除了老戏骨们精湛的演技,整部剧出色的剧本也起到了关键的作用.笔者在平日追剧之余, ...

  7. 多进程(了解):守护进程,互斥锁,信号量,进程Queue与线程queue(生产者与消费者模型)

    一.守护进程 主进程创建守护进程,守护进程的主要的特征为:①守护进程会在主进程代码执行结束时立即终止:②守护进程内无法继续再开子进程,否则会抛出异常. 实例: from multiprocessing ...

  8. Markdown list状态下插入代码

    /***************************************************************************** * Markdown list状态下插入代 ...

  9. [QT][问题]关于QT语言家使用失败的原因之一

    按照标准的qt使用教程 ( http://www.qter.org/forum.php?mod=viewthread&tid=781 ) 实践了下,发现除去主界面外,点开的窗口多语言没有问题. ...

  10. Python之json文件

    { "people":[ { "firstName": "Brett", "lastName":"McLaug ...