构造方法

java基础(32):类加载、反射

橙三吉。 提交于 2019-12-01 08:28:56
1. 类加载器 1.1 类的加载 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化。 加载   就是指将class文件读入内存,并为之创建一个Class对象。   任何类被使用时系统都会建立一个Class对象 连接   验证 是否有正确的内部结构,并和其他类协调一致   准备 负责为类的静态成员分配内存,并设置默认初始化值   解析 将类的二进制数据中的符号引用替换为直接引用 初始化   就是我们以前讲过的初始化步骤 1.2 类初始化时机 1. 创建类的实例 2. 类的静态变量,或者为静态变量赋值 3. 类的静态方法 4. 使用反射方式来强制创建某个类或接口对应的java.lang.Class对象 5. 初始化某个类的子类 6. 直接使用java.exe命令来运行某个主类 1.3 类加载器 负责将.class文件加载到内在中,并为之生成对应的Class对象。 虽然我们不需要关心类加载机制,但是了解这个机制我们就能更好的理解程序的运行 1.4 类加载器的组成 Bootstrap ClassLoader 根类加载器   也被称为引导类加载器,负责Java核心类的加载   比如System,String等。在JDK中JRE的lib目录下rt.jar文件中 Extension ClassLoader 扩展类加载器  

Java基础学习(九) - File类和IO流

自闭症网瘾萝莉.ら 提交于 2019-12-01 08:21:58
1.File类 java.io.File 类是文件和目录路径名的抽象表示,主要用于文件和目录的创建、查找和删除等操作 。 构造方法: public File(String pathname) :通过将给定的 路径名字符串 转换为抽象路径名来创建新的 File 实例。 public File(String parent, String child) :从 父路径名字符串和子路径名字符串 创建新的 File 实例。 public File(File parent, String child) :从 父抽象路径名和子路径名字符串 创建新的 File 实例。 常用方法: public String getAbsolutePath() :返回此 File 的绝对路径名字符串。 public String getPath() :将此 File 转换为路径名字符串。 public String getName() :返回由此 File 表示的文件或目录的名称。 public long length() :返回由此 File 表示的文件的长度。 public boolean exists() :此 File 表示的文件或目录是否实际存在。 public boolean isDirectory() :此 File 表示的是否为目录。 public boolean isFile() :此 File

java基础(31):网络通信协议、UDP、TCP

半城伤御伤魂 提交于 2019-12-01 08:20:00
1. 网络通信协议 通过计算机网络可以使多台计算机实现连接,位于同一个网络中的计算机在进行连接和通信时需要遵守一定的规则,这就好比在道路中行驶的汽车一定要遵守交通规则一样。在计算机网络中,这些连接和通信的规则被称为网络通信协议,它对数据的传输格式、传输速率、传输步骤等做了统一规定,通信双方必须同时遵守才能完成数据交换。 网络通信协议有很多种,目前应用最广泛的是 TCP/IP 协议 (Transmission Control Protocal/Internet Protoal 传输控制协议 / 英特网互联协议 ) ,它是一个 包括 TCP 协议和 IP 协议, UDP ( User Datagram Protocol )协议 和其它一些协议的协议组, 在学习具体协议之前首先了解一下 TCP/IP 协议组的层次结构。 在进行数据传输时,要求发送的数据与收到的数据完全一样,这时,就需要在原有的数据上添加很多信息,以保证数据在传输过程中数据格式完全一致。 TCP/IP 协议的层次结构比较简单,共分为四层,如图所示。 上图中, TCP/IP 协议中的四层分别是应用层、传输层、网络层和链路层,每层分别负责不同的通信功能,接下来针对这四层进行详细地讲解。 链路层: 链路层 是 用于定义 物理传输通道, 通常是对某些网络连接设备的驱动协议,例如针对 光纤、 网线 提供的驱动。 网络层:网络层

Java连载39-构造方法详解

蹲街弑〆低调 提交于 2019-12-01 07:28:01
​一、 1.多行注释:CTRL + shift + / 2.当一个类中没有定义任何构造方法的话,系统默认给该类提供一个无参数的构造方法,这个构造方法被称为缺省构造器。 public class D39_ { public static void main(String[] args) { new User(); } } 编译通过,我们事先定义了一个类User,里面没有构造方法。 3.当一个类显式的将构造方法定义出来了,那么系统则不再默认提供缺省的构造器。建议开发中,手动的为当前类提供无参数的构造方法,因为无参数构造方法太常用了。 4.构造方法支持重载机制,在一个类中编写多个构造方法,这多个构造方法显然已经构成了方法重载机制。 5.构造方法的作用: (1)创建对象 (2)创建对象的同时,初始化实例变量的内存空间 成员变量之实例变量,属于对象级别的变量,这种变量必须先有对象才能有实例变量。实例变量没有手动赋值的时候,系统默认赋值,那么这个西永默认赋值实在什么时候完成的呢​? 是在加载类的​时候吗? 不是,因为类加载的时候只加载了代码片段,还没有来得及创建对象,所以此时实例变量没有初始化。实际上,实力变量的内存空间实在构造方法执行的过程中完成开辟的,完成初始化的,系统在默认赋值的时候,也是在构造方法执行的过程中完成​的赋值。 实例变量默认值: byte/short/int/long都是0

Java面试基础

一笑奈何 提交于 2019-12-01 07:27:35
1.面向对象和面向过程的区别? 面向过程:面向过程性能比面向对象高 面向对象:面向对象易维护、易复用、易扩展 2.Java 语言有哪些特点? 简单易学、面向对象(封装,继承,多态)、平台无关性( Java 虚拟机实现平台无关性)、可靠性、安全性、支持多线程、支持网络编程并且很方便、编译与解释并存。 3.JDK和JRE? JDK:Java Development Kit,它是功能齐全的Java SDK。它拥有JRE所拥有的一切,还有编译器(javac)和工具(如javadoc和jdb)。它能够创建和编译程序。 JRE 是 Java运行时环境。它是运行已编译 Java 程序所需的所有内容的集合,包括 Java虚拟机(JVM),Java类库,java命令和其他的一些基础构件。但是,它不能用于创建新程序。 4.Java和C++的区别? 都是面向对象的语言,都支持封装、继承和多态 Java 不提供指针来直接访问内存,程序内存更加安全 Java 的类是单继承的,C++ 支持多重继承;虽然 Java 的类不可以多继承,但是接口可以多继承。 Java 有自动内存管理机制,不需要程序员手动释放无用内存。 5.Java 面向对象三大特性 封装 继承 多态 封装:利用抽象数据类型将数据和操作数据的方法绑定起来,数据被保护在抽象数据类型的内部,尽可能地隐藏内部的细节,对数据的访问只能通过已定义的接口。

第九次作业

偶尔善良 提交于 2019-12-01 07:23:14
利用接口和接口回调,实现简单工厂模式,当输入不同的字符,代表相应图形时,利用工厂类获得图形对象,再计算以该图形为底的柱体体积。 Shape类(图形类) /**创建一个图形类接口,一个求面积抽象方法*/ package ccut.li;public interface Shape { abstract double getArea();} yuanxing类(圆形类) /**创建一个圆类继承shape接口,定义半径r,PI,圆的构造方法和重写求面积方法*/ package ccut.li;public class yuanxing implements Shape{ double r; final double PI=3.14; yuanxing(double r){ this.r=r; } public double getArea(){ return r*r*PI; }} zhengfangxing类(正方形类) /**创建一个正方形类继承shape接口,定义边长a,正方形构造方法和重写求面积方法*/ package ccut.li;public class zhengfangxing implements Shape{ double a; public double getArea(){ return a*a; } zhengfangxing(double a){ this.a

Java 构造方法

ぐ巨炮叔叔 提交于 2019-12-01 07:21:42
类和对象是Java面对对象的两个 核心 概念 而构造方法的主要作用是在创建对象时执行一些初始化操作例如给成员属性赋值等; person()就是person构造方法 来源: https://www.cnblogs.com/wangzhenhao/p/11668180.html

Java安全初学之反射

こ雲淡風輕ζ 提交于 2019-12-01 06:09:27
前言: 复现fastjson的时候深深意识到了需要好好学习一下Java和Java安全,激情的学习了一番java安全中重要的几部分:反序列化、反射、rmi、动态代理,从反射开始做个总结。 反射:java虚拟机在运行时获取获取类的结构信息并调用其方法和属性 也就是说,反射机制和普通方式最大的区别是,普通方式(也就是我们通过正常的new对象或者import类)需要在编译时就找到和检查类的.class文件,而反射机制是在运行时做这一步骤。 反射机制用到的类: Class:获取类的Class对象 Constructor:通过指定参数创建对象 Method:获取类的方法 Filed: 获取类的属性 Array:动态创建数组,访问数组元素 反射代码举例: import java.lang.Class; import java.lang.reflect.Constructor; import java.lang.reflect.Method; //构造方法为私有方法的反射调用 //类为私有 无法通过类newInstance对象 故通过getDeclaredConstructor获取私有构造方法再通过构造方法newInstance实例对象 public class reflectTest1 { public static void main(String args[]){ try { Class

Java设计模式:Singleton(单例)模式

帅比萌擦擦* 提交于 2019-12-01 06:09:18
概念定义 Singleton(单例)模式是指在程序运行期间, 某些类只实例化一次,创建一个全局唯一对象。因此,单例类只能有一个实例,且必须自己创建自己的这个唯一实例,并对外提供访问该实例的方式。 单例模式主要是为了避免创建多个实例造成的资源浪费,以及多个实例多次调用容易导致结果出现不一致等问题。例如,一个系统只能有一个窗口管理器或文件系统,一个程序只需要一份全局配置信息。 应用场景 资源共享的情况下,避免由于资源操作时导致的性能或损耗等。如缓存、日志对象、应用配置。 控制资源的情况下,方便资源之间的互相通信。如数据库连接池、线程池等。 单例实现 根据加载的时机可以分为 即时加载 和 延时加载 两种模式。 即时加载 在单例类被加载时就创建单例的方式,称为即时加载单例(也称 饿汉式 )。 枚举类单例(推荐方式) 示例代码如下: public enum EnumSingleton { INSTANCE; public static EnumSingleton getInstance() { // 照顾开发者旧有习惯 return INSTANCE; } // 外部可调用EnumSingleton.INSTANCE.doSomething()或EnumSingleton.getInstance().doSomething() public void doSomething() {

面向对象

邮差的信 提交于 2019-12-01 05:10:21
面向对象笔记总结,随时查询 面向对象 类和对象 类是抽象的,是一个模板,确定对象将会拥有的特征(属性)和行为(方法) 对象是实体,是类的实例表现 属性和方法 属性:对象具有的各种静态特征 方法:对象具有的各种动态行为 命名 包的命名为 域名小写字母的倒序 加上 功能名 类名首字母要大写 实例化对象 12345678 public class { String name; public void run() { System.out.println("run"); }} 12345 public static void main(String[] args) { Cat one = new Cat(); // 声明并实例化对象 System.out.println(one.name); // 获取类中的对象 one.run(); // 获取类中的方法} new 每次new都会开辟一个新空间,不会相互影响 123 Cat one = new Cat(); Cat two = one; // 此时one和two都指向通过一个堆内地址,会相互影响 构造方法 构造方法与类同名但是没有返回值 在对象实例化的时候调用 一个类中可以有多个构造方法 无参构造方法 不写构造方法,系统默认创建一个无参构造方法,自己创建带参构造方法,系统将再自动创建无参构造方法,需要自己手动创建 带参构造方法