ImmutableClass

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

null检查

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

字符编码

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

default logger

  1. private static final Logger logger = Logger.getLogger(TestController.class.getName());
  2. logger.log(Level.INFO, String.format("%s: %s", "输出", "日志"));
  3. logger.warning(String.format("%s: %s", "输出", "日志"));
  4. 日志等级
  5. SEVERE
  6. WARNING
  7. INFO
  8. CONFIG
  9. FINE
  10. FINER
  11. FINEST

函数可变参数

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

Nashorn JavaScript engine

执行脚本文件

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

改变js文件输出流

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

全局变量

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

2D图

  1. package com.springlearn.learn.model;
  2. import javax.swing.*;
  3. import java.awt.*;
  4. // MyPanel extends JPanel, which will eventually be placed in a JFrame
  5. public class MyPanel extends JPanel {
  6. // custom painting is performed by the paintComponent method
  7. @Override
  8. public void paintComponent(Graphics g){
  9. // clear the previous painting
  10. super.paintComponent(g);
  11. // cast Graphics to Graphics2D
  12. Graphics2D g2 = (Graphics2D) g;
  13. g2.setColor(Color.red); // sets Graphics2D color
  14. // draw the rectangle
  15. g2.drawRect(0,0,100,100); // drawRect(x-position, y-position, width, height)
  16. g2.setColor(Color.blue);
  17. g2.fillRect(200,0,100,100); // fill new rectangle with color blue
  18. }
  19. }
  20. public class Test{
  21. JFrame f;
  22. MyPanel p;
  23. public Test(){
  24. f = new JFrame();
  25. // get the content area of Panel.
  26. Container c = f.getContentPane();
  27. // set the LayoutManager
  28. c.setLayout(new BorderLayout());
  29. p = new MyPanel();
  30. // add MyPanel object into container
  31. c.add(p);
  32. // set the size of the JFrame
  33. f.setSize(400,400);
  34. // make the JFrame visible
  35. f.setVisible(true);
  36. // sets close behavior; EXIT_ON_CLOSE invokes System.exit(0) on closing the JFrame
  37. f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  38. }
  39. public static void main(String[] args) throws Exception {
  40. DemoApplication t = new DemoApplication();
  41. }
  42. }

类单例

  1. public class Singleton {
  2. private static final Singleton INSTANCE = new Singleton();
  3. private Singleton() {}
  4. public static Singleton getInstance() {
  5. return INSTANCE;
  6. }
  7. }
  8. public class Singleton {
  9. private static class InstanceHolder {
  10. static final Singleton INSTANCE = new Singleton();
  11. }
  12. public static Singleton getInstance() {
  13. return InstanceHolder.INSTANCE;
  14. }
  15. private Singleton() {}
  16. }

克隆

  1. public class Test implements Cloneable {
  2. @Override
  3. public Object clone() throws CloneNotSupportedException {
  4. return super.clone();
  5. }
  6. }
  7. Test test = new Test();
  8. Test testcopy = (Test) test.clone();

修饰符

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

结语

  1. 本文章是java成神的系列文章之一
  2. 如果你想知道,但是本文没有的,请下方留言
  3. 我会第一时间总结出来并发布填充到本文

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. 【Python】UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3

    问题如下: UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3 解决方法: 程序开始加上下面两句 sys ...

  2. iOS自动化探索(二)WDA API的使用

    前面我们已经安装好了WebdriverAgent, 现在可以用Facebook官方提供的API来进行一些操作 WDA API官方页面: https://github.com/facebook/WebD ...

  3. [转载]java合并word文件

    需求背景 在互联网教育行业,做内容相关的项目经常碰到的一个问题就是如何动态生成一张word试卷.事先把题库中的每一道试题都已经保存成一个独立的word文件了,但是在选择了部分试题生成一张word试卷的 ...

  4. CSS: Flexbox

    Use flexbox to create a responsive website, containing a flexible navigation bar and flexible conten ...

  5. L134

    这种成功和后来的研究(表明记忆本身并不是先天决定的)使爱立信总结到,记忆的行为与其说是一种习得的行为不如说是一种先天的行为. 这点我们不清楚-构思物体和找出数字模型的能力,回答问题(最好的诗人和哲学家 ...

  6. 2017.11.2 Talk to customers for an hour

    yesterday::: Hi Huang, For the better performance of the test the Con 6 should be connected all the ...

  7. [置顶] Android ShareSDKQQ 第三方登录so easy?

    昨天群里有个群友看到我之前做的那个qq第三方登录怎么做的,于是乎思考了一下,还是决定写一篇博客记录下,其实都不难的,其实之前我又写到FaceBook的第三方登录不知道看下这Android集成FaceB ...

  8. [ASP.NET] 修改web站点的默认编程语言

    当你点右键新建web窗体或者新建类的时候,默认编程语言是什么?有时候是C#,有时候是VB. 你找遍了所有配置,从web.config到iis express配置到sln文件,硬是没找到vs如何决定编程 ...

  9. div垂直水平居中的四种方法总结

    5.利用弹性布局 与 margin: <style> .container{ height: 600px; width: 600px; border:1px solid black; di ...

  10. 数据库模式显示的Swing表格

    http://code.google.com/p/simpleframework/ 是一个国内开源的JavaWeb框架,但其net.simpleframework.swing包里面提供了一个超强的Sw ...