CUMT--Java复习--Java的一些琐碎的知识

目录

一、Java体系

1、Java语言优势

2、Java相关专有名词

3、Java跨平台原理

4、垃圾回收机制

二、类加载

1、Class类

2、类加载步骤

3、类加载器

三、反射

四、枚举

1、Enum类方法

2、改写Enum类 

五、注解、国际化

六、接口的默认方法和静态方法

七、Lambda规范


一、Java体系

1、Java语言优势

(1)资源免费

(2)跨平台 (源代码->class->虚拟机->具体平台的机器码)

(3)健壮性、安全性

(4)高性能

(5)简单

(6)面向对象

(7)动态性

(8)多线程

2、Java相关专有名词

(1)JDK(Java开发工具包)

(2)JRE(Java运行时环境)

(3)JVM(Java虚拟机)

(4)SDK(软件开发工具包)

3、Java跨平台原理

        跨平台机制具有“一次编译随处运行”的特性,流程如下:

        Java字节码执行方式:解释执行方式、即时编译方式

4、垃圾回收机制

        垃圾回收:清理不再使用的对象、释放内存空间,Java程序的内存分配和回收都是由JRE在后台自动进行的。

        垃圾回收特点:内存优化、动态回收、回收的不确定性、占用系统开销

二、类加载

1、Class类

        通过获取一个变量的Class对象可以用于返回这个变量所属类的名称,构造方法,方法,成员变量。

        获取Class对象的方式:

        一般来说,会使用第一种方法,通过在尖括号中添加想知道的类,比如Float,返回系统中类的名称class java.lang.Float。

        而使用第二种方法,必须要建立异常机制,因为forName中的参数,有可能并不存在。

//第一种方法
Class<Float> fClass=Float.class;    //使用.class属性
System.out.println(fClass);//第二种方法
try{Class strClass=Class.forName("java.lang.String");    //通过Class类的forName方法(明知故问)System.out.println(strClass);
}
catch(Exception e)
{e.printStackTrace();
}//第三种方法
String a="123";                    //通过变量的getClass方法,获取变量的类名
System.out.println(a.getClass());

        Class类的几个常见方法:

(1)getSuperclass()        返回父类名称

(2)getDeclaredConstructors()        返回构造方法列表,返回类型为Constructor

(3)getDeclaredFields()        返回成员变量列表,返回类型为Field

(4)getDeclaredMethods()        返回方法列表,返回类型为Method

        代码实例: 

String a="123";
System.out.println(a.getClass());
Class aclass=a.getClass();
System.out.println(aclass.getSuperclass());
System.out.println("------------------------------------------------");
System.out.println("构造方法:");
Constructor[] ctors=aclass.getDeclaredConstructors(); 
for(Constructor b:ctors)System.out.println(b);
System.out.println("------------------------------------------------");
System.out.println("所有方法:");
Method[]mods=aclass.getDeclaredMethods();
for(Method b:mods)System.out.println(b);
System.out.println("------------------------------------------------");
System.out.println("所有成员变量:");
Field[] flds=aclass.getDeclaredFields();
for(Field b:flds)System.out.println(b);

2、类加载步骤

        类的加载分为三个步骤:加载、连接、初始化

        加载:类加载器完成,类加载器由JVM提供

        连接:类的二进制数据合并到JRE中

        初始化:对类变量进行初始化,JVM初始化一个类的步骤:

(1)若类没有被加载和连接,则先加载和连接该类(按顺序执行)

(2)若类的直接父类没有初始化,则先初始化直接父类(加载也要保证继承关系)

(3)若类中有初始化语句,则系统直接执行初始化语句

3、类加载器

        JVM启动后,会形成三个类加载器组成的初始类加载器层次结构:根类加载器、扩展类加载器、系统类加载器。

        类加载机制主要有三种:全盘负责、父类委托、缓存机制。

三、反射

        反射机制主要提供了几个功能:判断任意对象所属类、运行构造任意类的对象、获取任意类的成员变量和方法,调用任意对象的方法,生成动态代理。

        反射是Java被视为动态语言的一个关键性质

        为此,java.lang.reflect中提供了Constructor、Field、Method类,分别用于描述类的构造方法、属性和方法。

        其中Executable类派生出Constructor和Method两个子类。

        记住几个关键字:

(1)getParameters或者getParameterTypes        获取形参(第一个用在Executable类中)

(2)getName        获取(构造)方法名或属性名

(3)getModifiers        返回修饰符标识(如public)

(4)getReturnType        返回当前方法返回类型

四、枚举

1、Enum类方法

        枚举类定义方法:

public enum SeasonEnum
{SPRING,SUMMER,AUTUMN,WINTER
}

        枚举类与普通类的区别:

(1)枚举类可以实现一个或多个接口

(2)使用enum定义的非抽象的枚举类默认会使用final修饰

(3)枚举类的构造方法只能使用private访问修饰

(4)枚举类所有实例必须在枚举类的类体第一行显式列出

 

        枚举类型的常用方法:

        返回枚举实例:

        获取枚举有关信息:

        注意,在使用equals对两个枚举值进行比较时,也可以使用"=="。 

        compareTo函数,例如s1.compareTo(s2),当s1的序号小于s2时,返回-1,大于s2时,返回1,取等时,返回0。

        代码实例:

public class enumdemo {public static void main(String[] args){System.out.println(Season.spring);System.out.println(Season.spring.ordinal());    //返回索引System.out.println(Season.spring.toString());   //一般用于重写,默认返回实例System.out.println(Season.valueOf("spring"));   //返回实例for(Season a:Season.values())                       //遍历实例System.out.println(a);}enum Season{spring,summer,autumn,winter;}
}

2、改写Enum类 

        改写Enum类,在原枚举后添加括号项,并改写toString方法,此时,输出实例都只会返回括号内的春、夏、秋、冬。

public class enumdemo {public static void main(String[] args){System.out.println(Season.spring);                //调用toString方法System.out.println(Season.spring.ordinal());        System.out.println(Season.spring.toString());     //返回this.nameSystem.out.println(Season.valueOf("spring"));     //返回this.namefor(Season a:Season.values())                       System.out.println(a);                    //返回this.name}enum Season{spring("春"),summer("夏"),autumn("秋"),winter("冬");private String name;Season(String name){this.name=name;}public String toString(){return this.name;}}
}

五、注解、国际化

        java.lang包中包含5个基本注解:

(1)@Override:限定重写父类的方法

(2)@Deprecated:标示某个元素已过时

(3)@SuppressWarnings:抑制编译警告的发布

(4)@SafeVarargs:抑制“堆污染”警告

(5)@FunctionInterface:指定否个接口必须是函数式接口

        在Java中实现国际化使用的是Locale类。

六、接口的默认方法和静态方法

        在Java8中开始允许接口中定义默认方法、静态方法。

        默认方法必须使用default来修饰,静态方法使用static来修饰,区别于接口中的普通方法只能用public abstract修饰,作为抽象方法,这两者必须有方法体的实现。

        默认方法,不能通过接口来访问,只能通过接口的实现类的实例来访问。

        静态方法,可以通过接口名进行访问,也可以通过接口的实现类的实例进行访问。

七、Lambda规范

        Lambda表达式是Java8的新特性之一,实现方式:

        (参数名)->{ 方法体 }

例如:

       (x)-> {++x}

        (int x,int y)-> { System.out.println(x+y); return x+y; }

        利用Lambda方法实现遍历:

ArrayList<Integer> list=new ArrayList<>();
list.add(1);
list.add(2);
list.add(3);
list.forEach((a)->System.out.println(a));//也可以用两个冒号替代箭头
list.forEach(System.out::println);

 

  参考书籍:《Java 8 基础应用与开发》QST青软实训编 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/299539.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

宝塔mysql本地服务器状态异常如何解决

今天安装宝塔的时候突然遇到的问题 来吧 直接上bug图 答案&#xff1a;修改Mysql数据库密码

(10)Linux冯诺依曼结构操作系统的再次理解

&#x1f4ad; 前言&#xff1a;本章我们首先会明确冯诺依曼体系结构的概念&#xff0c;旨在帮助大家理解体系结构在硬件角度去理解数据流走向的问题。理解完之后我们再去谈操作系统、更多有关操作系统的细节&#xff0c;着重谈谈操作系统概念与定位、操作系统是如何去做管理的…

更改默认安装位置到其他盘

1 同时按住Win R键&#xff0c;出现如下界面&#xff0c;在输入框中输入regedit&#xff0c;点击确定。 2 此时会进入到注册表编辑器界面&#xff0c;按如下路径选择&#xff1a;计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 将所有默认路径&#xf…

中国信通院「星熠」案例公布,个推消息推送获评绿色SDK产品优秀案例

12月22日&#xff0c;由中国信息通信研究院安全研究所主办、大数据应用与安全创新实验室承办的“数据安全共同体计划成员大会&#xff08;2023&#xff09;”在京举行。每日互动&#xff08;个推&#xff09;作为“数据安全共同体计划”的联合发起单位及首批成员单位受邀出席大…

Kali Linux—借助 SET+MSF 进行网络钓鱼、生成木马、获主机shell、权限提升、远程监控、钓鱼邮件等完整渗透测试(一)

社会工程学—世界头号黑客凯文米特尼克在《欺骗的艺术》中曾提到&#xff0c;这是一种通过对受害者心理弱点、本能反应、好奇心、信任、贪婪等心理陷阱进行诸如欺骗、伤害等危害手段。 SET最常用的攻击方法有&#xff1a;用恶意附件对目标进行 E-mail 钓鱼攻击、Java Applet攻…

饥荒Mod 开发(二三):显示物品栏详细信息

饥荒Mod 开发(二二)&#xff1a;显示物品信息 源码 前一篇介绍了如何获取 鼠标悬浮物品的信息&#xff0c;这一片介绍如何获取 物品栏的详细信息。 拦截 inventorybar 和 itemtile等设置字符串方法 在modmain.lua 文件中放入下面代码即可实现鼠标悬浮到 物品栏显示物品详细信…

网络编程套接字socket

哈哈哈&#xff0c;之前的保存成草稿忘了发 目录 一 . 先回顾一下网络初始中的相关概念&#xff1a; 1.网络通信&#xff1a; 2.局域网&#xff1a; 3.广域网&#xff1a; 4.IP地址&#xff1a; 5.端口&#xff1a; 概念 格式 6.协议&#xff1a; 7.五元组&#xff1a; 8.分层…

量子密码学简介

量子密码学&#xff08;英语&#xff1a;Quantum cryptography&#xff09;泛指利用量子力学的特性来加密的科学。量子密码学最著名的例子是量子密钥分发&#xff0c;而量子密钥分发提供了通信两方安全传递密钥的方法&#xff0c;且该方法的安全性可被信息论所证明。目前所使用…

图灵日记之java奇妙历险记--输入输出方法数组

目录 输入输出输出到控制台从键盘输入使用 Scanner 读取字符串/整数/浮点数使用 Scanner 循环读取 猜数字方法方法定义方法调用的执行过程实参和形参的关系(重要)方法重载 数组数组的创建数组的初始化动态初始化静态初始化 数组的使用元素访问遍历数组 数组是引用类型null数组应…

卷积神经网络基础与补充

参考自 up主的b站链接&#xff1a;霹雳吧啦Wz的个人空间-霹雳吧啦Wz个人主页-哔哩哔哩视频这位大佬的博客 https://blog.csdn.net/m0_37867091?typeblog CNN的历史发展&#xff1a; 这一点老师上课的时候也有讲到&#xff0c;BP的出现对CNN的发展至关重要 卷积的特性&#x…

CEC2013(python):六种算法(RFO、PSO、CSO、WOA、DBO、ABC)求解CEC2013

一、六种算法简介 1、红狐优化算法RFO 2、粒子群优化算法PSO 3、鸡群优化算法CSO 4、鲸鱼优化算法WOA 5、蜣螂优化算法DBO 6、人工蜂群算法 &#xff08;Artificial Bee Colony Algorithm, ABC&#xff09; 二、6种算法求解CEC2013 &#xff08;1&#xff09;CEC2013简…

短剧分销系统:月入百w的新模式

随着我国短剧的高速发展&#xff0c;越来越多的人进入到了短剧影视行业。本文旨在介绍短剧市场的发展前景以及短剧分销系统的设计和开发。 一、短剧发展背景 短剧具有时长短、剧情紧凑、节奏快、剧情新颖等特点&#xff0c;满足了国内观众的碎片化时间&#xff0c;在当下短视频…