Object

概念

所有类的顶级父类

存在于java.lang包中,这个包不需要我们手动导包

常用方法

toString()

默认返回   类名@地址  的格式,来展示对象的地址值,如:a00000.Student@a0834e7。

如果想看属性值我们可以重写这个方法,重写后返回的就是把属性值拼接成一个字符串。

如:Student [name=苏大强, age=20, id=10001]

equals(Object obj)

当前对象和参数对象比较大小,默认是比较内存地址,如果要比较对象的属性,可以重写该方法

==equals的区别

1、 当使用==比较时,如果相比较的两个变量是引用类型,那么比较的是两者的物理地

值(内存地址),如果相比较的两个变量都是数值类型,那么比较的是具体数值是否相等。

2、 当使用equals()方法进行比较时,比较的结果实际上取决于equals()方法的具体实现

众所周知,任何类都继承自Object类,因此所有的类均具有Object类的特性,比如String、integer等,他们在自己的类中重写了equals()方法,此时他们进行的是数值的比较,而在Object类的默认实现中,equals()方法的底层是通过==来实现的。

hashCode()

native:表示由C语言来实现的

返回该对象的哈希码值

转换成地址值:Integer.toHexString(hashCode())

示例

String

特点

是一个封装char[]数组的对象

  • 字符串不可变

创建String对象

如果是第一次使用字符串,java会在字符串常量池创建一个对象。

再次使用相同的内容时,会直接访问常量池中存在的对象。

方式1:

String(char[] value)

分配一个新的 String,使其表示字符数组参数中当前包含的字符序列。

String()

初始化一个新创建的 String 对象,使其表示一个空字符序列。

方式2:String name= ”abc”;

常见方法

length()

charAt()

lastIndexOf()

substring()

equals()

startsWith()

endsWith()

split()

trim() 去除字符串两端的空格

存储原理

test 1:

package StringTest;

public class test1 {

public static void main(String[] args){

String a = "a1";//“a1”在编译的时候就能确定,所以编译的时候,a1被放进了常量池中,同时a指向常量池中的a1对象

String b = "a"+ 1;//a和1这两个常量都能在编译时确定,所以他们相加的结果也能确定,因此编译器检查常量池中是否有值为a1的String对象,发现有了,因此b也指向常量池中的a1对象

System.out.println(a==b);//==判断的是a和b是否指向同一个对象,也就是同一块内存区域

}//true

}

test2:

package StringTest;

public class test2 {

public static void main(String[] args){

String a = "ab";

String bb = "b";

String b = "a"+ bb; //编译器不能确定为常量

System.out.println(a==b);

}//false

}

test3:

package StringTest;

public class test3 {

public static void main(String[] args){

String a = "ab";

final String bb = "b";

String b = "a"+ bb; //bb加final后是常量,可以在编译器确定b

System.out.println(a==b);

}//true

}

test4:

package StringTest;

public class test4 {

public static void main(String[] args){

String a = "ab";

final String bb = getBB();

String b = "a"+ bb;//bb是通过函数返回的,虽然知道它是final的,但不知道具体是啥,要到运行期才知道bb的值

System.out.println(a==b);

}//false

private static String getBB(){ return "b"; }

}

test5:

package StringTest;

public class test5 {

private static String a = "ab";

public static void main(String[] args){

String s1 = "a";

String s2 = "b";

String s = s1 + s2;//+的用法

System.out.println(s == a);

System.out.println(s.intern() == a);//intern的含义

}//flase true

}

test6:

package StringTest;

public class test6 {

private static String a = new String("ab");

public static void main(String[] args){

String s1 = "a";

String s2 = "b";

String s = s1 + s2;

System.out.println(s == a);

System.out.println(s.intern() == a);

System.out.println(s.intern() == a.intern());

}//flase false true

}

包装类

把基本类型进行包装,提供更加完善的功能。

与基本类型的对应关系

继承关系

Number:数字包装类的抽象父类,提供了各种获取值的方式

基本操作

创建一个包装类对象

Integer i=new Integer(999); // 创建一个Integer对象,表示指定的int值

Integer i2=new Integer("999"); // 创建一个Integer对象,表示String参数“999”指定的int值

常见方法

返回值

方法名

作用

byte

byteValue()

Integer → byte

double/float

double/floatValue()

转为double/float

int/long

int/longValue()

转为int/long

static int

parseInt(String s)

String → int

static Integer

valueOf(String s)

String → Integer

String

toString()

转为String

基本类型,包装类型 之间的转换

装箱与拆箱

装箱:将基本类型装换成包装类,分为自动装箱和手动装箱(就是必须手动的new一个对象)

拆箱:将包装类型转换成基本类型,分为自动拆箱和手动拆箱(就是程序默认将其自动的创建一个对象)

Integer

(1) int → Integer new Integer(primitive)

(2) Integer → int Integer 对象.xxxValue()

(3) Integer → String Integer 对象.toString()

(4) String → Integer new Integer(String str)

(5) int → String Integer.valueOf(primitive)

在Integer类中,包含256个Integer缓存对象,范围是 -128到127。使用valueOf()时,如果指定范围内的值,访问缓存对象,而不新建;如果指定范围外的值,直接新建对象。

(6) String →int Integer.parseXxx())

Double

创建对象

1、new Double(3.14)

2、Double.valueOf(3.14)//和 new 没有区别

方法

static double parseDouble(String s)

返回一个新的 double 值,该值被初始化为用指定 String 表示的值,这与 Double 类的 valueOf 方法一样

static Double valueOf(double d)

返回表示指定的 double 值的 Double 实例

示例

String

基本类型→字符串类型

  • 包装类的 toString() 方法
  • String类的 valueOf() 方法
  • 空字符串+基本类型

字符串类型→基本类型

  • 包装类 parseXxx() 静态方法
  • 包装类 valueOf() 方法

日期类Date

概述

存在于java.util.Date包。

用来封装一个毫秒值表示一个精确的时间点。

从1970-1-1  0点开始的毫秒值。

创建对象

new Date():封装的是系统当前时间的毫秒值

new Date(900000000000L):封装指定的时间点

常用方法

getTime():取内部毫秒值

setTime():存取内部毫秒值

getMonth():获取当前月份

getHours():获取当前小时

compareTo(Date):当前对象与参数对象比较。当前对象大返回正数,小返回负数,相同0

示例

日期工具SimpleDateFormat

概述

日期格式化工具,可以把Date对象格式化成字符串,也可以日期字符串解析成Date对象。

创建对象

new SimpleDateFormat(格式)

格式:yyyy-MM-dd HH:mm:ss

MM/dd/yyyy..

常见方法

format(Date):把Date格式化成字符串

parse(String):把String解析成Date

示例:计算存活天数

BigDecimal/BigInteger

概述

BigDecimal:常用来解决精确的浮点数运算。

BigInteger:常用来解决超大的整数运算。

创建对象

BigDecimal.valueOf(2);

常用方法

add(BigDecimal bd): 做加法运算

substract(BigDecimal bd) : 做减法运算

multiply(BigDecimal bd) : 做乘法运算

divide(BigDecimal bd) : 做除法运算

divide(BigDecimal bd,保留位数,舍入方式):除不尽时使用

setScale(保留位数,舍入方式):同上

pow(int n):求数据的几次幂

示例

StringBuilder/StringBuffer

特点

  • 封装了char[]数组
  • 是可变的字符序列
  • 提供了一组可以对字符内容修改的方法
  • 常用append()来代替字符串做字符串连接
  • 内部字符数组默认初始容量是16:super(str.length() + 16);
  • 如果大于16会尝试将扩容,新数组大小原来的变成2倍+2,容量如果还不够,直接扩充到需要的容量大小。int newCapacity = value.length * 2 + 2;

常见方法

append()

StringBuilder和StringBuffer的区别

1、 在线程安全上,

--StringBuffer是旧版本就提供的,线程安全的。@since   JDK1.0

--StringBuilder是jdk1.5后产生,线程不安全的。@since       1.5

2、 在执行效率上,StringBuilder > StringBuffer > String

3、 源码体现:本质上都是在调用父类抽象类AbstractStringBuilder来干活,只不过Buffer把代码加了同步关键字,使得程序可以保证线程安全问题。

abstract class AbstractStringBuilder implements Appendable, CharSequence {

内部类

在 Java 中,允许在一个类(或方法、语句块)的内部定义另一个类,称为内部类(Inner Class),有时也称为嵌套类(Nested Class)。内部类和外层封装它的类之间存在逻辑上的所属关系,一般只用在定义它的类或语句块之内,实现一些没有通用意义的功能逻辑,在外部引用它时必须给出完整的名称。内部类主要用于设计具有互相协作关系的类集合。

通过将一个类定义在另一个类的内部,也可以有效的隐藏该类的可见性,实现极好的封装特性。但不易理解,实际开发使用不多。

12 : API的更多相关文章

  1. Windows API 函数列表 附帮助手册

    所有Windows API函数列表,为了方便查询,也为了大家查找,所以整理一下贡献出来了. 帮助手册:700多个Windows API的函数手册 免费下载 API之网络函数 API之消息函数 API之 ...

  2. 使用 WSO2 API Manager 管理 Rest API

    WSO2 API Manager 简介 随着软件工程的增多,越来越多的软件提供各种不同格式.不同定义的 Rest API 作为资源共享,而由于这些 API 资源的异构性,很难对其进行复用.WSO2 A ...

  3. API函数

    1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAddConnection3 创建同 ...

  4. WINDOWS API 函数(超长,值得学习)

    一.隐藏和显示光标 函数: int ShowCursor ( BOOL bShow );  参数 bshow,为布尔型,bShow的值为False时隐藏光标,为True时显示光标:该函数的返回值为整型 ...

  5. linux API函数大全

    获取当前执行路径:getcwd1. API之网络函数 WNetAddConnection 创建同一个网络资源的永久性连接 WNetAddConnection2 创建同一个网络资源的连接 WNetAdd ...

  6. 教程:将应用迁移到 DirectX* 12 – 第 1 部分

    原文地址 简介 随着微软* 新版操作系统 Windows 10* 的发布,核心图形技术将升级到最新的 DirectX* 12.要帮助拥有 DirectX* 开发经验的程序员熟悉 DirectX* 12 ...

  7. Windows API函数大全(精心总结)

    WindowsAPI函数大全(精心总结)    目录 1. API之网络函数... 1 2. API之消息函数... 1 3. API之文件处理函数... 2 4. API之打印函数... 5 5. ...

  8. WINDOWS-API:API函数大全

    操作系统除了协调应用程序的执行.内存分配.系统资源管理外,同时也是一个很大的服务中心,调用这个服务中心的各种服务(每一种服务是一个函数),可以帮肋应用程序达到开启视窗.描绘图形.使用周边设备的目的,由 ...

  9. Windows API函数大全四

    10. API之硬件与系统函数 ActivateKeyboardLayout 激活一个新的键盘布局.键盘布局定义了按键在一种物理性键盘上的位置与含义 Beep 用于生成简单的声音 CharToOem ...

随机推荐

  1. python函数2(返回值、传递列表...)

    python函数2(返回值.传递列表...) 1.返回值 1.1.返回简单的值 #返回简单值 def get_formatted_name(first_name,last_name): "& ...

  2. HDU2066dijkstra模板题

    问题描述: 题目描述:Problem Description 虽然草儿是个路痴(就是在杭电待了一年多,居然还会在校园里迷路的人,汗~),但是草儿仍然很喜欢旅行,因为在旅途中    会遇见很多人(白马王 ...

  3. 《Python学习手册 第五版》 -第8章 列表与字典

    前面已经讲过数值类型(第5章)和字符串类型(第7章),本章继续其他数据类型的讲解:列表和字典 本章的核心内容 1.列表 1)什么是列表 2)基本列表操作 3)列表迭代和推导 4)索引.分片和矩阵 5) ...

  4. Altium Designer打印多块PCB到热转印纸上、拼板发给工厂

    接下来介绍的方法的优势有: 节省电脑性能(来自不同PCB文件的图案被放置时只在第1块会卡顿一小会儿,之后不再卡顿) 便于排版(拖放图案时绝不会改变图案内容,拖放图案时鼠标拖住的矩形框的尺寸与图案的尺寸 ...

  5. VFP CursorAdapter 起步一(作者:Doug Hennig 译者:fbilo)

    CursorAdapter 类是 VFP 8 中最重要的新功能之一,因为它提供了一种简单易用.接口统一的访问远程数据源方式.在这个月的文章里,Dung Hennig 将向你展示 CursorAdapt ...

  6. Spring整合EasyExcel【基础设计】

    前言 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI ...

  7. CodeForces 327B 水题。

    I - 9 Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit Statu ...

  8. 【转载】STM32 ST-LINK Utility介绍、下载、安装、使用方法

    转载地址:https://blog.csdn.net/ybhuangfugui/article/details/52597133 总结的很好!!! Ⅰ.写在前面本文讲述的内容是STM32 ST-LIN ...

  9. 深浅COPY浅谈

    通俗地谈一下深浅COPY的区别,顺便做个笔记.(纯手打,如有不对之处还望大牛指导改正.) 个人觉得区分这个概念需要从数据类型来切入: 1.如果“被复制对象”(后面简称“原对象”)的数据类型为不可变数据 ...

  10. echarts 的 formatter用法

    前言:formatter格式化方法.使用formatter调用自定义的数据,把内容通过处理让变成我们想要的样子. 比如,echarts数据显示是这样的(bug:部分内容被隐藏掉了,显示太长,不美观) ...