JAVA笔记[2]20200701

JAVA笔记【2】

  • 对象与类
  • 继承

对象与类

  • LocalDate类;
    • static LocalTime now()
      构造一个表示当前日期的对象
    • static LocalTime of(int year,int month,int day)
      构造一个表示给定日期的对象
    • int getYear()
    • int getMonthValue()
    • int getDayOfMonth()
      得到当前日期的年、月和日
    • DayOfWeek getDayOfWeek()
      得到当前日期是星期几,作为DayOfWeek类的一个实例返回。调用getValue来得到1~7之间的一个数,表示这是星期几,1表示星期一
    • LocalDate plusDays(int n)
    • LocalDate minusDays(int n)
      生成当前日期之后或之前n天的日期。

在一个源文件中,只能有一个公有类,可以有任意数量的非公有类
注意不要编写返回引用可变对象的访问器方法。这样可以调用访问器改变对象的私有成员。如果需要返回一个可变对象的引用,应该首先对它进行克隆(clone)。对象clone是指存放在另一个位置上的对象副本。

  • final实例域:可以将实例域定义为final,构建对象是必须初始化这样的域。必须确保在每一个构造器执行之后,这个域的值被设置,并且在后面的操作中,不能再修改。final修饰符大都用于基本类型域,或不可变类的域,对于可变的类,表示变量中的对象引用不会再指向其他的对象,但是对象可以更改。
  • 静态域与静态方法:
    • 静态域:属于类,不属于任何独立的对象,实例共享
    • 静态常量:static final
    • 静态方法:静态方法是没有this参数的方法,静态方法只能访问自身类中的静态域。两种使用情况:
      1.一个方法不需要访问对象状态,其所需参数都是通过显示参数提供
      2.一个方法只需要访问类的静态域
  • 工厂方法:类似LocalDate的LocalDate.now和LocalDate.of方法
  • 重载:返回类型不是方法签名的一部分,不能有两个名字相同、参数类型也相同却返回不同类型值的方法。
  • this()调用同一个类的另一个构造器。
  • 文档注释:
    • 类注释
    • 方法注释
    • 域注释
    • 通用注释
    • 包与概述注释
  • 类设计技巧:
    • 一定要保证数据私有
    • 一定要对数据初始化
    • 不要在类中使用过多的基本类型
    • 不是所有的域都需要独立的域访问器和域更改器
    • 将职责过多的类进行分解
    • 类名和方法名要能够体现它们的职责
    • 优先使用不可变的类

继承

  • super() 调用父类构造器 super调用构造器的语句必须是子类构造器的第一条语句
  • Java单继承
  • 允许子类将覆盖方法的返回类型定义为原返回类型的子类型 可协变的返回类型
  • 在覆盖一个方法的时候,子类方法不能低于超类方法的可见性,特别是,如果超类方法是public,子类方法一定要声明为public
  • 阻止继承:final类和方法。不允许扩展的类被成为final类,final方法不允许重写。对于final域来说构造对象之后就不允许改变它们的值,如果将一个类声明为final,只有其中的方法自动成为final,而不包括域。
  • 在将超类转换成子类之前,应该使用instanceof进行检查
  • 抽象类:1.包含一个或多个抽象方法的类本身必须被声明为抽象的。2.抽象类可以包含具体数据和具体方法。3.抽象类不能被实例化。4.可以定义一个抽象类的对象变量,但是它只能引用非抽象子类的对象。
  • private本类可见,public所有类,protected本包和所有子类,默认本包可见
  • 所有的数组类型,不管是对象数组还是基本类型的数组都i扩展了object类
  • Objects.equals(a,b)方法:如果两个参数都为null,调用将返回true;其中一个不为null,返回false,都不为null,调用a.equals(b)。
  • 编写equals方法:

1.显示参数命名为otherObject,稍后需要将它转换成另一个叫做other的变量。
2.检测this与otherObject是否引用同一个对象。 这条语句只是一个优化,实际上,这是一种经常采用的形式。因为计算这个等式要比一个一个地比较类中的域所付出的代价小很多。

  if(this==otherObject) return true;

3.检测otherObject是否为null,如果为null,返回false。这项检测是很必要的。

   if(otherObject==null) return false;

4.比较this与otherObject是否属于同一个类。如果equals的语义在每个子类中有所改变,就是用getClass检测:

if(getClass()!=otherObject.getClass()) return false;

如果所有的子类都拥有统一的语义,就使用instanceof检测:

if(!(otherObject instanceof ClassName)) return false;

getClass()限制了对象只能是同一个类,而instanceof却允许对象是同一个类或其子类,
5.将otherObject转换为相应的类类型变量:

ClassName other=(ClassName)otherObject;

6.现在开始对所有需要比较的域进行比较了。使用==比较基本类型域,使用equals比较对象域,如果所有的域都匹配,返回true,否则返回false

return field1==other.field1&&Objects.equals(field2,other.field2)&&....

热门文章

暂无图片
编程学习 ·

javascript 实现所有浏览器异步加载的工具

javascript 实现所有浏览器异步加载的工具 //异步加载 实现 function loadScript(url, callback){ //新建一个script 元素 var script = document.createElement(‘script’); //再往script中添加类型 script.type=“text/javascript”; if(script.readyState){ //每当 rea…
暂无图片
编程学习 ·

Paddle_程序员必备的数学知识_转发

程序员——必备数学知识!!!Attention 本博客转发至百度aistudio的<深度学习7日入门-cv疫情检测>,课程非常棒!本人力推! 博客转发地址:https://aistudio.baidu.com/aistudio/projectdetail/604807 课程报名地址:https://aistudio.baidu.com/aistudio/education/group/i…
暂无图片
编程学习 ·

微信小程序引入vant Weapp组件

微信小程序引入vant Weapp组件 步骤: 1. 打开终端: 先初始化: npm init -y 然后进行安装 npm install --productionnpm i @vant/weapp -S --production2. 需要在微信开发者工具,点击工具==>>构建npm 并点击详情,勾选 使用 npm 模块 选项,构建完成后,即可引入组件…
暂无图片
编程学习 ·

jkd从1.8升级后报sun.misc相关错误

Idea解决找不到sun.misc.BASE64Encoder及sun.misc.BASE64Decoder找不到包 报错原因: JDK从1.8升级到9.0.1后sun.misc.BASE64Decoder和sun.misc.BASE64Encoder不可用 原因分析: ​ 参看官网,发现JDK中的lib\tools.jar和JRE中的lib\rt.jar已从Java SE 9中删除。这些JAR中可用的…
暂无图片
编程学习 ·

redis知识点(一)

redis知识点(一) 问题Redis 持久化机制 缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题 热点数据和冷数据是什么 Memcache与Redis的区别都有哪些? 单线程的redis为什么这么快 redis的数据类型,以及每种数据类型的使用场景,Redis 内部结构 redis的过期策略以及内存…
暂无图片
中恒嘉业 ·

关于主从复制的超详细解析(全)

目录前言1. 主从复制1.1 方式2. Mysql的主从复制2.1 一主一从2.1.1 window和linux通讯2.1.2 linux和linux的通讯2.2 双主双从3. Redis的主从复制3.1 哨兵模式3.2 java代码结合前言 主要介绍mysql的主从复制以及redis的主从复制 能由浅入深的明白原理以及如何操作 再者&#xf…
暂无图片
郑州普通话 ·

android适配布局,kotlin枚举类

大厂面试的时候,都会问哪些技术? 最常问的就是四大组件、Binder、网络编程等基本知识点,也会问热修复、换肤、自定义动画等项目实战操作,因此你得要做好方方面面的准备才行。而且BATJ的面试官特别喜欢抓着一个知识点一直问,问到你不会为止。所以精通一个或多个知识点,比博…
暂无图片
郑州普通话 ·

android路由实现,flutter登录界面设计

二、Android面试知识框架三、Java 基础叩关 3.1 数据结构与算法 3.1.1 常用的数据结构有哪些?3.1.2 数组(1).如何在一个1到100的整数数组中找到丢失的数字?(2).如何在给定的整数数组中找到重复的数字? 小米(3).如何在未排序整数数组中找到最大值和最小值? 字节…
暂无图片
代理记账 ·

在web应用中发送和接收Jakarta消息

Running the websimplemessage Example To Package and Deploy websimplemessage Using Maven _1、Make sure that GlassFish Server has been started (see Starting and Stopping GlassFish Server). _2、In a terminal window, go to: tut-install/examples/jms/websimp…
暂无图片
cgfy ·

C++学习日记2——函数、封装、对象特性

一、函数 1.1 函数默认参数 1.1.1 简介 在C中&#xff0c;函数的形参列表中的形参是可以有默认值的 1.1.2 语法 返回值类型 函数名 (参数 默认值) {} 1.1.3 代码 #include <iostream> using namespace std;// 函数的默认参数 int func(int a, int b 20, int c 30…
暂无图片
coreui ·

视频水印怎么去除?超简单 千万不要错过

小编在知乎看到很多大佬分享的视频去水印的方法&#xff0c;但是感觉都有点太复杂了&#xff0c;今天就来分享一下小编自己私藏的几个针对于视频去水印的软件和网站~建议大家收藏哦~ 1、爱给网-视频去水印小工具&#xff08;免费 在线&#xff09; 推荐点 1、在线操作&#…
暂无图片
coreui ·

Mac 安装 tomcat10

Mac 安装 tomcat10 1、下载tomcat tomcat官网&#xff1a;https://tomcat.apache.org/ 点击我下载的tomcat10&#xff1a; 2、下载解压,给bin下的*.sh文件添加可执行权限 3、修改webapps下的ROOT中的index文件查看效果
暂无图片
未来博客 ·

视频水印怎么去除?超简单 千万不要错过

小编在知乎看到很多大佬分享的视频去水印的方法&#xff0c;但是感觉都有点太复杂了&#xff0c;今天就来分享一下小编自己私藏的几个针对于视频去水印的软件和网站~建议大家收藏哦~ 1、爱给网-视频去水印小工具&#xff08;免费 在线&#xff09; 推荐点 1、在线操作&#…
暂无图片
未来博客 ·

Mac 安装 tomcat10

Mac 安装 tomcat10 1、下载tomcat tomcat官网&#xff1a;https://tomcat.apache.org/ 点击我下载的tomcat10&#xff1a; 2、下载解压,给bin下的*.sh文件添加可执行权限 3、修改webapps下的ROOT中的index文件查看效果
暂无图片
建站日记 ·

惠州实验室建设选址、勘察事项

惠州实验室建设选址、勘察事项&#xff0c;SICOLAB技术员带您从实验室建设启动前思考问题考虑如下&#xff1a;一、不同实验室建设选址要求 1.化学实验室 &#xff08;1&#xff09;清洁安静环境 &#xff08;2&#xff09;远离住宅、生活区 &#xff08;3&#xff09;锅炉房与…
暂无图片
建站日记 ·

NLP聊天机器人原理(seq2seq模型)

一、seq2seq模型 1.概念 seq2seq是一个Encoder-Decoder结构的网络&#xff0c;它的输入是一个序列&#xff0c;输出也是一个序列。Encoder中将一个可变长度的信号序列变为固定长度的向量表达&#xff0c;Decoder将这个固定长度的向量变成可变长度的目标的信号序列。这个结构最…
暂无图片
mfbz ·

惠州实验室建设选址、勘察事项

惠州实验室建设选址、勘察事项&#xff0c;SICOLAB技术员带您从实验室建设启动前思考问题考虑如下&#xff1a;一、不同实验室建设选址要求 1.化学实验室 &#xff08;1&#xff09;清洁安静环境 &#xff08;2&#xff09;远离住宅、生活区 &#xff08;3&#xff09;锅炉房与…
暂无图片
mfbz ·

全渠道会员通-天猫会员通3: 会员运营内容准备

在天猫会员通技术对接开发过程中&#xff0c;为了通知存量会员的通知工作&#xff0c;发挥会员通的优势&#xff0c;品牌需要做好以下事宜&#xff1a; 会员体系暂停公告&#xff1a;因会员通技术升级期间&#xff0c;会员服务将被暂停&#xff0c;店铺tab中会员入口将被下线&…
暂无图片
珊珊日记 ·

C# 执行Javascript脚本

c#教程https://www.xin3721.com/eschool/CSharpxin3721/ 前一阵子使用C#编写SCXML状态机&#xff0c;需要解析EMCScript表达式&#xff0c;使用了Jint库&#xff08;https://github.com/sebastienros/jint/)&#xff0c;当时感觉与C#之间的数据转换不是很方便。这两天有时间又关…
暂无图片
珊珊日记 ·

第九届“图灵杯”NEUQ-ACM程序设计竞赛个人赛

A.大学期末现状 题目描述 作为一名大学生的你&#xff0c;现在又到了期末查成绩的时候&#xff0c;当你的成绩大于等于60时请输出“jige,haoye!”,否则输出"laoshi,caicai,laolao"。 输入描述: 一行&#xff0c;一个整数x代表你的成绩&#xff08;0<x<100&a…