论坛
潜水/灌水快乐,沉淀知识,认识更多同行。
ToB圈子
加入IT圈,遇到更多同好之人。
朋友圈
看朋友圈动态,了解ToB世界。
ToB门户
了解全球最新的ToB事件
博客
Blog
排行榜
Ranklist
文库
业界最专业的IT文库,上传资料也可以赚钱
下载
分享
Share
导读
Guide
相册
Album
记录
Doing
搜索
本版
文章
帖子
ToB圈子
用户
免费入驻
产品入驻
解决方案入驻
公司入驻
案例入驻
登录
·
注册
只需一步,快速开始
账号登录
立即注册
找回密码
用户名
Email
自动登录
找回密码
密码
登录
立即注册
首页
找靠谱产品
找解决方案
找靠谱公司
找案例
找对的人
专家智库
悬赏任务
圈子
SAAS
ToB企服应用市场:ToB评测及商务社交产业平台
»
论坛
›
软件与程序人生
›
程序人生
›
步伐人生——Java中类、对象及方法的建议(1) ...
步伐人生——Java中类、对象及方法的建议(1)
魏晓东
金牌会员
|
7 天前
|
显示全部楼层
|
阅读模式
楼主
主题
824
|
帖子
824
|
积分
2472
引出
步伐人生——Java中类、对象及方法的建议(1)
类、对象及方法
建议31:在接口中不要存在实现代码
可以通过在接口中声明一个静态常量s,其值是一个匿名内部类的实例对象,可以实现接口中存在实现代码
建议32:静态变量肯定要先声明后赋值
也可以先利用后声明,因为静态变量是类初始化时首先被加载,JVM会去查找类中全部的静态声明,然后分配空间,分配到数据区(Data Area)的,它在内存中只有一个拷贝,不会被分配多次,注意这时间只是完成了地点空间的分配还没有赋值,之后JVM会根据类中静态赋值(包罗静态类赋值和静态块赋值)的先后顺序来实行,背面的操作都是地点稳固,值改变
建议33:不要覆写静态方法
一个实例对象有两个类型:
表面类型
和
实际类型
,表面类型是声明时的类型,实际类型是对象产生时的类型。对于非静态方法,它是根据对象的实际类型来实行的,即实行了覆写方法。而对于静态方法,首先
静态方法不依赖实例对象,通过类名访问
;其次,可以通过对象访问静态方法,如果通过对象访问,JVM则会通过对象的
表面类型查找
到静态方法的入口,继而实行
建议34:构造函数只管简化
通过new关键字天生对象时肯定会调用构造函数。子类实例化时,首先会初始化父类(注意这里是初始化,可不是天生父类对象),也就是初始化父类的变量,调用父类的构造函数,然后才会初始化子类的变量,调用子类本身的构造函数,最后天生一个实例对象。构造函数太复杂有可能造成,对象利用时还没完成初始化
建议35:制止在构造函数中初始化其他类
有可能造成不断的new新对象的死循环,直到栈内存被消耗完抛出StackOverflowError非常为止
建议36:利用构造代码块精炼步伐
四种类型的代码块:
**1、普通代码块:**在方法背面利用“{}”括起来的代码片断;
**2、静态代码块:**在类中利用static修饰,并利用“{}”括起来的代码片断;
**3、同步代码块:**利用synchronized关键字修饰,并利用“{}”括起来的代码片断,表示同一时间只能有一个县城进入到该方法;
**4、构造代码块:**在类中没有任何的前缀或后缀,并利用“{}”括起来的代码片断。编译器会把构造代码块插入到每个构造函数的最前端。
构造代码块的
两个特性
:1、在每个构造函数中都运行;2、在构造函数中它会首先运行
建议37:构造代码块会想你所想
编译器会把构造代码块插入到每一个构造函数中,有一个特殊情况:如果遇到this关键字(也就是构造函数调用自身其他的构造函数时)则不插入构造代码块。如果遇到super关键字,编译器会把构造代码块插入到super方法之后实行
建议38:利用静态内部类进步封装性
Java嵌套内分为两种:
1、静态内部类
;
2、内部类
;静态内部类两个优点:增强了类的封装性和进步了代码的可读性。静态内部类与普通内部类的
区别
:
1、静态内部类不持有外部类的引用
,在普通内部类中,我们可以直接访问外部类的属性、方法,即使是private类型也可以访问,这是因为内部类持有一个外部类的引用,可以自由访问。而静态内部类,则只可以访问外部类的静态方法和静态属性,其他则不能访问。
2、静态内部类不依赖外部类
,普通内部类与外部类之间是相互依赖的关系,内部类不能脱离外部类实例,同声同死,一起声明,一起被垃圾回收器回收。而静态内部类可以独立存在,即使外部类灭亡了;
3、普通内部类不能声明static的方法和变量
,注意这里说的是变量,常量(也就是final static修饰的属性)照旧可以的,而静态内部类形似外部类,没有任何限制
建议39:利用匿名类的构造函数
List l2 = new ArrayList(){}; //定义了一个继承于ArrayList的匿名类,只是没有任何的覆写方法而已
List l3 = new ArrayList(){{}}; //定义了一个继承于ArrayList的匿名类,并且包含一个初始化块,类似于构造代码块)
复制代码
建议40:匿名类的构造函数很特殊
匿名类初始化时直接调用了父类的同参数构造器,然后再调用本身的构造代码块
深入认识JVM
JVM内存分配,类加载
Java进阶(1)——JVM的内存分配 & 反射Class类的类对象 & 创建对象的几种方式 & 类加载(何时进入内存JVM)& 注解 & 反射+注解的案例
创建对象的4种方法总结
Java进阶(4)——结合类加载JVM的过程理解创建对象的几种方式:new,反射Class,克隆clone(拷贝),序列化反序列化
垃圾回收GC
Java进阶(垃圾回收GC)——理论篇:JVM内存模子 & 垃圾回收定位清除算法 & JVM中的垃圾回收器
简介:本篇博客介绍JVM的内存模子,对比了1.7和1.8的内存模子的厘革;介绍了垃圾回收的语言发展;论述了定位垃圾的方法,引用计数法和可达性分析发以及垃圾清除算法;然后介绍了Java中的垃圾回收器,由串行、到并行再到并发,最后到G1的演变;最后给出了垃圾回收器的对比和利用指引。
JVM调优,Arthas利用
Java进阶(JVM调优)——阿里云的Arthas的利用 & 安装和利用 & 死锁查找案例,重新加载案例,慢调用分析
Java进阶(JVM调优)——JVM调优参数 & JDK自带工具利用 & 内存溢出和死锁问题案例 & GC垃圾回收
认识多线程
创建多线程方法+相识线程池
Java进阶(5)——创建多线程的方法extends Thread和implements Runnable的对比 & 线程池及常用的线程池
多线程下-1非原子性问题即解决
Java进阶(6)——抢购问题中的数据不安全(非原子性问题)& Java中的synchronize和ReentrantLock锁利用 & 死锁及其产生的条件
再论线程,创建、生命周期
Java进阶(再论线程)——线程的4种创建方式 & 线程的生命周期 & 线程的3大特性 & 集合中的线程安全问题
紧张内容:
1.线程创建的方式,继承Thread类,实现Runable接口,实现Callable接口,接纳线程池;
2.线程生命周期: join():运行竣事再下一个, yield():暂时让出cpu的利用权,deamon():守护线程,最后竣事,sleep():如果有锁,不会让出;
3.线程3大特性,原子性,可见性,有序性;
4.list集合中线程安全问题,hash算法问题;
总结
步伐人生——Java中类、对象及方法的建议
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
本帖子中包含更多资源
您需要
登录
才可以下载或查看,没有账号?
立即注册
x
回复
使用道具
举报
0 个回复
倒序浏览
返回列表
快速回复
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
or
立即注册
本版积分规则
发表回复
回帖并转播
回帖后跳转到最后一页
发新帖
回复
魏晓东
金牌会员
这个人很懒什么都没写!
楼主热帖
基础常用dos命令
Unity技术手册 - Shader实现灵魂状态 ...
云原生之旅 - 14)遵循 GitOps 实践的 ...
Vulnhub靶机-Al-Web-1
火山引擎 DataLeap 计算治理自动化解决 ...
.NET主流的几款重量级 ORM框架 ...
vuluhub_jangow-01-1.0.1
2022年总结-博客篇
Android studio连接MySQL并完成简单的 ...
数仓实践丨常量标量子查询做全连接导致 ...
标签云
挺好的
服务器
快速回复
返回顶部
返回列表