当前位置: 首页 > 编程日记 > 正文

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的检索方式 导航对象图检索&#xff08;根据已经加载的对象&#xff0c;导航到其他对象。&#xff09; OID检索&#xff08;按照对象的OID来检索对象。&#xff09; HQL检索&#xff08;使用面向对象的HQL查询语言。&#xff09; QBC检索&#xff08;使…

HDU 4267 线段树 离散点区间更新, 自叶子节点至根单点查询

题意&#xff1a; n个数字 下面n个数字表示数列 2个操作 1 [u, v] k add [u,v ]区间 &#xff08;u点要计算&#xff09;每隔k个位置&#xff0c;该数字add 2 pos 询问 pos下标的值&#xff08;下标从1开始&#xff09; 思路&#xff1a; 因为k很小&#xff0c; 可以直接存 k…

Java学习总结:7

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

mybatis 使用resultMap实现数据库的操作

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

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course

【3DMax教程】三维产品可视化视频教程 3d Products Visualization Course 三维产品可视化课程 教程大小&#xff1a;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 ..."转载&#xff1a;http://blog.csdn.net/cloud_xy/article/details/21756601启动时日志中有这个警告的&#xff1a;[Warning] Using unique option pr…

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020

Maya硬表面建模学习教程 Master Hard Surface Modeling in Maya 2020 流派:电子学习| MP4 |视频:h264&#xff0c;1280720 |音频:aac&#xff0c;48000 Hz 语言:英语 中文字幕&#xff08;机译&#xff09;原英文字幕 |大小: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 接口的实现 在继续前&#xff0c;先讨论一下如何定义和实现接口。第9章介绍了接口定义的方式与类相似&#xff0c;使用的代码如下&#xff1a; interface IMyInterface {// Interface members. } 接口成员的定义与类成员的定义相似&#xff0c;但有几个重要的区别&#…

JVM架构解析

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

cmd实用命令

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

嵌入式BootLoader技术内幕(三)

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

Maya 2020面部绑定动画学习视频教程 Facial Rigging 101 – Maya 2020

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

Java学习总结:9

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

转 小辉_Ray CORS(跨域资源共享)

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

使用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)根据下面的协议&#xff0c;C语言写的ipmsg(聊天&#xff0c;文件/文件夹传输)*请参见&#xff1a;http://blog.chinaunix.net/u1/35100/showart_689330.html**************************************…

SketchUp Pro 2021基础入门学习视频教程

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

Java学习总结:10

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

ubuntu中启用ssh服务

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

JVM 常见异常及内存诊断

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

解决文字无法缩小的问题

在css设置文字大小的时候&#xff0c;到12px 的时候你在怎么缩小他&#xff0c;他的大小就是不变font-size&#xff1a;百分比来控制也不起作用-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材质和着色基础 教程大小解压后&#xff1a;3.1G 共6大章 45小节课…

Java学习总结:11(final关键字)

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

2022-2028年中国汽车制动器行业投资分析及前景预测报告

【报告类型】产业研究 【报告价格】4500起 【出版时间】即时更新&#xff08;交付时间约3个工作日&#xff09; 【发布机构】智研瞻产业研究院 【报告格式】PDF版 本报告介绍了中国汽车制动器行业市场行业相关概述、中国汽车制动器行业市场行业运行环境、分析了中国汽车制…

[转]优秀编程的“艺术”

优秀的代码是一件艺术品&#xff1f;或者软件工艺宣言言过其实了&#xff1f;成为一名“优秀”的程序员&#xff0c;有什么要求&#xff1f; 设想你雇佣了一名水管工&#xff0c;让他更换地下室的旧管道。这个家伙在工作之前、之中、之后&#xff0c;他就没有停止过谈论他的管道…

洛谷 P5019 铺设道路(差分)

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