Java学习总结:6
String类(接上篇)
字符串的拆分
public class Test1_1_2_1 {public static void main(String args[]){String str = "hello world";String result[] = str.split(" "); //以空格作为间隔for(int x=0;x<result.length;x++){System.out.print(result[x]+"、");}System.out.println();String result2[] = str.split(""); //字符串全部拆分for(int y=0;y<result2.length;y++){System.out.print(result2[y]+"、");}}
}
//结果: hello、world、
// h、e、l、l、o、 、w、o、r、l、d、
如果split()方法中设置的是一个空字符串,那么就表示全部拆分。
public class Test1_1_2_1 {public static void main(String args[]){System.out.println();String result3[] = str.split(" ",3);//拆分为指定个数for(int z=0;z<result3.length;z++){System.out.println(result3[z]);}}
}
//结果: hello
// world
// !!!
上面这个程序设置了拆分个数。
String类的其他方法
//去掉字符串左右空格
public class Test1_1_2_2 {public static void main(String args[]){String str = " hello world ";System.out.println(str.trim());}
}
trim()只能删除左右空格,无法删除中间空格。
为了删除字符串中间的空格,我们可以使用replaceAll()实现空格删除。
public class Test1_1_2_2 {public static void main(String args[]){String str = " hello world ";System.out.println(str.replaceAll(" ",""));}
}
//实现首字母大写的操作
public class Test1_1_2_3 {public static void main(String args[]){String str = "hello";System.out.println(initcap(str));}public static String initcap(String temp){return temp.substring(0,1).toUpperCase()+temp.substring(1);}
}
this关键字
在java中this可以完成三件事情:
1.调用本类属性
2.调用本类方法
3.表示当前对象
1.调用本类属性
class Book6 {private String title;private double price;public Book6(String title, double price) {title = title;price = price;}public String getTitle() {return "书名:" + title + ",价格:" + price;}
}
public class Test1_1_2_4 {public static void main(String args[]){Book6 book = new Book6("java开发",89.2);System.out.println(book.getTitle());}
}
结果:书名:null,价格:0.0
产生这样的结果的原因是,在java中的变量使用具备“就近使用”的原则,在构造方法中已经存在title和price变量名称,所以如果直接调用title或price变量将不会使用类中的属性,只会使用方法中的参数,所以此时Book类的构造方法是无法为title或price属性赋值的,如下:
在这种情况下为了可以明确地找到要访问的变量属于类中的属性,需要在变量前加上this,这样就可以准确地进行属性的标记。
class Book6 {private String title;private double price;public Book6(String title, double price) {this.title = title;//this属性表示的是本类属性,这样即使与方法中的参数重名也可以明确定位。this.price = price;}public String getTitle() {return "书名:" + title + ",价格:" + price;}
}
public class Test1_1_2_4 {public static void main(String args[]){Book6 book = new Book6("java开发",89.2);System.out.println(book.getTitle());}
}
调用本类方法
class Book7{private String title;private double price;public Book7(){System.out.println("一个新的Book7类对象产生");}public Book7(String title){this(); //调用本类无参构造方法this.title = title;}public Book7(String title,double price){this(title); //调用本类有参构造方法this.price = price; }public String getTitle(){return "书名:"+this.title+",价格:"+this.price;}
}
public class Test1_1_2_5 {public static void main(String args[]){Book7 book = new Book7("java开发",89.2);System.out.println(book.getTitle());}
}
在使用this调用构造方法时,存在两个重要限制:
1.使用this()调用构造方法形式的代码只能放在构造方法的首行;
2.进行构造方法互相调用时,一定要保留调用的出口(即避免出现构造方法递归调用造成死循环的错误)。
表示当前对象
class Book8{public void print(){System.out.println("this="+this);//this就是当前调用方法的对象}
}
public class Test1_1_2_6 {public static void main(String args[]){Book8 book1 = new Book8();System.out.println("book1="+book1);book1.print(); //此时book1为当前对象Book8 book2 = new Book8();System.out.println("book2="+book2);book2.print(); //此时book2为当前对象}
}
//结果: book1=Book8@34a245ab
// this=Book8@34a245ab
// book2=Book8@7cc355be
// this=Book8@7cc355be
引用传递
引用传递的核心意义:同一块堆内存空间可以被不同的栈内存所指向,不同的栈内存可以对同一堆内存进行内容的修改。
public class Test1_1_2_7 {public static void main(String args[]){String msg = "Hello";fun(msg);System.out.println(msg);}public static void fun(String temp){temp = "world";}
}
//结果:Hello
所有的变更都是在fun()方法中完成的,一旦fun()方法执行完毕temp将失效,其对应的内存也将变成垃圾。
对象比较
String类里面的equals()方法也属于对象比较操作。
class Book9{private String title;private double price;public Book9(String title,double price){this.title = title;this.price = price;}public String getTitle(){return this.title;}public double getPrice(){return this.price;}
}
public class Test1_1_2_8 {public static void main(String args[]){Book9 b1 = new Book9("java开发",79.8);Book9 b2 = new Book9("java开发",79.8);if(b1.getTitle().equals(b2.getTitle())&&b1.getPrice()==b2.getPrice()){System.out.println("是同一个对象");}else{System.out.println("不是同一个对象");}}
}
//结果:是同一个对象
class Book10{private String title;private double price;public Book10(String title,double price){this.title=title;this.price=price;}public boolean compare(Book10 book){if(book==null){return false;}if (this==book){ //内存地址相同return true;}if (this.title.equals(book.title)&&this.price==book.price){ //属性判断return true;}else{return false;}}
}
public class Test1_1_2_9 {public static void main(String args[]){Book10 b1=new Book10("Java开发",79.8);Book10 b2=new Book10("Java开发",79.8);if (b1.compare(b2)){ //对象比较System.out.println("是同一个对象");}else{System.out.println("不是同一个对象");}}
}
//结果:是同一个对象
通过上面的例子可以发现对象比较的操作有如下4个特点:
1.本类接收自己的引用,再与本类当前的对象(this)进行比较;
2.为了避免NullPointerException的产生,应该增加一个null的判断;
3.为了防止浪费性能的情况出现(要判断的属性会多),可以增加地址数值的判断,因为相同的对象地址相同;
4.进行属性的一次比较,如果属性全部相同,则返回true,否则返回false。
相关文章:

java面试常见问题之Hibernate总结
1 Hibernate的检索方式 导航对象图检索(根据已经加载的对象,导航到其他对象。) OID检索(按照对象的OID来检索对象。) HQL检索(使用面向对象的HQL查询语言。) QBC检索(使…

HDU 4267 线段树 离散点区间更新, 自叶子节点至根单点查询
题意: n个数字 下面n个数字表示数列 2个操作 1 [u, v] k add [u,v ]区间 (u点要计算)每隔k个位置,该数字add 2 pos 询问 pos下标的值(下标从1开始) 思路: 因为k很小, 可以直接存 k…

Java学习总结:7
static关键字 一个类的主要组成就是属性和方法(分为构造方法和普通方法两种),而每一个对象都分别拥有各自的属性内容(不同对象的属性保存在不同的堆内存中),如果类中的某个属性希望定义为公共属性(即所有对象都可以使用的属性),则可以在声明…

mybatis 使用resultMap实现数据库的操作
resultType:直接表示返回类型 resultMap:对外部resultMap的引用 二者不能同时使用 创建一个实体类Role和User public class Role {private Integer id;private String roleCode;private String roleName;//省略set、get方法 创建User类(在User中有roleId…

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course
【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course 三维产品可视化课程 教程大小:5.38G 1280X720 含课程素材文件 你会学到什么 项目简介及其必须包含的内容 蓝图以及如何获得和使用 逐步建模流程 如何制作UV和纹理 用UV投射材料 生成…
Spring MVC 和WebFlux 区别
本节主要对比了WebMvc 和 WebFlux两个Web框架,Spring已经为我们开发做了很大努力了,所以在合适的场景下这种异步框架还是非常可行的。但是还要考虑后期其它异步框架是否能够完善,全链路异步才能发挥异步最大的优势。

Cygwin鸡毛蒜皮
2019独角兽企业重金招聘Python工程师标准>>> Windows命令乱码: cygwin控制台mintty的编码缺省是UTF-8, 右键调整mintty选项[text] 改编码为GBK UNIX路径和Windows路径互转: 使用cygpath工具. 如: #cd cygpath C:\\Windows 安装包管理器apt-cyg: 安装: # svn --fo…

Using unique option prefix myisam-recover instead of myisam-recover-option
[转载]关于mysql error.log报"Using unique option prefix myisam-recover instead of myisam-recover-options ..."转载:http://blog.csdn.net/cloud_xy/article/details/21756601启动时日志中有这个警告的:[Warning] Using unique option pr…

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020
Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264,1280720 |音频:aac,48000 Hz 语言:英语 中文字幕(机译)原英文字幕 |大小:33.0 GB | 145节课程| (36h 18m) 你会学到什么 云…

Java学习总结:8
链表 class Node2{ //定义一个节点private String data;private Node2 next; //要保存的下一个节点public Node2(String data){ //每一个Node2对象都必须保存相应的数据this.datadata;}public void setNext(Node2 next){this.nextnext;}public Node2 getNext(){return this.…

(原创)c#学习笔记10--定义类成员03--接口的实现01--显示实现接口成员
10.3 接口的实现 在继续前,先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似,使用的代码如下: interface IMyInterface {// Interface members. } 接口成员的定义与类成员的定义相似,但有几个重要的区别&#…

JVM架构解析
本文阐述了JVM的构成和组件,配图清晰易懂,是学习Java开发者的入门必读文章。 每个Java开发人员都知道字节码经由JRE(Java运行时环境)执行。但他们或许不知道JRE其实是由Java虚拟机(JVM)实现,JV…

cmd实用命令
1.netstat 查看电脑端口状况 实际应用举例:查看某软件坚监听的电脑端口。 在任务管理器中选择列...,打开PID的显示。在这里查看某个应用程序的线程ID是多少。例如QQ:4904. 运行,cmd,输入netstat -ano,显示当…

嵌入式BootLoader技术内幕(三)
四、 关于串口终端 在 boot loader 程序的设计与实现中,没有什么能够比从串口终端正确地收到打印信息能更令人激动了。此外,向串口终端打印信息也是一个非常重要而又有效的调试手段。但是,我们经常会碰到串口终端显示乱码或根本没有显示的问题…

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020
Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020 时长:16h 55m |视频:. MP4 1280x720,30 fps(r) |音频:AAC,44100 Hz,2ch |大小:15.5 GB 共62小节课程 流派:电子学习|语言:英语中文字幕(机译)含…

Java学习总结:9
继承 继承性是面向对象的第二大主要特征,而继承性要解决的就是代码重用的问题,利用继承性可以从已有的类继续派生出新的子类,也可以利用子类扩展出更多的操作功能。 继承的实现 继承的格式 class 子类 extends 父类 {}子类实际上是将父类…

转 小辉_Ray CORS(跨域资源共享)
前言:上一篇文章在写如何使用JSONP实现跨域请求的时候,偶然间提到CORS,即Cross-Origin Resource Sharing(跨域资源共享)。虽然前些天也看了一下CORS相关的文章,但是今天兴趣一来还是亲自地写篇博客来研究一…

使用dd命令复制ASM磁盘的spfile
通过下面sql查询参数文件在ASM磁盘中的AU分布SELECT x1.file_number,x1.name,x2.GROUP_KFFXP,x2.DISK_KFFXP,x2.AU_KFFXP,x3.pathFROM (SELECT *FROM (SELECT t1.GROUP_NUMBER, t1.FILE_NUMBER, t2.NAME, rownum AS rnFROM v$asm_file t1LEFT JOIN v$asm_alias t2ON t1.FILE_NU…

[转载]IPMSG(飞鸽传书)协议翻译
/***********************************************************本人(ypxing)根据下面的协议,C语言写的ipmsg(聊天,文件/文件夹传输)*请参见:http://blog.chinaunix.net/u1/35100/showart_689330.html**************************************…

SketchUp Pro 2021基础入门学习视频教程
SketchUp Pro 2021基础入门学习视频教程 1280X720 MP4 |视频:h264,1280720 |音频:AAC,44.1 KHz,2 Ch 流派:电子学习|语言:英语中文字幕(根据原英文字幕机译更准确) |时长:74节课(7h 31m) |大小:4.9 GB 含课程工程文件…

Java学习总结:10
覆写 在子类定义属性或方法时,有可能出现定义的属性或方法与父类同名的情况,这样的操作就称为覆写。 方法的覆写 当子类定义了和父类的方法名称、返回值类型、参数类型及个数完全相同的方法时,就称为方法的覆写。 class A1{public void f…

ubuntu中启用ssh服务
ssh程序分为有客户端程序openssh-client和服务端程序openssh-server。如果需要ssh登陆到别的电脑,需要安装openssh-client,该程序ubuntu是默认安装的。而如果需要从远程连接到本机,则需要安装openssh-server,该程序需要自己安装。…

JVM 常见异常及内存诊断
栈内存溢出 栈内存大小设置:-Xss size 默认除了window以外的所有操作系统默认情况大小为 1MB,window 的默认大小依赖于虚拟机内存。 栈帧过多导致栈内存溢出 下述示例代码,由于递归深度没有限制且没有设置出口,每次方法的调用都…

解决文字无法缩小的问题
在css设置文字大小的时候,到12px 的时候你在怎么缩小他,他的大小就是不变font-size:百分比来控制也不起作用-webkit-transform: scale(0.8); -o-transform: scale(1); display: inline-block; 转载于:https://www.cnblogs.com/xinlinux/p/408…

asp.net图片浏览器效果
技术来源于同学会实践 前台设计 <% Page Language"C#" AutoEventWireup"true" CodeFile"txh.aspx.cs" Inherits"txh" %> <!DOCTYPE html> <html xmlns"http://www.w3.org/1999/xhtml"> <head runat&qu…

Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading
Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading Blender材质和着色基础视频教程 CGCookie – Fundamentals of Blender Materials and Shading CGCookie–Blender材质和着色基础 教程大小解压后:3.1G 共6大章 45小节课…

Java学习总结:11(final关键字)
final关键字 在Java中final称为终结器,在Java中可以使用final定义类、方法和属性。 一.使用final定义的类不能再有子类,即:任何类都不能继承以final声明的父类。 在设计类的时候,如果这个类不需要有子类,类的细节不…

2022-2028年中国汽车制动器行业投资分析及前景预测报告
【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新(交付时间约3个工作日) 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国汽车制动器行业市场行业相关概述、中国汽车制动器行业市场行业运行环境、分析了中国汽车制…
[转]优秀编程的“艺术”
优秀的代码是一件艺术品?或者软件工艺宣言言过其实了?成为一名“优秀”的程序员,有什么要求? 设想你雇佣了一名水管工,让他更换地下室的旧管道。这个家伙在工作之前、之中、之后,他就没有停止过谈论他的管道…

洛谷 P5019 铺设道路(差分)
嗯... 题目链接:https://www.luogu.org/problem/P5019 首先简化一下题意: 给定一个长为N的数组,每次操作可以选择一个区间减去1,问最少多少次操作可以将数组中的数全变成0 N≤100000 思路: 首先对于第一个数字d_1我们至…