发表时间:2022-03-25来源:网络
一、JVM 虚拟机
java虚拟机:超级大翻译,java跨平台就靠它了,把java代码翻译到各种不同的操作系统。我们写的所有java代码都是在jvm上运行。java程序是通用的,但是每个平台对应的JVM是不一样的。
二、JRE(Java Runtime Environment) 和 JDK (Java development kit)
java运行时的环境,已经包含了JVM 和运行时所需要的核心类库。如果要运行一个已有的java程序,只需要安装JRE就可以了。
JDK是java程序开发工具包,包含完整的运行工具JRE和 开发人员使用的工具。如果要开发Java程序,必须安装JDK
三、三者包含关系
四、JAVA程序开发步骤:编写、编译(用javac.exe编译器把源代码转换成JVM看得懂的代码)、运行(JVM用java.exe解释器运行字节码文件)
说明:我们编写的源程序 都是 .java,经过编译器编译后,即用javac.exe编译器把源代码转换成JVM看得懂的代码,就是字节码文件(.class),JVM用java.exe解释器运行的就是字节码文件。
exp:编写HelloWorld (记事本编译)
(1)编写源程序(新建记事本,改后缀名为.java,写代码)
记事本编写源码要点:
一个记事本可以写多个类,但是只有一个类名可以声明为public,这个声明为public的类名必须和记事本文件名一样,否则报错。编译后的字节码文件(.class)的名字就是记事本中的类名(这里类名HelloWorld)。
类是Java当中所有源代码的基本组织单位。多个相似功能的类源文件(.java文件)可以合并成一个package(一般按照一定的设计模式来确定包的内容,比如MVC等等)。
(2)编译 打开命令提示符,将位置转到.java源程序所在的目录
语法:javac java源码文件
比如 javac HelloWorld.java 即可完成对此目录下HelloWorld的编译(javac添加过环境变量,所以哪里都可以用),编译之后,会在同目录生成 一个以类名字命名的.class(即HelloWorld.class)文件。如果原java文件中有多个类,自然编译后就会产生多个类对应的多个字节码文件.class
特别注意:源码文件有.java后缀
(3)运行 继续在命令提示符中
语法:java 类名(无后缀) //java是解释器,添加过环境变量,因此可直接用java.exe。
注意:只能执行有main方法的字节码文件(.class)。
exp: java HelloWorld //即可执行程序
五、JAVA注释 单行注释 多行注释 文档注释
代码中,不参与编译的内容就是注释。可见编译以后生成的.class结尾的字节码文件中不包含注释
注释的作用:
1、对所写的程序进行解释活命,增强代码可读性。毕竟几个月后,可能自己也看不懂自己的代码了
2、调试缩写的代码。(可以将自己决定有问题的代码注掉)
注释格式:
单行注释 \\
多行注释 /*.... */
重点:文档注释(java特有的注释)
格式: /**
@author 指定java程序作者
@version 指定源文件版本
*/
说明:文档注释内容可以被JDK提供的工具javadoc解析(java目录里面可以看到javadoc),生成一套以网页文件形式体现的该程序的说明文档。javac不解析文档注释,所以文档注释依然不会被编译。
注意:javadoc解析的类,需要声明为public
解析文档注释方法:
命令提示符进入要解析的java文件所在目录
javadoc -d 自定义名字 -author -version 要解析的java文件(带后缀)
解析完成后会生成一个刚刚 自定义名字命名的文件夹,会生成一个网页文件。这个文件会结合文档注释和类的代码生成一个类的说明文件。(即API文档)
六、注解Annotation
6.1概述
从JDK 5.0开始, Java增加了对元数据(MetaData)的支持,也就是Annotation(注解).
Annotation其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。
Annotation可以像修饰符一样被使用,可用于修饰包,类,构造器,方法,成员变量,参数,局部变量的声明,这些信息被保存在Annotation的"name=value"对中。
在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。
在JavaEE/Android中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替JavaEEl旧版中所遗留的繁冗代码和XML配置等。
未来的开发模式都是基于注解的, JPA是基于注解的, Spring2.5以上都是基于注解的, Hibernate3.x以后也是基于注解的,现在的Struts2有一部分也是基于注解的了,注解是一种趋势,一定程度上可以说:框架=注解+反射+设计模式。
6.2 Annotation的使用
1、文档注解 就是上面的文档注释
@author 标明开发该类模块的作者,多个作者之间使用,分割
@version 标明该类模块的版本@see参考转向,也就是相关主题
@since 从哪个版本开始增加的
@param 对方法中某参数的说明,如果没有参数就不能写
@return 对方法返回值的说明,如果方法的返回值类型是void就不能写
@exception对方法可能抛出的异常进行说明,如果方法没有用throws显式抛出的异常就不能写.
其中
@param @return和@exception这三个标记都是只用于方法的。
@param的格式要求: @param形参名 形参类型 形参说明
@return的格式要求: @return返回值类型 返回值说明
@exception的格式要求: @exception 异常类型 异常说明
@param和@exception可以并列多个
exp:
2、编译时进行格式检查(JDK内置的三个基本注解)
@Override:限定重写父类方法,该注解只能用于方法
说明:使用了@Override注解,IDEA在编译的时候就会校验,如果不是重写,就会报错
@Deprecated:用于表示所修饰的元素(类,方法,构造器等)已过时。通常是因为所修饰的结构危险或存在更好的选择
说明:过时了,但并不影响使用(因为要兼容老项目),该注解就是提示有新的方案可以使用
@SuppressWarnings:抑制编译器警告
语法:@SuppressWarnings("str值1","str值2"...)
exp:@SuppressWarnings("unused","rawtypes"...) //忽略普通警告和泛型警告
说明:加了此注解,就不会有警告了,看着舒服
3、跟踪代码的依赖性,实现替代配置文件功能
Serlvet3.0提供了注解(annotation),使得不再需要在web.xml文件中进行Serlvet的部署
6.3、自定义注解 (参照@SuppressWarnings定义)
1、介绍
(1)定义新的Annotation类型使用@interface关键字
(2)自定义注解自动继承了java.lang.annotation.Annotation接口
(3)Annotation的成员变量在Annotation定义中以无参数方法的形式来声明。其方法名和返回值定义了该成员的名字和类型。我们称为配置参数。类型只能是八种基本数据类型、String类型、Class类型、enum类型、Annotation类型.以上所有类型的数组。
(4)可以在定义Annotation的成员变量时为其指定初始值,指定成员变量的初始直可使用default关键字
(5)如果只有一个参数成员,建议使用参数名为value
(6)如果定义的注解含有配置参数,那么使用时必须指定参数值,除非它有默认值。格式是“参数名=参数值”,如果只有一个参数成员,且名称为value,可以省略"value="
(7)没有成员定义的Annotation称为标记(比如@Override就是标记);包含成员变量的Annotation称为元数据Annotation
注意: 自定义注解必须配上注解的信息处理流程(使用反射)才有意义。
2、自定义注解的方法
(1)IDEA对应模块的包下,右键,new class, 然后Kind选择Annotation
语法:
public @interface 自定义注解名{
String value() 【default 默认值】;
}
//后面的某个需要注释的地方
@自定义注解名(参数名="参数值") //如果有默认值,就可以空参了。当然也允许不用默认值,自己修改一个值
说明:
(1)内部定义成员,通常用value表示
(2)可以指定成员的默认值,使用default定义
(3)如果自定义注解没有成员,表明是一个标识作用
注意:如果注解有成员,在使用注解时,需要指明成员的值(除非有默认值)
6.4JDK中的元注解 对现有的注解进行解释说明的注解
1、元注解简介
(1)JDK的元Annotation用于修饰其他Annotation定义.元注解位于注解的定义的上方
(2)JDK5.0提供了4个标准的meta-annotation类型,分别是:Retention(生命周期)、Target()、Documented、Inherited
同理,元数据的理解(修饰现有数据的数据):String name = "captain"; //captain是数据,String(修饰数据类型) 和 name(修饰数据变量名) 他们就是元数据
说明:自定义注解一般都会用到@Retention 和 @Target 这两个元注解
2、元注解介绍
(1)@Retention 用于指定注解的生命周期 3种
语法:@retention(RetentionPolicy.SOURCE/CLASS/RUNTIME) //RetentionPolicy是定义在retention中的枚举类
public enum RetentionPolicy{
SOURCE,//说明不会编译(编译时就直接丢弃的注释,生成的class文件就没这些注释)
CLASS,//默认行为,编译的时候会编译,但运行的时候,不会加载进内存(不会运行)
RUNTIME //要编译,同时加载进内存,反射可以获取,就可以和代码互动起来,实现配置功能
}
(2)@Target: 包含一个名为value的成员变量,用于修饰注解定义,用于指定被修饰的注解能用于修饰哪些程序元素。
语法: @Target(ElementType.值) //单个值情况
@Target(value={值1【,值2,值3...】}) //多个值情况
说明:默认情况,默认这个注解可以用于任何位置
(3)@Documented 用于指定所修饰的注解将被javadoc工具提取成文档,保留下来。默认情况下,javadoc不包括注解。
注意:定义为Documented的注解必须设置Retention值为RUNTIME
exp:Deprecated注解(过时),用了@Documented,因此Deprecated会被保留下来。
@Deprecated 修饰了Date类
javadoc解析的Date的API文档里面,就保留下了@Deprecated
(4)@Inherited 修饰的注解将具有继承性,如果某个类使用了被@Inherited修饰的注解,则子类将自动具有该注解。
极少使用
6.5 JDK8中注解的新特性:可重复注解、类型注解
1、可重复注解 允许在一个位置使用同名,不同值的注解
2、类型注解
ELementType.TYPE_PARAMETER表示该注解能写在类型变量的声明语句中(如:泛型声明)
ELementType.TYPE_USE表示该注解能写在使用类型的任何语句中。
说明:以上作为 @Target的值之一,放进去以后, @Target修饰的注解可以用来修饰变量等
下一篇:Java程序怎么运行?
皓盘云建最新版下载v9.0 安卓版
53.38MB |商务办公
ris云客移动销售系统最新版下载v1.1.25 安卓手机版
42.71M |商务办公
粤语翻译帮app下载v1.1.1 安卓版
60.01MB |生活服务
人生笔记app官方版下载v1.19.4 安卓版
125.88MB |系统工具
萝卜笔记app下载v1.1.6 安卓版
46.29MB |生活服务
贯联商户端app下载v6.1.8 安卓版
12.54MB |商务办公
jotmo笔记app下载v2.30.0 安卓版
50.06MB |系统工具
鑫钜出行共享汽车app下载v1.5.2
44.7M |生活服务
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-03-26
2022-02-15
2022-02-14