构造方法

代码块在类中的执行顺序

给你一囗甜甜゛ 提交于 2019-11-26 17:10:55
一、什么是代码块   在Java中,使用{}括起来的代码被称为代码块。根据所处位置不同,分为局部代码块,静态代码块和构造代码块 局部代码块:在方法中出现;限定变量生命周期,及早释放,提高内存利用率 构造代码块 (初始化块):在类中方法外出现;多个构造方法方法中相同的代码存放到一起,每次调用构造都执行,并且在构造方法前执行 静态代码块:在类中方法外出现,并加上static修饰;用于给类进行初始化,在加载的时候就执行,并且只执行一次。 一般用于加载驱动 1 package Day01; 2 3 public class Test1 { 4 5 public static void main(String[] args) { 6 Zi zi = new Zi(); 7 } 8 } 9 10 class Fu{ 11 static { 12 System.out.println("父类静态代码块"); 13 } 14 { 15 System.out.println("父类构造代码块"); 16 } 17 public Fu(){ 18 System.out.println("父类构造方法"); 19 } 20 } 21 22 class Zi extends Fu{ 23 static { 24 System.out.println("子类静态代码块"); 25 } 26 public

final总结

混江龙づ霸主 提交于 2019-11-26 17:09:30
final 1.类 不含任何子类,有父类(太监类);其中方法不能覆盖重写 2.方法 最终方法,不能被覆盖重写 3.局部变量 赋值后不能改变,只能赋一次值 4.成员变量 <1>由于成员变量有默认值,故定义成员变量为final时必须手动赋值,不会再给默认值 <2>可采用直接赋值和构造方法间接赋值 <3>用构造方法间接赋值,每个重载的构造方法都要对该变量赋值,相应的set方法也失去作用注意:1.类,方法中不能同时有abstract和final关键字(矛盾)2.赋值后不能改变 对基本类型来说,是指变量的数值不能改变 对引用类型来说,是指变量的地址值不可改变 来源: https://www.cnblogs.com/fur-mat/p/11324609.html

JAVA奇技淫巧简化代码之lombok

情到浓时终转凉″ 提交于 2019-11-26 16:46:20
背景 最近在做一个小功能,又不想在原有体态臃肿的项目中追加,为了调试方便并且可以快速开发就采用了springboot。由于使用了JPA,建了几个类,然后通过IDE去生成其属性的构造器、getter、setter、equals、hashcode、toString方法,那么Java中有没有一种方式能够避免这种重复的劳动呢?答案是有,想着前几天听说有一款简化神奇Lombok,特此拿来玩玩记录一下。 简介 Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。 官方地址:https://projectlombok.org/ github地址:https://github.com/rzwitserloot/lombok Lombok注解 下面对Lombok的简单使用方法做一下总结: @NotNull 作用在方法参数上的注解,用于自动生成空值参数检查。 @Cleanup 作用在局部变量上,在作用域结束时会自动调用close方法释放资源。 @Getter 作用在字段上,会自动生成字段的Getter;作用在类上,会自动生成该类所有非静态字段的Getter,还能控制Getter的访问级别 @Setter 基本同上。 @ToString 类注解,自动生成类的toString方法,可以做一些定制

Java基础(一)

可紊 提交于 2019-11-26 14:53:24
面向对象和面向过程的区别 面向过程性能方面比面向对象高,维护,拓展,复用方面,面向对象的要高于面向过程(注重性能方面,用面向过程语言,比如单片机和嵌入式;面向对象有封装,继承,多态,设计低耦合系统) JAVA语言特点 (1) 面向对象(封装,继承,多态) (2) 平台无关性 (3) 可靠性 (4) 安全性 (5) 支持多线程(相对于C++方便,C++需要调用系统多线程来设计多线程功能操作) (6) 支持网络编程且很便捷 (7) 编译和解释并存 JVM,JDK和JRE (1)JVM: 运行Java字节码(.class文件)的虚拟机,具有跨平台性。(流程:.java文件->JDK的javac编译->.class文件->JVM识别操作->二进制可执行文件) (2)注意: .class->二进制执行文件,此过程中,JVM会一行一行的解释形成二进制机器码,不过解释方式效率过低,之后又引进了JIT编译器,效率补上了解释器的漏洞,因此称Java是编译与解释并存的语言 (3)JDK: 是SDK(软件开发工具)的一个子集,拥有JRE所有的一切,还有javac编译器和其他工具 (4)JRE: Java运行时环境,包括JVM(虚拟机),Java类库和Java命令 Java和C++的区别 (1) 都是面向对象,都可以完成封装,继承和多态 (2) Java不可以使用指针来访问内存,程序内存更加安全 (3)

Java基础(二)

偶尔善良 提交于 2019-11-26 14:53:24
静态方法调用非静态成员的非法性理解 静态方法在类没有实例化的时候就已经被分配内存真正存在的了;而非静态方法这时候在内存上是没有存在的,所以静态方法这时候调用非静态成员是根本调用不到的,称为非法。 Java中定义一个不做事且没有参数的构造方法的用处 java程序在执行子类的构造方法之前,如果没有用super()来调用父类的特定构造方法,则会默认调用父类没有参数的构造方法,这时候,父类只是定义了有参数的构造方法的话,就会报错,因为找不到没有参数的构造方法,解决方法就是在父类上定义一个不做事且没有参数的构造方法。 接口和抽象类的区别 (1) 接口方法默认是public且不可实现,而抽象类可以有非抽象方法 (2) 接口中除了static,final变量,不能有其他变量;而抽象类中不一定 (3) 一个类可以实现多个接口,但只能实现一个抽象类;接口本身可以通过extends拓展多个接口 (4) 接口方法默认修饰符public,抽象方法原本就是为了被重写,所以不能使用private (5) 从设计层面来看,抽象类是对类的抽象,是一种模板设计;接口是对行为的抽象。是一种行为的规范。 成员变量和局部变量区别 (1) 成员变量属于类,可以被public,private,static修饰;而局部变量属于方法,不能被访问限制符及static修饰 (2) 从内存的存储方式来看,若成员变量用static修饰

JDk的API助手的使用

丶灬走出姿态 提交于 2019-11-26 12:57:41
一、API帮助文档的使用   1、什么是API帮助文档     API是应用程序接口,而API帮助文档就是一本程序员的字典,是JDK提供给我们的一本使用说明书,我们在里面可以找到以及封装实现好的类和方法的功能与使用方法   2、如何使用API帮助文档     我们使用jdk帮助文档主要关注的有三点:包、构造方法、方法摘要     ①打开帮助文档,点击左上角的显示     ②点击索引,搜索自己要查的类名     ③敲击回车便可进入该类的详细介绍界面,查看包和构造方法         java.lang下的类不需要导包,其他需要。 (导包方法:在包名下面写import 包名)       点击构造方法后,我们可以找到他的构造器,根据这些我们就可以进行创建对象来使用为我们这个的类     在构造方法后面,紧接着就是方法摘要,在这里,我们首先要查看他们的功能,找到我们所需要的方法,然后查看参数列表以及返回值      点击对应的方法名,便可以看到这个方法的详细解释 来源: https://www.cnblogs.com/haoyujun135/p/11321346.html

面向对象与继承

百般思念 提交于 2019-11-26 12:49:21
1、编程的方式 2、面向对象的基本概念 3、类的基本概念 4、类的定义与调用——简单代码举例 注:建议类名的开头字母用大写,在Python中,类内的函数称作方法,类外的函数还是称作函数。 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu #类 classPerson: i =10#属性(变量) defeat(self):#方法(函数) print("eating...") pass #类的调用 a = Person() a.eat() #运行结果: eating... classPerson(): #对象属性 构造方法 在实例化对象时会自动调用 # 实例化的对象就具有name和age两个属性 #self是指当前的对象 self不是关键字可以被代替,但是习惯使用self指代当前对象 def__init__(self,name,age): # 通过构造方法声明了两个对象属性 #对象.name属性 = name参数 self.name = name self.age = age #声明一个类方法 defspeak(self): print("Hello,my name is %s,and I'm %d years old"%(self.name,self.age)) #创建实例对象 会触发构造方法

Java final关键字

风格不统一 提交于 2019-11-26 12:31:37
目录 Java final 关键字 1. 用来修饰一个类 2. 用来修饰一个方法 3.用来修饰一个局部变量 4. 用来修饰一个成员变量 Java final 关键字 final 关键字代表最终,不可变的。 常见的四种用法: 可以用来修饰一个类 可以用来修饰一个方法 还可以用来修饰一个局部变量 还可以用来修饰一个成员变量 1. 用来修饰一个类 格式: public final class 类名称(){ // ... } 含义:当前这个类不能有任何子类(太监类)。 注意事项: 一个类如果是final的,那么其中所有的成员方法都无法进行覆盖重写(因为没有儿子)。 2. 用来修饰一个方法 格式: public final 返回值类型 方法名称(参数列表){ // 方法体 } 含义:当final关键字用来修饰一个方法的时候,这个方法就是最终方法,也就是不能被覆盖重写。 注意事项: 对于类、方法来说,abstract关键字和final关键字不能同时使用,因为矛盾。 3.用来修饰一个局部变量 一旦使用final用来修饰局部变量,那么这个变量就不能进行修改。 有且仅有唯一的一次赋值。 一次赋值,终生不变 对于基本类型来说,不可变说的是变量当中 数据 不可改变。 对于引用类型来说,不可变说的是变量当中的 地址值 不可改变。 4. 用来修饰一个成员变量 对于成员变量来说,如果用final关键字修饰

9.接口和抽象类

让人想犯罪 __ 提交于 2019-11-26 12:09:40
抽象类: 包含抽象方法的类就是抽象类。通过abstract方法定义规范,然后要求子类必须定义具体实现。通过抽象类,我们就可以做到严格限制子类的设计,使子类之间更加通用。 特点如下: 抽象类可以包含属性,方法,构造方法。但是构造方法不能用new实例化,只能被用来被子类调用。 抽象类只能用来被继承 抽象方法必须被子类实现,或者子类是一个抽象类(如果子类是抽象类,那么该抽象类可以不覆盖抽象方法) 接口 [访问修饰符] interface 接口名 [extends 父接口1,父接口2…] { 常量定义; 方法定义; } 访问修饰符只能是public或者是默认 常量:接口中常量总是 public static final .不写也是 接口中的方法只能是 public abstract 不写也是 接口不能用于创建实例,但是接口可以用于声明引用变量类型(注意需要向下转型然后才可使用实现类的方法)。 PS:一个类实现了接口,必须实现接口中的左右方法,并且这些方法只能是public 当两个接口有同名的方法和常量被一个类实现会发生什么: 编译器会提示你让你确定到底使用的是哪一个接口的常量 JDK1.8之后接口中引入了默认方法和静态方法 默认方法可以继承,静态方法不可继承,只能用接口名进行调用。 既然已经有了接口,那么为什么还需要抽象类 抽象类当中可以存在非抽象的方法

类与对象、封装、构造方法

放肆的年华 提交于 2019-11-26 10:55:45
一、什么是面向对象   Java语言是一种面向对象的程序设计语言,而面向对象思想是一种程序设计思想,我们在面向对象思想的指引下, 使用Java语言去设计、开发计算机程序。 这里的对象泛指现实中一切事物,每种事物都具备自己的属性和行为。面 向对象思想就是在计算机程序设计过程中,参照现实中事物,将事物的属性特征、行为特征抽象出来,描述成计算 机事件的设计思想。 它区别于面向过程思想,强调的是通过调用对象的行为来实现功能,而不是自己一步一步的去 操作实现。 二、面向过程和面向对象的区别(以洗衣服为例) 面向过程:强调步骤 eg:把衣服脱下来-->找一个盆-->放点洗衣粉-->加点水-->浸泡10分钟-->揉一揉-->清洗衣服-->拧干-->晾 起来 面向对象:强调对象 eg:把衣服脱下来-->打开洗衣机-->把衣服放进去-->按下按钮-->拿出来-->晾起来 面向对象的特点:    a:是一种更符合我们思想习惯的思想   b:可以将复杂的事情简单化(洗衣服的整个过程)   c:将我们从执行者变成了指挥者(指挥洗衣机去洗衣服)   d:包含三大基本特征:封装、继承和多态   e:管理和维护对象之间的关系。 三、类和对象的区别?   类:是一组相关属性和行为的集合。可以看成是一类事物的模板,使用事物的属性特征和行为特征来描述该类事物     属性:就是该事物的状态信息。     行为