java 一些容易忽视的小点-类和对象
构造器
通过new关键字调用
构造器虽然有返回值,但是不能定义返回值类型(返回值的类型肯定是本类),不能在构造器里使用return返回某个值。
构造器是有权限的,也就是可以添加public,也可以添加protect 。。。
使用this关键字调用重载的构造方法,避免相同的初始化代码。但只能在构造方法中用,并且必须位于构造方法的第一句
this不能用于static方法中
如果我们没有定义构造器,则编译器会自动定义一个无参的构造函数。如果已定义则编译器不会自动添加
构造器的方法名必须和类名一致
static静态初始化块执行顺序
上溯到Object类,先执行Object的静态初始化块,再向下执行子类的静态初始化块,直到我们的类的静态初始化块为止
构造方法执行顺序和上面顺序一样
子类可以重写(覆盖)继承自父类的方法,即方法名和参数列表与父类的方法相同,但方法的实现不同。当子类对象的重写方法被调用时(无论是通过子类的引用调用还是通过父类的引用调用),运行的是子类的重写后的版本
垃圾回收
程序员无权调用垃圾回收器
程序员可以调用System.gc(),该方法只是通知JVM,并不是运行垃圾回收器。尽量少用,会申请启动Full GC,成本高,影响系统性能
- finalize方法,是Java提供给程序员用来释放对象或资源的方法,但是尽量少用
- 对象空间的释放:将对象赋值null即可。垃圾回收器将负责回收所有”不可达”对象的内存空间
- 对象分为三种状态:年轻代、年老代、持久代。JVM将堆内存划分为 Eden、Survivor 和 Tenured/Old 空间
- 垃圾回收过程
- 新创建的对象,绝大多数都会存储在Eden中,
当Eden满了(达到一定比例)不能创建新对象,则触发垃圾回收(GC),将无用对象清理掉,然后剩余对象复制到某个Survivor中,如S1,同时清空Eden区
当Eden区再次满了,会将S1中的不能清空的对象存到另外一个Survivor中,如S2,同时将S1区中的不能清空的对象,也复制到S2中,保证Eden和S1,均被清空
- 重复多次(默认15次)Survivor中没有被清理的对象,则会复制到老年代Old(Tenured)区中
- 当Old区满了,则会触发一个一次完整地垃圾回收(FullGC),之前新生代的垃圾回收称为(minorGC)
内存管理
- 内存泄露
- 创建大量无用对象,如使用String拼接字符,而不是使用StringBuffer
- 静态集合类的使用
- 各种连接对象(IO流对象、数据库连接对象、网络连接对象)未关闭
- 监听器的使用
package
两个要点:
1. 通常是类的第一句非注释性语句。
2. 包名:域名倒着写即可,再加上模块名,便于内部管理类
写项目时都要加包,不要使用默认包
com.AWT和com.AWT.Button,这两个包没有包含关系,是两个完全独立的包,只是逻辑上看起来后者是前者的一部分
- Java会默认导入java.lang包下所有的类,因此这些类我们可以直接使用
- 静态导入(static import)用于导入指定类的静态属性
import static java.lang.Math.*;//导入Math类的所有静态属性
- 如果导入两个同名的类,只能用包名+类名来显示调用相关类
java.util.Date date = new java.util.Date();
方法(函数)
- void返回类型是有return 的,不过是系统隐式的添加
java 一些容易忽视的小点-类和对象相关推荐
- java飞行棋项目_java小项目 类与 对象 骑士飞行棋代码
/**主体方法 import java.util.Random; import java.util.Scanner; public class Game { public Map map; Scann ...
- java写一个外网访问的接口_【JAVA基础】一个案例搞懂类、对象、重载、封装、继承、多态、覆盖、抽象和接口概念及区别(中篇)...
0 前言 初学JAVA时,总会对一些概念一知半解,相互混淆,不明其设计的用意,如类.对象.重载.封装.继承.多态.覆盖.抽象类.接口概念.为便于理解和巩固,本文将基于一个案例及其变形,展现各个概念的定 ...
- 反射创建对象_如何应用Java反射技术灵活地创建程序类的对象实例
软件项目实训及课程设计指导--如何应用Java反射技术灵活地创建程序类的对象实例 1.如何应用属性配置文件实现对系统中的配置信息进行读写操作 Java中的属性配置文件主要可以作为软件应用系统及项目的配 ...
- 面试轻松讲清楚 Java 面向对象的问题与知识(类与对象,封装,继承,多态,接口,内部类...)
写在最前面 这个项目是从20年末就立好的 flag,经过几年的学习,回过头再去看很多知识点又有新的理解.所以趁着找实习的准备,结合以前的学习储备,创建一个主要针对应届生和初学者的 Java 开源知识项 ...
- JAVA基础-U7 面向对象编程(基础部分)-类与对象
类与对象(OOP) 快速入门 类是抽象的,概念的,代表一类事物.即它是数据类型 对象是具体的,实际的,代表一个具体事物.即它是实例 类是对象的模版,对象是类的一个个体,对应一个实例 养猫问题: 张老太 ...
- java客户姓名添加和查找_java类与对象 演练 客户姓名添加与查看
java类与对象 演练 客户姓名添加与查看 java类与对象 演练 客户姓名添加与查看 https://www.ixigua.com/6870483106223096327?logTag=_YUmIb ...
- 《Java程序设计》实验指导——项目3 类与对象
项目3 类与对象 实验目的 实验性质 实验内容 实验目的 掌握Java类的结构.类的定义.方法和属性的定义以及对象的实现:掌握类及其成员修饰符的使用:掌握构造函数的使用:方法的参数传递和返回值的用法: ...
- JAVA基础语法:函数(方法)、类和对象
文章目录 函数 static修饰符 类和对象 了解其他JAVA 常用API和算法点这里 >> https://blog.csdn.net/GD_ONE/article/details/10 ...
- java //d+_Java语言程序设计D实验——类与对象实验
Java语言程序设计D实验--类与对象实验 一.实验内容描述(问题域描述) [实验题目]类与对象 [实验目的]使用类来封装对象的属性和功能:掌握类变量与实例变量,以及类方法与实例方法的区别:掌握使用p ...
最新文章
- 应用丨其实,你每天都生活在人工智能中
- 清华大学魏少军教授:中国发展芯片瓶颈在哪里?
- 关于更新系统后CocoaPods不能使用的问题
- 返回顶部小火箭(仿电脑管家)
- iOS视图控制器之间delegate传值教程
- 搞定使用MySQL导入外部的SQL文件执行
- 5.FreeRTOS学习笔记- 互斥量
- Python使用Apriori算法查找关系密切的演员组合
- 谷歌发布基于浏览器的 Spectre 攻击的 PoC exploit
- Bootstrap Paginator 分页插件参数介绍及使用
- mysql 查询的关键词的执行顺序
- 作为一名投资人,我经常会问创业者 8 个问题
- mac 更新系统时间
- 【docker】虚拟化和docker容器概念
- LeetCode:逆波兰式;
- 程序员转行算法工程师-四个月总结
- P4学习——p4runtime
- 单元格等于计算机日期,《excel表格怎样自动填写日期》 Excel单元格中自动获取当前日期与时间...
- Align before Fuse: Vision and Language Representation Learning with Momentum Distillation
- ECMAScript(ES6)
热门文章
- c#winform演练 ktv项目 实现播放完了一曲自动播放下一曲的功能
- 吃货阶段03 需求 实现我要下单的功能 0927
- 草稿 前端开发 代码的编写习惯 缩进的意义 HTML的格式
- Laravel 发送邮件报错的解决方案:PHP Warning: stream_socket_enable_crypto(): SSL operation failed with code 1.
- linux 使用命令直接查看带单位的文件大小
- Java CAS 和ABA问题
- Eclipse InstaSearch搜索词法 (很多并不支持)
- Windows2003屏蔽IP
- IAAS云计算产品畅想-云主机产品内涵
- 浅谈Node.js(概念、安装、入门例子)