首页 > 编程语言 >javaEE进阶小结与回顾(二)

javaEE进阶小结与回顾(二)

时间:2023-04-08 09:02:45浏览次数:41  
标签:进阶 int 方法 javaEE 对象 static 小结 public BigDecimal

内部类

概述,在一个类里面再定义一个类,这个类称为内部类,外部的类称为外部类

分类,成员内部类,局部内部类

 

成员内部类

调用方法:

方式一:通过外部类的方法,创建内部类对象

方式二:第三方创建内部类对象------Outer.Inner oi = new Outer().new Inner();

 

修饰符

private:只能在自己所在的外部类中创建对象访问

 

static:静态成员内部类访问格式:

外部类名.内部类名 对象名= new 外部类名.内部类名();

 

静态成员内部类中的静态方法:

外部类名.内部类名.方法名();

 

局部内部类

定义,在方法中定义的类,外界无法直接使用,需要在方法内部创建对象并使用,该类可以直接访问外部类的成员,也可以访问方法内的局部变量.这个类,只希望给外部类内部使用,不希望其他类直接使用,就可以声明为内部类,且经常使用private修饰

匿名内部类

概述,本质上是特殊的局部内部类(定义在方法内部),格式前提:需要存在一个接口/抽象类/具体类

格式

new 类|抽象类名|接口名(){

          重写方法

};

new  Inter(){

     public void show(){

     }

};

理解:创建了接口的实现类对象/抽象类的子类对象/具体类的子类对象

做了3件事:定义了实现类,重写方法,创建了实现类对象

 

写一个多态的步骤

定义一个接口

定义实现类实现接口,重写方法

在测试类中,创建一个方法useXXX(接口类型  变量名){...}

在main中调用方法,传入实现类对象

 

何时使用匿名内部类

实现类只使用一次,推荐匿名

方法重写代码复杂,建议创建实现类

 

常用API

Object

一个类要么默认继承Obj类,要么间接继承Obj(祖宗类)

toString()

返回当前对象在堆内存中的地址信息,类的全限名@内存地址

直接打印对象就是打印这个对象的toString方法返回值

我们自己定义类,一般会对toString方法重写

方法存在意义:为了让子类重写,以便返回对象的内容信息

equals()

比较当前对象与另一个对象的地址是否相同,相同返回true

方法存在意义:让子类重写,以便子类自己定制比较的规则

默认比较两个对象的地址值是否相同

==用于引用类型,比较地址值,用于基本类型,比较的是数据值

equals默认比较地址值,重写后用于比较对象的成员变量值

System

功能是通用的,也是一个工具类

public static void exit(int status)------终止当前运行的jvm,非零表示异常终止

public static void currentTimeMillis()------返回当前系统的时间毫秒值形式

Math

数学工具类,包含对数学运算的方法.帮助文档中,没有看到构造方法,因为成员都用static修饰了,可以用类名直接访问

常用方法

public static int abs (int a)

获取参数绝对值

public static int round (float a)

四舍五入

public static int max (int a,int b)

获取两个int中的较大值

public static double pow (double a,double b)

返回a的b次幂的值

 

基本类型包装类

Byte,Short,Interger,Long,Character,Float,Double,Boolean

基本类型不能拥有属性和方法,java为实现一切皆对象,为基本类型提供对应引用类型

集合的泛型只能支持包装类型,不支持基本数据类型

系统可以在包装类中,提供有用的方法,便于操作该基本类型(Interger类有方法将String转为int)

 

常见构造方法

public static Integer valueOf(int i)

返回表示指定的int值的Interger实例

public static Integer valueOf(String s)

返回一个保存指定值的Integer对象String

 

装箱和拆箱

装箱,把基本数据类型转换为对应的包装类类型

拆箱,把包装类类型转换为对应的基本数据类型

常用方法

static int parseInt(String str)------解析参数字符串,返回一个int数

包装类最常见操作:基本类型与字符串转换

1.int转String

方式一:加双引号即可  int+""

方式二:public static String valueOf(int i):返回int参数的字符串表示形式

2.String转int

public static int parseInt(String s):将字符串解析为int 类型

常见算法

选择排序

每轮选择当前位置,开始找出后面的较小值与该位置交换

二分法

在数据量特别大的时候,基本查找从前往后寻找的性能很差

二分查找的前提是必须排好序的数据

 

Arrays数组工具类

数组操作工具,专门用于操作数组元素

常见API

public static String toString(类型[] a)

返回数组的字符串表现形式,用来打印数组内容

public static void sort(类型[] a)

对数组进行默认升序排序

public static int binarySearch(类型[] a,int key)

二分搜索数组中的数据索引,存在返回索引,不存在返回负数

 

日期与时间

Date

Date的构造器

public Date()

创建一个Date对象,代表的是系统当前此刻日期时间

public Date(long time)

把时间毫秒值转换成Date日期对象

 

Date的常用方法

public long getTime()

获取时间对象的毫秒值

public void setTime(long time)

设置日期对象的时间为当前时间毫秒值对应的时间

 

SimpleDateFormat

作用,可以把Date对象格式化成我们喜欢的字符串形式,可以把字符串的时间形式 解析成Date对象

构造器

public SimpleDateFormat()

使用的是默认格式,不符合国人阅读习惯

public SimpleDateFormat(String pattern)

使用指定格式

如"yyyy年MM月dd日 HH时mm分ss秒"

public final String format(Date date)

将Date对象格式化成日期/时间字符串

public parse(String source)

从给定字符串的开始解析文本以生成日期

 

Calendar

代表系统此刻日期对应的日历对象,它方便对日期进行计算和获取年月日,Calendar是一个抽象类,不能直接创建对象

创建Calendar对象

public static Calendar getInstance()

获取当前日历对象

Calendar常用方法

public int get(int field)

取日期中某个字段信息

public void set(int field,int value)

修改日历的某个字段信息

public void add(int field,int amount)

为某个字段增加/减少指定的值

public final Date getTime()

拿到此刻的日期对象

public long getTimeInMillis()

拿到此刻时间毫秒值

注意:Calendar是可变的日期对象,一旦修改后其对象本身表示的时间将会变化

Calendar规则中,月份从数字0开始,0代表1月

 

BigDecimal

作用,用于解决浮点型运算精度失真的问题

获取BigDecimal对象

构造方法:BigDecimal(String val)

静态方法:static BigDecimal valueOf(double val)

常用成员方法

public BigDecimal add(BigDecimal b)

加法

public BigDecimal subtract(BigDecimal b)

减法

public BigDecimal multiply(BigDecimal b)

乘法

public BigDecimal divide(BigDecimal b)

除法

public BigDecimal divide(BigDecimal b,精确几位,舍入模式)

除法

 

Lambda表达式

lambda概述

函数式思想的体现:强调做什么,而不是以什么形式做

 

lambda格式

(形式参数)->(代码块)

形式参数,如果有多个参数,用逗号隔开,没有参数留空即可

->   英文画线和大于符号组成,固定写法,代表指向动作

代码块,具体要做的事,也就是方法体内容

 

lambda的使用前提:

1.有一个接口

2.接口中有且只有一个抽象方法

lambda省略规则

1.参数类型可以省略,但是有多个参数,不能只省略一个

2.如果参数有且仅有一个,小括号可以省略

3.如果方法体只有一条语句,可以省略大括号和分号,甚至return,要省就全部省,不能省略一部分

写一个多态接口的步骤

1.写一个接口

2.在测试类创建一个方法useXXX(),参数类型是接口类型

3.在main方法调用方法,传入匿名内部类/lambda

标签:进阶,int,方法,javaEE,对象,static,小结,public,BigDecimal
From: https://www.cnblogs.com/kyrie-66/p/17297882.html

相关文章

  • 【进阶11】【自学笔记】Python _解包的操作
    一、Python解包定义Python解包是指将一个可迭代对象(如列表、元组、字典等)中的元素分别赋值给多个变量的过程。解包可以通过在变量前添加星号`*`来实现,也可以通过在变量前添加双星号`**`来实现字典解包。解包可以简化代码,使代码更加清晰易懂。二、解包实例1、最简单的解包......
  • vue全家桶进阶之路29:Element Plus
    ElementPlus是一个用于Vue.js的UI组件库,为开发人员提供了一组可重用和可定制化的组件,用于构建现代Web应用程序。它是流行的ElementUI库的扩展,重点是提高性能和可访问性。ElementPlus包括广泛的组件,如按钮、表单、表格、对话框等。除了常规的UI组件外,ElementPlus还提供了一些......
  • Angular 复习与进阶系列 – Naming Conversion
    前言命名规范对项目维护是很重要的.Angular对项目的渗透很大的,必须做好命名规范,不然会很乱. Angular NamingConversionInjectionToken=UPPER_SNAKE_CAREconstSERVICE_CONFIG_TOKEN=newInjectionToken('ServiceConfig'); elementattributeandproperty......
  • vue全家桶进阶之路27:Vue.js 3.0的下载和安装
    使用脚手架vue-cli创建vue3项目,创建前需要准备以下:1、node.js环境见:https://www.cnblogs.com/beichengshiqiao/p/17251233.html2、npm、cnpm工具见:https://www.cnblogs.com/beichengshiqiao/p/17251860.html3、vue框架见:https://www.cnblogs.com/beichengshiqia......
  • vue全家桶进阶之路25:Vue2的停维通知
      Vue2的技术支持会持续多久?从官方发文来看,Vue2.7是当前、同时也是最后一个Vue2.x的次级版本更新。Vue2.7会以其发布日期,即2022年7月1日开始计算,提供18个月的长期技术支持(LTS:long-termsupport)。在此期间,Vue2将会提供必要的bug修复和安全修复,但不再......
  • Vue进阶(四十五):精解 ES6 Promise 用法
    一、前言复杂难懂概念先不讲,我们先简单粗暴地把Promise用一下,有个直观感受。那么第一个问题来了,Promise是什么呢?是类?对象?数组?函数?别猜了,console.dir(Promise)直接打印出来看看。这么一看就明白了,Promise是一个构造函数,自己身上有all、reject、resolve这几个眼熟的方法,原型上有th......
  • 流媒体技术学习笔记之(七)进阶教程OBS参数与清晰度流畅度的关系
     源码地址:https://github.com/Tinywan/PHP_Experience 很多主播问过OBS的参数到底什么影响画质,到底什么影响流畅度,那么本篇教程尽量用通俗的语言解释下一些重要参数到底是干什么的,自己一定要理解为主,每个主播的电脑、所在的平台、当天的网络状态(注意网络就和马路一样,每天的情......
  • 单链表进阶OJ版--->随机指针问题
    朋友们,晚上好!!今天,推出一篇单链表的随机指针问题!!相较于之前的链表OJ题,本期的链表难度有所提升!!下面请看题:>有一个链表,链表每个结点额外增加一个随机指针random,并且随机指针可以指向链表的任何结点以及空结点至于本题的要求是:复制带随机指针的链表如下图所示:>本题的难度,大致......
  • Android开发如何进阶?
    本着每周至少有干货产出的原则,今天必须写篇干货来回馈大家,我这的干货可是不收费的哦,争取以后的目标是让你们看完我的文章不赞赏都觉得亏得慌!之前不少人都问我同一个问题,就是我学习Android有一两年了,但是遇到瓶颈了,感觉没什么进步,到底怎么才能进阶呢?我相信有不少人遇到这样的困扰,那......
  • 第四十篇 vue - 进阶主题 - 使用 Vue 的多种方式
    使用Vue的多种方式在Web的世界中从来就没有可以适配所有场景、解决所有问题的银弹。正因如此,Vue被设计成一个灵活的、可以渐进式集成的框架。根据使用场景的不同需要,相应地有多种不同的方式来使用Vue,以此在技术栈复杂度、开发体验和性能表现间取得最佳平衡独立脚本Vue可......