当前位置: 首页 > news >正文

Java学习日志--常见类库(上)

前言

学习一个类,我们首先需要了解这个类的大致作用是什么,就好像我们知道Random是为了生成随机数的的一个类,又或者Date类和日期相关。

之后我们要去看他的成员以及构造器,了解我们可以如何根据自己的需求,通过构造器如何去创建一个适合的对象。

之后要了解它的方法(方法名,参数列表,返回值类型),确定要传什么参,需要用什么类型去接收返回值,都是很有必要的。

一、API

1.1 API概述

1)API(Application Programming Interface):应用程序编程接口。它是厂商或者第三方提供好的一系列类库,这些类库能帮助你开发出你想要的项目。

2)Java API指的是JDK中提供的各种功能的Java类库。类库就是别人已经写好的类和方法,可以直接使用。这些类库已经提供了完整的实现,我们不需要关心它如何实现的,只需要学会如何使用这些类即可。

3)JDK类库(API):由sun开发的基础类库,和后期甲骨文公司开发扩展的。

4)第三方API:由第三方人员开发提供的类库,在使用时需要导jar包。

1.2 API文档

APi文档,可以帮助我们快速的学习掌握和了解对应类结构的一个文档工具。

具体关于API文档的运用,我后面会专门出一期,再详细介绍。

二、Object类

2.1 Object类概述

1)Object是基类,所有的类都会直接或间接地继承Object类,默认继承,不需要显式写出。

2)Object存在于java.lang包中,不需要导包可以直接使用。

2.2 构造器

Object类只有一个无参构造器,一般不直接使用Object创建对象。

Object obj = new Object();

2.3 Object的一些方法

Object obj = new Object(); obj.hashCode(); // 返回obj的哈希值 obj.equals(obj); // 判断对象是否相同,相同返回true,不同返回false obj.toString(); // 返回obj转化成的对应的字符串, //一旦该对象有toString方法,则打印对象时,默认调用toString方法 //所以我们可以在子类中对toString方法进行重写,来达到我们想要的输出效果

三、String类

3.1 String类概述

1)在 Java 中,String 是最常用的字符串类。所有用双引号括起来的数据都会自动创建为 String 对象,无需使用 new 关键字,语法支持直接使用双引号创建。

2)String类是 java.lang包中的类,使用的时候无需导包。

3)String类是不可变字符串,一旦创建后其内容无法修改。当为String对象重新赋值时,实际上是创建了一个新的字符串对象,而非修改原有对象。原字符串将被垃圾回收机制回收。

3.2 其在内存中的体现

首先,我们需要了解栈空间,堆空间之间一般存放的内容,当我们new一个对象时,对象名存储着对象在堆空间的内存地址,它本身是在栈空间,所以我们在了解String类在内存中的关系,我们就要先了解一个东西:常量池。

我们有两种方式去定义一个字符串,第一种就是直接使用双引号创建;另一种就是新建一个String对象,然后给这个对象填值。

//1 String str1 = "Hello"; String str2 = "World"; //2 String str3 = new String("Hello"); String str4 = new String("World");

直接使用双引号创建,是在常量池开辟一个空间存放字符串,之后直接将字符串在常量池中的地址给了在栈空间中的对象名,所以输出的是字符串在常量池中的地址。

创建String对象时,首先会在字符串常量池中开辟空间存储字符串值,然后将该字符串地址赋给堆内存中的对象。栈内存中的变量名则保存着堆内存对象的地址。图示说明如下:

而所谓的“一旦创建后其内容无法修改”,是因为不管是哪种方法创建的,字符串的值都是在常量池中存储着,而一旦检索到你要给String对象赋的值在常量池中有相同的,他就会将该字符串在常量池中的地址给出去,而不是新建一个空间去存储。

同样的,你要对一个字符串进行修改,实际上原本的那个字符串是已经死了的,不能改变了,本质上是又新开辟了一个空间,将你修改的内容放了进去,然后返回相应的地址。

3.3 字符串比较

3.3.1 “==”

==是关系运算符,用来比较等于号两边是否相等。

基本类型:比较的是值是否相等;引用类型:比较的是地址是否相等。

总结:==只负责比较,等号两侧放的是值就比较值,放的是地址,就比较地址。

所以当两个字符串都是直接使用双引号创建的,且字符串内容相同时,对象名中存储的是字符串常量池中相同的地址,所以 str1 == str2,结果会是true。

而如果一个是new的,一个是双引号创建的,那么new的对象名存储的是对象在堆空间的地址,而双引号创建的时常量池中字符串的地址,即使内容相同,str1 != str2的。

3.3.2 equals

实际开发中:判断字符串是否相等,指的是内容是否相等,而不是内存地址是否相等。

判断字符串内容是否相等使用equals方法。

如果要忽略大小写比较的话,使用equalsIgnoreCase方法。例如:判断验证码是否正确。

3.4 构造器

//创建一个没有任何内容的字符串对象 String() //根据字符数组的内容,来创建一个字符串对象 String(char! chs) //创建一个字符串对象,字符串的内容是字符数组中下标从offset开始的count个字符 String(charl chs, int offset,int count) //根据字节数组的内容,来创建一个字符串对象 String(bytel bytes) //创建一个字符串对象,字符串的内容是字节数组中下标从offset开始的count个字节 String(bytel bytes, int offset.int count) //直接赋值的方式创建字符串对象,内容是abc,并未用任何构造方法。推荐 String s = "abc";

3.5 String的一些方法

下面列举了一些String类常用的对字符串进行操作的方法,有缺漏大家可以帮忙填补一下。

//获取当前字符串的长度,即多少个字符。 public int length() //获取指定下标的字符。下标从0开始,最大下标是length()-1 public char charAt(int index) //判断字符串中是否包含指定的 字符串 public boolean contains(String str); //判断字符串是否以指定的字符串开头 public boolean startsWith(String str); //判断字符串是否以指定的字符串结尾 public boolean endsWith(String str); /*获取指定的下标,查找范围是:下标0到字符串.length()-1; 从前往后找,返回第一个匹配内容的下标, 如果找不到匹配的内容, 返回-1 */ public int indexOf(int ch); public int indexOf(String subStr); /*获取指定的下标,查找范围是:下标fromIndex到字符串.length()-1; 从前往后找,返回第一个匹配内容的下标, 如果找不到匹配的内容, 返回-1 */ public int indexOf(int ch, int fromIndex); public int indexOf(String subStr, int fromIndex); /*获取指定[字符]的下标,查找范围是:下标0到字符 串.length()-1;从前往后找,返回最后一个匹配内容的下标,如果找不到匹配的内容, 返回-1 */ public int lastIndexOf(int ch); public int lastIndexOf(String subStr); /*获取指定[字符]的下标,查找范围是:下标0到 toIndex;从前往后找,返回最后一个匹配内容的下标,如果找不到匹配的内容, 返回-1 */ public int lastIndexOf(int ch, int toIndex); public int lastIndexOf(String subStr, int toIndex); //字符替换 public String replace(char oldChar,char newChar) //字符串按regex规则分割成多个小段 public String[] split(String regex) //将多个字符串合并成一个,合并的时候添加指定的连接符 public static String join(CharSequence delimiter,CharSequence... s) //获取从beginIndex开始到字符串结尾的子串 public String subString(int beginIndex) //获取从beginIndex到endIndex之间的子串,不含下标为endIndex的字符 public String subString(int beginIndex, int endIndex) //将字符串改成全小写 public String toLowerCase() //将字符串改成全大写 public String toUpperCase() //删除字符串左右两侧的空白(空格、换行符\n、缩进符\t) public String trim() //将其他数据类型的数据转换为字符串,需要使用类名.方法名调用 public static String valueOf(数据类型 变量名) //也可以通过""+变量进行转换,例如:int a = 10; String str = a + "";

***************************************************************************************************

**还有(下)哦!(下)要包含Random类,Date类,SimpleDateFormat类和包装类。

http://www.jsqmd.com/news/73202/

相关文章:

  • 浩辰CAD看图王电脑版:轻松解决CAD转PDF方向问题
  • 5个必学的Conda命令实战案例
  • 直播带货APP开发的核心流程:推流端、观看端与运营端后台搭建指南
  • 电子书免费 下载 网站 哪些
  • AI工具整体查看代码工程并给出建议
  • 2025 最新广州RYT200培训机构评测!市场主流五大瑜伽馆深度解析,权威认证 + 资深导师团榜单发布,引领专业瑜伽教学新生态 - 全局中转站
  • 用循环神经网络生成0^n 1^n形式的简单序列
  • AcWing 846:树的重心 ← 链式前向星 or 邻接表
  • PyMe是一款面向大众的可视化低代码Python开发工具
  • 251211
  • 2025最新广州创业瑜伽培训中心TOP5评测!优质瑜伽馆年度盘点,专业传承+实战赋能权威榜单发布,引领都市身心疗愈新生态 - 全局中转站
  • Python自然语言处理的未来:技术栈与开发范式
  • AI元人文构想:技术标准与人文规范的统一——拥抱数值表征vs审慎价值优化
  • Ubuntu系统火狐浏览器配置http代理
  • 1-Year XTOOL D9S PRO Update: Latest Diagnostics for European/American Mechanics Car Owners
  • 2025年目前有名的门窗源头厂家口碑推荐,复古门窗/中式门窗/整体门窗/极简门窗/高端定制门窗/智能门窗/门窗品牌有哪些 - 品牌推荐师
  • 2025年苏州GEO排名产品TOP10,本地企业表现亮眼,企业短视频矩阵/ai排行榜/GEO排名/短视频矩阵/视频矩阵GEO排名厂商排行榜 - 品牌推荐师
  • 2025年12月上海简约装修,上海中古风装修,上海工业风装修公司推荐,高颜值与实用性兼具的优质品牌 - 品牌鉴赏师
  • 2025年12月上海简约装修,上海中古风装修,上海工业风装修公司推荐,高颜值与实用性兼具的优质品牌 - 品牌鉴赏师
  • 关于公司经营场所和股东变更的公告 - 指南
  • 观察者模式
  • 2025年东莞优质的铝门窗批发选哪家,安全门窗/铝门窗/慕莎尼奥门窗/窗纱一体铝门窗/门窗/铝门窗品牌选哪家 - 品牌推荐师
  • 2025年市面上排行前列的推拉窗厂家有哪些,侧压平移推拉窗/六轨断桥推拉窗/平移断桥提升窗/推拉窗源头厂家推荐排行榜 - 品牌推荐师
  • 详细介绍:Chrome HSTS(HTTP Strict Transport Security)
  • tmux使用教程
  • 2025年12月上海别墅装修,上海极简风装修,上海新中式装修公司权威推荐,设计实力与市场口碑深度解析 - 品牌鉴赏师
  • Python 编程实战 实用工具与库 — Django 项目结构简介 - 指南
  • 2025.12.11总结
  • 2025年短视频代运营口碑前十强,专业机构推荐,短视频代运营团队/小红书代运营/短视频代运营/企业号代运营短视频代运营系统选哪家 - 品牌推荐师
  • 124_尚硅谷_闭包的基本介绍