最新要闻
- 全球看热讯:4月江南等地存在洪涝灾害风险 南方部分河流可能发生超警洪水
- 每日速看!精度优于10米 我国海上垂直回收火箭试验圆满成功
- 焦点信息:想不想要RTX 4070 Ti?七彩虹iGame动图设计大赛免费送
- 2023全球汽车品牌价值100强发布:特斯拉第一、26家中国车企上榜
- 【世界独家】《暗黑4》玩家反对买豪华版早玩4天 凭啥买标准版要晚玩
- 今日精选:一女子睡觉未摘耳钉 1个月后取下耳垂裂成两瓣:画面可怕
- 本田雅阁插混版后备箱隆起 博主:吹不下去了、真不如比亚迪汉
- 工信部通报扫码支付新骗局:钻App漏子 远程扫付款码“偷钱”
- 世界报道:五一还有近1个月!三山五岳就爆满了
- 今日播报!广州拟对公园、广场等场所全天禁止驾驶电动自行车 你支持吗?
- 全球播报:6.4万买的软件终于能用了?特斯拉FSD被曝将于国内大范围测试
- 全球微资讯!微信可以直接借钱的小程序:不用下载软件就可以到账
- 当前要闻:读客文化:公司的数字内容业务包括了电子书业务和有声书业务
- 环球关注:氢燃料汽车不认输 日本投资15万亿日元豪赌未来:产能6倍提升
- 世界快讯:果粉用iPhone为何很爽?原因是有几大功能安卓永远做不好
- 天天观点:女生妇女节休假半天被公司辞退!法院判公司赔18万余元
手机
iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- iphone11大小尺寸是多少?苹果iPhone11和iPhone13的区别是什么?
- 警方通报辅警执法直播中被撞飞:犯罪嫌疑人已投案
- 男子被关545天申国赔:获赔18万多 驳回精神抚慰金
- 3天内26名本土感染者,辽宁确诊人数已超安徽
- 广西柳州一男子因纠纷杀害三人后自首
- 洱海坠机4名机组人员被批准为烈士 数千干部群众悼念
家电
java -- Object类和String类
Object类
java.lang.Object
类是Java语言中的根类,每个类都使用 Object 作为超类, 所有的类都直接或间接继承自 Object 类。所有对象(包括数组)都实现这个类的方法。
native 本地方法
在Object类的源码中定义了native
修饰的方法,native
修饰的方法称为本地方法。
特点
- 被native修饰的方法,非Java语言编写,是由C++语言编写。
- 本地方法在运行时期进入本地方法栈内存,本地方法栈是一块独立内存的区域。
- 本地方法的意义是和操作系统进行交互。
private static native void registerNatives();static { registerNatives();}
当程序运行的时候,Object类会最先被加载到内存中。类进入内存后首先加载自己的静态成员,static代码块中调用了本地方法registerNatives()
,和操作系统进行交互。
(相关资料图)
toString方法
方法声明:public String toString()
:返回该对象的字符串表示。Object类toString()方法源码:
public String toString() {return getClass().getName() + "@" + Integer.toHexString(hashCode());}
源码分析:
getClass().getName()
返回类的全限定名字。hashCode()
方法返回int值,可以暂时理解为对象的内存地址。Integer.toHexString()
将int类型的值转成十六进制。- 因此调用对象的toString()方法将看到内存的地址值。
创建Person类,并调用方法toString()
public static void main(String[] args){ Person person = new Person(); String str = person.toString(); System.out.println(str); System.out.println(person);}
通过程序运行,得到结论,在输出语句中打印对象,就是在调用对象的toString()方法。
重写toString方法
由于toString方法返回的结果是内存地址,而在开发中,内存地址并没有实际的应用价值,经常需要按照对象的属性得到相应的字符串表现形式,因此也需要重写它。
public class Person { private String name; private int age; @Override public String toString() { return "Person"+name+":"+age; } // 省略构造器与Getter Setter}
equals方法
方法声明:public boolean equals(Object obj)
:指示其他某个对象是否与此对象“相等”。
Object类equals()方法源码:
public boolean equals(Object obj) { return (this == obj);}
源码分析:
- this是当前对象,哪个对象调用的equals方法就表示哪个对象。
- obj表述传递的参数,参数类型Object,可以传递任意类型对象。
- this==obj 比较两个对象的内存地址是否相同
equals方法默认比较两个对象的内存地址是否相同,相同则返回true。
重写equals方法
实际应用中,比较内存地址是否相同并没有意义,我们可以定义对象自己的比较方式,比较对象中成员变量的值是否相同。需要对方法进行重写。
需求:重写equals()方法,比较两个对象中姓名和年龄是否相同,如果姓名和年龄都相同返回true,否则返回false。
public class Person { private String name; private int age; public boolean equals(Object obj){ //判断两个对象地址弱相同,即为同一个对象 if(this == obj) return true; //obj对象为空,无需比较,返回false if(obj == null) return false; //obj如果是Person类型对象,则强制转换 if(obj instanceof Person){ Person person = (Person)obj; //比较两个对象的name属性和age属性,如果相等,返回true return this.name.equals(person.name) && this.age == person.age; } return false; }}
hashCode方法
方法声明 public native int hashCode();
返回一个哈希值
哈希值: 可以理解为一个唯一值 或 逻辑地址
调用hashCode, 比较两对象的哈希, 相当于比较两个对象的地址值重写hashCode, 比较两对象的内容若想确定内容是否真的相同 先比较两对象的hashCode(因为比较数字较容易)
- 不同 说明两对象内容一定不同
- 相同 不能说明两对象一定相同 需要继续比较 equals, 比较其内容
重写hashCode方法
public int hashCode() {// 成员变量是引用类型, 直接调用hashCode方法得到一个int值// 成员变量是基本类型, 直接使用对应的值int result = name != null ? name.hashCode() : 0;result = 31 * result + age;return result;}
String类
java.lang.String
类代表字符串。Java程序中所有的字符串文字(例如"abc"
)都可以被看作是实现此类的实例。
特点
1.字符串不变:字符串的值在创建后不能被更改。
String s1 = "abc";s1 += "d";System.out.println(s1); // "abcd" // 内存中有"abc","abcd"两个对象,s1从指向"abc",改变指向,指向了"abcd"。
2.因为String对象是不可变的,所以它们可以被共享。
String s1 = "abc";String s2 = "abc";// 内存中只有一个"abc"对象被创建,同时被s1和s2共享。
3."abc"
等效于 char[] data={ "a" , "b" , "c" }
,但是底层原理是字节数组( byte[] )
例如:String str = "abc";相当于: char data[] = {"a", "b", "c"}; String str = new String(data);// String底层是靠字符数组实现的。
构造方法
public String()
:初始化新创建的 String对象,以使其表示空字符序列。public String(char[] value)
:通过当前参数中的字符数组来构造新的String。public String(byte[] bytes)
:通过使用平台的默认字符集解码当前参数中的字节数组来构造新的String。直接赋值的方式创建字符串对象
构造举例,代码如下:
public class StringDemo01 { public static void main(String[] args) { //public String():创建一个空白字符串对象,不含有任何内容 String s1 = new String(); System.out.println("s1:" + s1); //public String(char[] chs):根据字符数组的内容,来创建字符串对象 char[] chs = {"a", "b", "c"}; String s2 = new String(chs); System.out.println("s2:" + s2); //public String(byte[] bys):根据字节数组的内容,来创建字符串对象 byte[] bys = {97, 98, 99}; String s3 = new String(bys); System.out.println("s3:" + s3); //String s = “abc”;直接赋值的方式创建字符串对象,内容就是abc String s4 = "abc"; System.out.println("s4:" + s4); }}
常用方法
获取字符串的长度
public int length ()
: 返回此字符串的长度
字符串拼接
public String concat (String str)
:将指定的字符串连接到该字符串的末尾。
String s12 = "abc".concat("bcd");System.out.println("concat拼接后: " + s12);
字符串 转换为 字符数组
public char[] toCharArray()
char[] strToChar = s4.toCharArray();for (int i = 0; i < strToChar.length; i++) {System.out.print(strToChar[i] + " ");}System.out.println();
字符串 转换为 字节数组
public byte[] getBytes()
byte[] strToByte = s2.getBytes();for (int i = 0; i < strToByte.length; i++) {System.out.print(strToByte[i] + " ");}
获取指定索引位置的元素
public char charAt (int index)
:返回指定索引处的 char值。
// 根据索引找字符, 若索引不存在, 抛出StringIndexOutOfBoundsException(字符串索引越界异常)String s = "I Love Java";char c = s.charAt(0);System.out.println(c);for (int i = 0; i < s.length(); i++) {System.out.print(s.charAt(i));}System.out.println();
获取指定字符索引
public int indexOf (String str)
:返回指定子字符串第一次出现在该字符串内的索引。int indexOf(String str, int fromIndex)
: 从指定索引位置开始查找lastIndexOf(String str)
: 查找字符(串)最后一次出现的位置的索引
参数可以是char, int 或 String 类型
int index = s.indexOf("a");System.out.println("字符a第一次出现的索引位置: " + index);System.out.println("97对应的字符第一次出现的位置: " + s.indexOf(97) );// 字符a第二次出现的索引位置System.out.println("字符a第二次出现的索引位置: " + s.indexOf("a", index + 1) );s1 = "abcaaaabcaab";int abIndex = s1.indexOf("ab");System.out.println("字符串ab第一次出现的索引位置: " + abIndex);int abIndex2 = s1.indexOf("ab", abIndex + 1);// int abIndex2 = s1.indexOf("ab", abIndex + "ab".length());System.out.println("字符串ab第二次出现的索引位置: " + abIndex2);System.out.println("字符串ab第三次出现的索引位置: " + s1.indexOf("ab", abIndex2 + 1));String path = "d:\\work\\abc\\1.txt";// 查询字符"\"最后一次出现的位置System.out.println(path.lastIndexOf("\\"));
字符串截取
substring(int startIndex)
: 从开始索引截取到末尾substring(int startIndex, int endIndex)
: 截取字符串中 [start, end)的字符串
因为字符串不可改变, 所以返回一个新的字符串
// 截取LoveString subLove = s.substring(2, 6);System.out.println(subLove);// 截取文件名int lastIndex = path.lastIndexOf("\\");String fileName = path.substring(lastIndex + 1);System.out.println(fileName);
去除字符串两端空格
public String trim()
String s13 = " ab c ";System.out.println("原字符串: " + s13);System.out.println("去除两端空格: " + s13.trim());
字符串替换
public String replace (CharSequence target, CharSequence replacement)
: 将与target匹配的字符串使用replacement字符串替换public String replaceAll(String regex, String replacement)
: 将与regex(正则)匹配的字符串使用replacement字符串替换区别: replaceAll支持正则表达式, 而replace不支持
String s14 = "张三-李四-王五-赵六";String s15 = s14.replace("-", " ");System.out.println("replace替换: " + s15);s14 = "张三--------李四---王五--赵六";String s16 = s14.replaceAll("-+", " ");System.out.println("replaceAll替换: " + s16);
切割字符串
public String[] split(String regex)
:将此字符串按照给定的regex(正则)拆分为字符串数组
String[] strArr = s14.split("-+");for (String s : strArr) {System.out.print(s + " ");}System.out.println();// 以"."分割ip地址String myIp = "192.168.1.1";// "."在正则中表示匹配任意字符, "\"为转义符, java要拿到"\", 需要对"\"转义, 即"\\"strArr = myIp.split("\\.");for (String s: strArr) {System.out.print(s + " ");}System.out.println();
关键词:
java -- Object类和String类
债市日报:4月4日
全球看热讯:4月江南等地存在洪涝灾害风险 南方部分河流可能发生超警洪水
每日速看!精度优于10米 我国海上垂直回收火箭试验圆满成功
焦点信息:想不想要RTX 4070 Ti?七彩虹iGame动图设计大赛免费送
2023全球汽车品牌价值100强发布:特斯拉第一、26家中国车企上榜
【世界独家】《暗黑4》玩家反对买豪华版早玩4天 凭啥买标准版要晚玩
今日精选:一女子睡觉未摘耳钉 1个月后取下耳垂裂成两瓣:画面可怕
天天新消息丨超详细!新手如何创建一个Vue项目
【求助贴】临危受命,如何救火做到一半的项目?
本田雅阁插混版后备箱隆起 博主:吹不下去了、真不如比亚迪汉
工信部通报扫码支付新骗局:钻App漏子 远程扫付款码“偷钱”
世界报道:五一还有近1个月!三山五岳就爆满了
今日播报!广州拟对公园、广场等场所全天禁止驾驶电动自行车 你支持吗?
全球播报:6.4万买的软件终于能用了?特斯拉FSD被曝将于国内大范围测试
全球微资讯!微信可以直接借钱的小程序:不用下载软件就可以到账
当前要闻:读客文化:公司的数字内容业务包括了电子书业务和有声书业务
环球关注:氢燃料汽车不认输 日本投资15万亿日元豪赌未来:产能6倍提升
世界快讯:果粉用iPhone为何很爽?原因是有几大功能安卓永远做不好
天天观点:女生妇女节休假半天被公司辞退!法院判公司赔18万余元
每日热闻!油车车主注意了!4月起可在加油区域使用手机支付
世界新资讯:新海诚:想早日再来中国!想念中国菜和白酒
每日消息!分享我炼制的脚本神器,powershell版《tcp-ping》
【环球快播报】记一次对抗流氓软件的经历
Linux文件类型发布啦!
视点!模拟mybatis接口动态注册过程
天天快播:Linux之父:连你自己都懒得解释,那这就是一堆垃圾!
天天快看:不选无痛分娩,却愿意花钱给婴儿拍写真?大部分人花钱并不靠理性权衡,想花就花了
【环球报资讯】疑似广汽埃安Hyper GT充电站自燃 车辆还未正式亮相发布
环球今头条!超级小桀“世界前30记录”被亲戚家熊孩子清零:直播间设备也遭破坏
一个月多次大范围崩溃!苹果天气又崩上热搜:iPhone免费天气App了解下
百事通!我进入银行科技部半年,已经丧失跳槽的能力了!
使用vue2+element-ui+vuex实现后台管理系统的头部背景色动态点击修改
视焦点讯!Python数据分析第七周作业随笔记录
焦点速读:python文件操作:r、w、a、r+、w+、a+和b模式
小皮1-click漏洞的代码审计学习笔记
天天亮点!百余名驻澳门部队官兵无偿献血
发射6枚火箭后 马斯克SpaceX的劲敌维珍轨道倒了:已申请破产
健康低脂 鲜嫩多汁:肌肉小王子即食鸡胸肉10袋19.9元
iPhone自带天气应用崩了 苹果客服:没收到反馈 重启或升级试试
每日精选:力压美国!全球AI论文发表量前十机构:九所来自中国
焦点热门:电视剧《他是谁》收官!聂宝华下线了
每日信息:人民日报发声后!中央政法委将严查!刘国梁危险
当前动态:Apache DB Utils教程_编程入门自学教程_菜鸟教程-免费教程分享
搭一下 Stable Diffusion WebUI
世界观热点:杭州小伙高速开特斯拉 “自动驾驶”变“自动撞车”
全球热消息:GPT-4学会“自我反思”:测试表现提升达30%
世界视讯!酷睿独享大小核架构 至强CPU不会混搭:Intel解释原因
电视画质新高度 乐视发布85寸新品“让影像狂飙”
北京环球影城回应不让摄影师进:不允许商业旅拍 个人可以
每日热文:市应急管理局开展地震监测台站巡查工作
【速看料】JavaScript:数组的sort()排序(遇到负数时如何处理)
游戏内存不能为read是什么原因?游戏内存不能为read的解决方法
魅族MX3上市时间和价格是多少?魅族mx3参数配置
hynix内存条是什么牌子?hynix内存条参数怎么看?
ibooks store不可用是怎么回事?ibooks store不可用怎么解决?
天龙八部3怎么把画面调小?天龙八部3装备评分排行榜
揭秘电诈手段|打开“屏幕共享”,存款不翼而飞
最全.NET Core 、.NET 5、.NET 6和.NET 7简介和区别
数学建模(三):模拟退火算法(SA)
今日要闻!Advanced Installer傻瓜式打包教程
环球快报:“蜀道电行者”打好森林防火“组合拳”
快资讯:日媒:后锂离子电池时代竞争 中国碾压式领先日本、美国
全球今日讯!279元大额券:杰士邦零感003系列18枚30.9元狂促
每日报道:5.75亿超《你的名字》!《铃芽之旅》成中国影史日本动画票房第一
环球快看点丨安徽淮北9级大风:女子睡醒发现房顶被吹走 网友羡慕睡眠质量
知名演员王刚清空社交账号 本人回应:没兴趣没精力经营
热消息:陕西发布清明出行预测:公路基本畅通运行,高速车流量是平日1.3倍
JAVA多线程并发编程-避坑指南
今日热闻!安装MYSQL_5.0/8.0教程(附数据库和客户端工具下载链接)
今日热议:易基因: oxRRBS+RRBS揭示炎症性肠病导致发育异常的表观遗传机制|甲基化研究
今日聚焦!导演陆川:AI 15秒生成的海报 比专业公司一个月做得还好
318川藏线突现雪崩 行车记录仪拍下惊险一幕
世界微资讯!5500元 一图读懂特斯拉补能神器CyberVault赛博充:专为中国用户定制
信息:“喝酒吃药”卷土重来!公募基金重仓股TOP50中贵州茅台仍在榜首,还有17只票被增持(附表)
【报资讯】南漳:油菜花开春意浓
世界观察:揭秘你不知道的“寒食节”:春秋时期延续至今 要吃青团、凉面
车评人批丰田埃尔法不装后防撞梁:一个倒车碰撞车体就变形
天天热资讯!消灭刘海挖孔!曝iPhone 17 Pro将是首款真全面屏苹果手机
全球信息:5A级薄荷抗菌 凉感冰丝太爽:卡帝乐鳄鱼夏季平角裤7.3元/条发车
观焦点:标准版终于要上高刷了!iPhone或2025年全系列引入LTPO技术
天天热讯:扫叶林风后,拾薪山雨前
day35 860. 柠檬水找零
当前快播:全网最详细中英文ChatGPT-GPT-4示例文档-智能AI辅助写作从0到1快速入门——官网推荐的48种最佳应用场景(附python/node.js/
环球微速讯:四月份去贵州旅游好吗_四月份去贵州旅游
戴苹果手表致手腕红肿你遇见没?苹果客服回应:或与皮肤敏感有关
全球微资讯!《拿破仑》年内公映
世界热消息:北汽越野BJ90狂降71万:打2.8折提换壳奔驰GLS
天天观天下!就是玩!马斯克将推特图标换成柴犬头像:还发了一幅漫画
每日讯息!村民回应网传奥迪轿车被当祭品焚烧:确实是意外
前沿热点:美克生能源携手新凤鸣集团 打造5MWh用户侧储能电站
天天关注:男生1900元买iPhone 14 Pro Max开机竟是安卓系统:商家被平台封禁
世界速看:铠侠成功研制出HLC闪存!SSD容量暴增:速度/耐用性比QLC还拉跨
环球观热点:2999元起 魅族20系列首销一秒破亿!京东、天猫多平台销冠
世界即时看!ChatGPT出现大规模封号; 我国移动网络IPv6流量首次突破50%;菜鸟首个航空运货中心落户深圳|Do早报
观焦点:Centos 分割卷组
焦点消息!中国恒大:公司与债权人特别小组成员签订三份重组支持协议
三利好助A股四月开门红 “小阳春”行情值得期待
每日消息!交易拥挤度创23年纪录 TMT板块还能热多久
要闻:国际金融市场早知道:4月4日