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

Java学习总结:5

面向对象

对象数组

引用数据类型也可以定义数组
格式:

1.对象数组的动态初始化
类名称 对象数组名称 = new 类名称 [长度];

动态初始化默认情况下,数组的每一个元素都是其对应的默认值null。

class Book5{private String title;private double price;public Book5(String t,double p){title = t;price = p;}public String getInfo(){return "书名:"+title+"价格:"+price;}
}
public class Test1_1_6 {public static void main(String args[]){Book5 books[] = new Book5[3];//开辟了一个长度为3的对象数组,内容为nullbooks[0] = new Book5("java",79.8);books[1] = new Book5("jsp",69.8);books[2] = new Book5("android",89.8);for(int x=0;x<books.length;x++){System.out.println(books[x].getInfo());}}
}
2.对象数组静态初始化
类名称 对象数组名称 = new 类名称 [] {实例化对象,实例化对象,...};
class Book5{private String title;private double price;public Book5(String t,double p){title = t;price = p;}public String getInfo(){return "书名:"+title+"价格:"+price;}
}
public class Test1_1_6
{public static void main(String args[]){Book5 book[] = new Book5[]{new Book5("java",79.8),new Book5("jsp",69.8),new Book5("android",89.8),};for(int x=0;x<book.length;x++){System.out.println(book[x].getInfo());}}
}

在这里插入图片描述

String类的基本概念

String类的两种实例化方式:
1.直接赋值

public class Test1_1_7 {public static void main(String args[]){String str = "Hello";//直接赋值System.out.println(str);}
}

2.构造方法实例化

public String(String str)
public class Test1_1_7 {public static void main(String args[]){String str = new String("Hello");//使用关键字newSystem.out.println(str);}
}

字符串的比较

public class Test1_1_7 {public static void main(String args[]){String stra = "Hello";String strb = new String("Hello");String strc = strb;System.out.println(stra == strb);System.out.println(stra == strc);System.out.println(strb == strc);}
}
结果为:falsefalsetrue

我们发现,str1于str2虽然包含的内容是一样的,但是使用"=="比较时结果于我们预想的有差异,这是因为" == "在用于引用数据的比较时,比较的并不是内容,而是地址的数值内容,往往用在判断两个不同名的对象是否指向同一内存空间。

在这里插入图片描述

要比较字符串的内容,可以使用String类里面定义的方法

public boolean equals(String str);//区分大小写 
public class Test1_1_7 {public static void main(String args[]){String stra = "Hello";String strb = new String("Hello");String strc = strb;System.out.println(stra.equals(strb));System.out.println(stra.equals(strc));System.out.println(strb.equals(strc));}
}
结果为:truetrue	true

String类中"=="和"equals()"的区别
1." == "的主要功能是进行数值相等的判断,如果用在String对象上表示的是内存地址数值的比较。
2."equals()"是由String提供的一个方法,专门负责进行字符串内容的比较。

字符串常量就是String的匿名对象

String类的匿名对象是由系统自动生成的,不再由用户自己直接创建。
每一个字符串都是String类的匿名对象。

两种实例化方式的区别
1.直接赋值实例化
public class Test1_1_8 {public static void main(String args[]){String stra = "Hello";String strb = "Hello";String strc = "Hello";String strd = "World";System.out.println(stra == strb);System.out.println(stra == strc);System.out.println(strb == strc);System.out.println(stra == strd);}
}
结果:	truetruetruefalse

可以看出直接赋值在相同内容的情况下不会开辟新的堆空间,而会直接指向自己已有的堆内存空间,从而实现堆内存空间的重用。在这里插入图片描述
也就是说String类会自动将相同内容的对象进行引用传递操作,而不同内容的对象则会开辟新的堆内存空间。

2.构造方法实例化
String str = new String("Hello");

使用构造方法实例化会造成内存的浪费。
因为每一个字符串都是一个String的匿名对象,所以会首先在堆内存中开辟一块空间保存字符串"Hello",然后使用关键字new,开辟另一块堆内存空间,而之前定义的匿名对象的堆内存空间将会成为垃圾,等待被GC回收,所以原匿名对象的字符串不会再在对象池中。
所以使用构造方法开辟的字符串对象实际上会开辟两块空间,其中有一块空间将成为垃圾。在这里插入图片描述
如果希望开辟的新内存数据也可以在对象池中保存,可以采用String类定义的一个手工入池操作。
定义语法如下:

public String intern();
public class Test1_1_9 {public static void main(String args[]){String stra = new String("Hello").intern();String strb = "Hello";System.out.println(stra==strb);}
}

字符串一旦定义则不可改变

public class Test1_1_1_1 {public static void main(String args[]){String str = "Hello";str = str + "World";str += "!!!";System.out.println(str);}
}

在这里插入图片描述
实际上在进行String类对象的内容修改时,原始的字符串都没有发生变化(最终没有引用的堆内存空间将成为垃圾空间),而改变的只是String类对象的引用关系。
所以得出结论:字符串一旦定义则不可改变。

String类的常用方法

在这里插入图片描述
在这里插入图片描述

字符与字符串

在这里插入图片描述

public class Test1_1_1_2 {public static void main(String args[]){String str = "hello";char c= str.charAt(0);System.out.println(c);}
}

charAt()方法的主要作用是从一个字符串中截取指定索引的字符,由于java中字符串的索引下标从0开始,所以截取的第一个字符为’h’。

public class Test1_1_1_3 {public static void main(String args[]){String str = "hello";char[]data = str.toCharArray();//将字符串变为字符数组for(int x=0;x<data.length;x++){System.out.print(data[x]+"、");}}
}

toCharArray()方法可以将一个字符串拆分为字符数组,而后拆分后的字符数组的长度就是字符串的长度。

public class Test1_1_1_4 {public static void main(String args[]){String str = "123456789";if(isNumber(str)){System.out.println("该字符串由数字组成");}else{System.out.println("该字符串由非数字组成");}}public static boolean isNumber(String temp){char[]data = temp.toCharArray();for (int x=0;x<data.length;x++){if(data[x]>'9'||data[x]<'0'){return false;}}return true;}
}

提示:针对boolean值的方法习惯性的命名是以"isXxx()"的形式命名。

字节与字符串

在这里插入图片描述

public class Test1_1_1_5 {public static void main(String args[]){String str = "helloworld";byte[]data = str.getBytes();	//将字符串变为字节数组for(int x=0;x<data.length;x++){data[x]-=32;				//将小写字母变为大写形式}System.out.println(new String(data));System.out.println(new String(data,5,5));}
}

字符串的比较

在这里插入图片描述

public class Test1_1_1_6 {public static void main(String args[]){String stra = "hello";String strb = "hELLO";System.out.println(stra.equals(strb));System.out.println(stra.equalsIgnoreCase(strb));}
}

equalsIgnoreCase()方法不分大小写。

字符串的查找

在这里插入图片描述

public class Test1_1_1_7 {public static void main(String args[]){String str = "helloword";System.out.println(str.indexOf("world"));System.out.println(str.indexOf("l"));System.out.println(str.indexOf("l",5));System.out.println(str.lastIndexOf("l"));}
}

字符串的替换

在这里插入图片描述

public class Test1_1_1_8 {public static void main(String args[]){String str = "helloworld";String resultA = str.replaceAll("l","_");String resultB = str.replaceFirst("l","_");System.out.println(resultA);System.out.println(resultB);}
}

字符串的截取

在这里插入图片描述

public class Test1_1_1_9 {public static void main(String args[]){String str = "helloworld";String resultA = str.substring(5);//从指定索引截取到结尾String resultB = str.substring(0,5);//截取部分子字符串System.out.println(resultA);System.out.println(resultB);}
}

substring()方法传递的参数只能是正整数,不能是负数。

相关文章:

Maya初学者完整的3D动画大师班视频教程

Maya初学者完整的3D动画大师班视频教程 时间13小时30分 包括课程项目文件 1280X720 MP4 语言&#xff1a;英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09;原英文字幕 教程大小解压后&#xff1a;8.38G Maya初学者。完整的3D动画大师班 百度一下 云桥网络 平台…

jQuery-1.9.1源码分析系列(四) 缓存系统

先前在分析Sizzle的时候分析到Sizzle有自己的缓存机制&#xff0c;点击这里查看。不过Sizzle的缓存只是对内使用的&#xff08;内部自己存&#xff0c;自己取&#xff09;。接下来分析jQuery可以对外使用的缓存&#xff08;可存可取&#xff09;。 首先需要明白jQuery缓存需要解…

CBA 赛程的笔记 - 北京首钢

2014-11-01 19:35北京首钢103:89广东宏远结束技术统计 发挥不错&#xff0c;打的比较好&#xff01;2014-11-05 19:35八一双鹿89:100北京首钢结束技术统计 第一节国内球员打的太屎&#xff0c;最后一节国内球员发挥不错&#xff01;2014-11-07 19:35浙江稠州107:116北京首钢结束…

个人技术生涯的感悟(2)

很多时候&#xff0c;一门门槛很低的编程语言对于初学者的帮助是非常大的&#xff0c;从而决定这个人的技术路线的选择。 在经历过大一下学期对C&#xff0c;和C的迷茫之后&#xff0c;在大二上学期&#xff0c;学校在搞一个网页设计比赛&#xff0c;正好和两个朋友一起参赛。开…

HtmlAgilityPack 处理通配的contains

//选择不包含class属性的节点 var result node.SelectNodes(".//span[not(class)]"); //选择不包含class和id属性的节点 var result node.SelectNodes(".//span[not(class) and not(id)]"); //选择不包含class"expire"的span var result node…

游戏风格化角色创建入门指南视频教程

游戏风格化角色创建入门指南视频教程 时间 33小时 包括项目文件 1920X1080 MP4 语言&#xff1a;英语中文字幕&#xff08;根据原英文字幕机译更准确&#xff09;原英文字幕 游戏中的风格化角色创建入门指南 百度一下 云桥网络 平台huo取 教程&#xff01; 信息。 教程33小…

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 x0;x<result.length;x){System.out.print(result[x]"…

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;每次方法的调用都…