文档章节

java --常用类(String)

求是科技
 求是科技
发布于 2016/10/03 18:41
字数 736
阅读 64
收藏 0

码上生花,ECharts 作品展示赛正式启动!>>>

#1.String
字符串采用unicode编码,一个字符占两个字节。

public class TestString {

	/**
	 * String:它表示不可变的字符序列,底层使用char[]存放元素
	 * String是finall;即不可重复对一个String变量赋值
	 */
	public static void main(String[] args) {
		String str1 = "panDa";
		String str2 = "panDa";
		String str3 = new String("panDa");
		String str4 = "panDa"+"laoLi";
		String str5 = "laoLi";
		String str6 = str1+str5;
		String str7 = "tiantian";
		str7 = str7 + "kaixin";
		String str8 = "panDalaoLi";
		/**
		 * str1的"panDa"存放在字符串常量池中,对应一个地址(假设0x1234),地址存放在栈中
		 * str2先去常量池找"panDa",有的话,直接使用地址(0x1234),没有的话,新建一个地址
		 * str3:new表示在堆中开辟一个新的区间,区间地址(假设0x1235),地址存放在栈中,
		 * 同时该区间对应一个常量值"panDa",常量值存放在常量池中,常量值对应的地址(0x1234)
		 * 因此,new String("panDa")表示新建了两个对象,对象1的地址0x1234,对象2的地址0x1235
		 * 所以查找str3对应的值的时候,1.先找区间地址(0x1235),再找值地址(0x1234)
		 * ==:比较地址值
		 * equals:比较内容值
		 */
		//true(0x1234 == 0x1234)
		System.out.println(str1 == str2);
		//false(0x1234 != 0x1235)
		System.out.println(str1 == str3);
		//true("panDa == panDa")
		System.out.println(str1.equals(str3));
		
		//str4表示的是"panDalaoLi"对应的地址值
		//str6表示的是str1的地址值与str5的地址值相加
		System.out.println(str4 == str6);
		//true(str4与str6对应的值是一样的)
		System.out.println(str4.equals(str6));
		//true(sr4与str8对应的常量池地址值是一样的)
		System.out.println(str4 == str8);
		
		//str7 = str7 + "kaixin";
		/**
		 * str7="tiantian",同str1
		 * str7 = str7 + "kaixin",在常量池中重新开辟一个区间,即重新有个地址值
		 */
		Car car1 = new Car("audi");
		Car car2 = new Car("audi");
		System.out.println(car1);
		System.out.println(car2);
		//false(很明显这是new了两个地址)
		System.out.println(car1 == car2);
		//false(car1与car对应的是两个地址值,因为没有重写hashcode与equals方法)
		System.out.println(car1.equals(car2));
		//true(两个对象属性的地址是一样的)
		System.out.println(car1.brand == car2.brand);
		//true(两个对象的属性值是一样的)
		System.out.println(car1.brand.equals(car2.brand));
	}
}

class Car{
	String brand;

	public String getBrand() {
		return brand;
	}

	public void setBrand(String brand) {
		this.brand = brand;
	}
	//构造函数
	public Car(String brand) {
		super();
		this.brand = brand;
	}
}

#2.String常用方法

	public static void main(String[] args) {
		String str1 = "abcdefgabd2345";
		String str2 = "abcd";
		//返回字符串的长度
		System.out.println(str1.length());
		//返回指定位置的字符
		System.out.println(str1.charAt(3));
		//比较两个字符串的值是否相等
		System.out.println(str1.equals(str2));
		//返回形参在字符串中首次出现的位置
		System.out.println(str1.indexOf("de"));
		//返回形参在字符串中最后一次出现的位置
		System.out.println(str1.lastIndexOf("ab"));
		//截取字符串,从第3个位置开始截取
		System.out.println(str1.substring(3));
		//截取字符串片段,从2开始(包含)到5结束(不包含)
		System.out.println(str1.substring(2, 5));
		//字符/字符串替换
		System.out.println(str1.replace("ga", "ll"));
		//字符串替换,基于正则表达式
		System.out.println(str1.replaceAll("\\d", "z"));
		//去除字符串首尾空格
		System.out.println(str1.trim());
		//字符串拼接
		System.out.println(str1.concat("zzz"));
		//字符串分隔符,返回字符串数组
		System.out.println(str1.split("a"));
	}

© 著作权归作者所有

求是科技

求是科技

粉丝 104
博文 460
码字总数 240021
作品 0
成都
后端工程师
私信 提问
加载中
请先登录后再评论。
2020年最新版Java面试题大全(文末附参考答案)

  前言 本套Java面试题大全总共分为以下这十三个模块:   Java基础知识面试题   Java异常面试题   JVM面试题   Spring面试题   Spring MVC面试题   Spring Boot面试题   Spr...

java进阶架构师
03/30
0
0
[数据库操作]Java中的JDBC的使用方法.

[数据库操作]Java中的JDBC的使用方法. 前言: 想必大家在实际编码中都遇到过JDBC的操作, 这里仅做自己的一个总结, 有错误和不完整之处还请大家提出来. 1,JDBC其实一套规范(接口) 数据库厂商需...

osc_grdodi9l
2018/02/07
5
0
java如何连接数据库并对其操作(以PostgreSQL为例)

java如何连接数据库并对其操作(以PostgreSQL为例) 相关概念JDBC(Java Data Base Connectivity)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它是一组用java语言编写...

osc_acwq3gr9
2019/08/06
5
0
2018蓝旭后端培训之JDBC

前言:在学习jdbc之前推荐大家再次学学常用的SQL语句,熟悉java API文档的查看 一.什么是JDBC jdbc即Java Database Conection,java数据库连接,是一种用于执行SQL语句的Java API,可以为多种...

浪舟子
03/31
0
0
JDBC连接mysql数据库操作详解

1.什么是JDBC   JDBC(Java Data Base Connectivity,java数据库连接)是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。JDBC提...

osc_ft59t5i9
2018/06/15
1
0

没有更多内容

加载失败,请刷新页面

加载更多

Elasticsearch如何查询使用JSON字符串的DSL

背景 Java处理ES查询逻辑,有一种情况是用户从其他地方粘贴或者手动输入的JSON字符串的DSL语句;这个时候就没法使用QueryBuilder来构建所需要的SearchSource。查了查发现有个Wrapper的方式可...

叫我哀木涕
34分钟前
17
0
JDBC:ResultSet Types

ResultSet Types 用于确定ResultSet的某些特征和功能。 ResultSet.TYPE_FORWARD_ONLY 只能调用 next,不能调用 previous 。否则报错 ResultSet.TYPE_SCROLL_INSENSITIVE 能调用 next/previou...

mrsuperli
昨天
7
0
Cesium笔记(3):基本控件简介—ImageryProvider地图瓦片地图配

cesiumjs中可定制多种图层,可以使用互联网上很多地图提供商的图层数据,也可以使用自己的地图数据。Cesium支持多种标准化格式的GIS瓦片服务,可以把栅格图层绘制到地球的表面——cesiumjs的...

zhoulujun
昨天
15
0
跟小伟一起学习类加载机制

我们在学习 java 基础的时候,从宏观上了解了一个类到运行大致是:.java 文件通过 javac 编译器编译得到 .class 文件,在用到该类时,jvm 会加载该 class 文件,并创建对应的 class 对象,将...

niceyoo
昨天
8
0
Electron整合React使用搭建开发环境

Electron整合React使用搭建开发环境 博客说明 文章所涉及的资料来自互联网整理和个人总结,意在于个人学习和经验汇总,如有什么地方侵权,请联系本人删除,谢谢! 简介 用于构建用户界面的 ...

归子莫
昨天
17
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部