java基础字符串---02
String
概述
String类在java.lang包下,所以使用的时候不需要导包
String类代表字符串,java程序中的所有字符串文字(例如"abc")都被实现为此类的实例
也就是说,java程序中所有的双引号字符串,都是String类的对象
字符串的特点
1.字符串不可变,他们的值在创建后不能被更改
2.虽然String的值是不可变的,但是他们可以被共享
3.字符串效果上相当于字符数组(char[]),但是底层原理是字节数组(byte[])
String构造方法
方法名 说明
public String() 创建一个空白字符串对象,不含有任何内容
public String(char[] chs) 根据字符数组的内容,来创建字符串对象
public String(byte[] bys) 根据字节数组的内容,来创建字符串对象
String s = "abc" 直接赋值的方式创建字符串对象,内容就是abc
# 例子
public class StringDemo {
public static void main(String[] args) {
// 创建一个空白字符串对象
String s1 = new String();
System.out.println("s1:"+ s1);
// 字符数组
char[] chs = {'a', 'b', 'c', 'd'};
String s2 = new String(chs);
System.out.println("s2" + s2); // "abcd"
// 字节数组
byte[] bys = {97, 98, 99};
String s3 = new String(bys);
System.out.println("s3"+ s3); // 打印的结果为对应的asci码对应的字母"abc"
// 直接赋值 推荐使用这个方便
String s4 = "abc";
System.out.println("s4" + s4);
}
}
String对象的特点
1.通过new创建的字符串对象,每一次new都会申请一个内存空间,虽然内容相同,但是地址值不同
char[] chs = {"a", "b", "c"}
String s1 = new String(chs);
String s2 = new String(chs);
上面的代码中,JVM会首先创建一个字符数组,然后每一次new的时候都会有一个新的地址,只不过s1和s2参考的字符串内容是相同的
2.以“”方式给出的字符串,只要字符序列相同(顺序和大小写),无论在程序代码中出现几次,JVM都只会创建一个String对象,并在字符串池中维护
String s3 = "abc";
String s4 = "abc";
在上面的代码中,针对第一行代码,JVM会建立一个String对象放在字符串池中,并给s3参考;
第二行则让s4直接参考字符串池中的String对象,也就是说它们本质上是同一个对象
字符串比较
使用 == 做比较
1.基本类型:比较的是数据值是否相同
2.引用类型:比较的是地址值是否相同
字符串是对象,它比较内容是否相同,是通过一个方法来实现的,这个方法叫:equals()
public boolean equals(Object anObject): 将此字符串与指定对象进行比较,由于我们比较的是字符串对象,所以参数直接传递字符串
System.out.println(s1.equals(s2));
案例登录
import java.util.Scanner;
public class StringTest {
public static void main(String[] args) {
//用户名和密码
String username = "liuwei";
String password = "123456";
// 定义一个错误次数
int count = 3;
for(int i=0;i<3;i++){
//键盘录入要登录的用户和密码
Scanner sc = new Scanner(System.in);
System.out.println("请输出用户名:");
String name = sc.nextLine();
System.out.println("请输入密码:");
String pwd = sc.nextLine();
if(name.equals(username) && pwd.equals(password)){
System.out.println("登录成功");
break;
}else {
if(count >1 ){
System.out.println("账号或密码错误,请重新输出");
count--;
System.out.println("还剩:" + count + "次机会");
continue;
}else {
System.out.println("输入超过三次,请稍后再输出");
break;
}
}
}
}
}
遍历字符串案例
public class StringTest02 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String chs = sc.nextLine();
// 字符串.length() 获取字符的长度
for(int i=0;i<chs.length();i++){
// 字符串.charAt(索引下标) 根据索引下标取字符串中对应的值
System.out.println(chs.charAt(i));
}
}
}
统计字符次数
import java.util.Scanner;
public class StingTest03 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入字符串:");
String chs = sc.nextLine();
//要统计三种类型的字符串个数,定义三个变量,初始值为0
int bigCount = 0;
int smallCount = 0;
int numberCount = 0;
//遍历字符串
for(int i=0;i<chs.length();i++){
char ch = chs.charAt(i);
// 判断字符类型
if(ch>='A' && ch<='Z'){ # 大写字母范围
bigCount++;
}else if(ch>='a' && ch<='z'){ # 小写字母范围
smallCount++;
}else if(ch>='0' && ch<='9'){
numberCount++;
}
}
// 输出三种类型的字符个数
System.out.println("bigCount:" + bigCount);
System.out.println("smallCount:" + smallCount);
System.out.println("numberCount:" + numberCount);
}
}
字符串反转案例
import java.util.Scanner;
public class StringTest04 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个字符串:");
String line = sc.nextLine();
String s = reverse(line);
System.out.println(s);
}
//字符串反转方法
public static String reverse(String s) {
String ss = "";
for(int i=s.length()-1;i>=0;i--){
ss += s.charAt(i);
}
return ss;
}
}
java基础字符串---02的更多相关文章
- 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值
016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...
- 020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结
020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结 本文知识点:变量与常量 知识总结 Java中的标识符 Java中的关键字 目前常 ...
- 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例
017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...
- 007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符
007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符 Java变量与常量主要内容 Java变量与常量主要内容如下,主要是对以下内容的学习,没 ...
- Java基础-字符串(String)常用方法
Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...
- Java基础-字符串连接运算符String link operator
Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...
- 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例
019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...
- 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念
018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...
- 015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码
015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码 本文知识点:Unicode编码以及字符如何表示? ASCII码是美国提出的标准信息 ...
- 014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 “字符型”字面值
014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 "字符型"字面值 字符型 字面值如何表示? 两个关键:单引号(必须是英文单引号). ...
随机推荐
- [转帖]Web性能优化工具WebPageTest(二)——性能数据
Web性能优化工具WebPageTest(二)--性能数据 https://www.cnblogs.com/strick/p/6681692.html 在前一篇<配置>完成后,点击&quo ...
- [转帖]kill 参数表
https://www.cnblogs.com/alix-1988/p/14331898.html kill命令格式:kill -Signal pidpid是进程号,可以用 ps 命令查出 signa ...
- [转帖]内存随机访问也比顺序慢,带你深入理解内存IO过程
https://zhuanlan.zhihu.com/p/86513504 平时大家都知道内存访问很快,今天来让我们来思考两个问题: 问题1: 内存访问一次延时到底是多少?你是否会进行大概的估算? 例 ...
- [转帖]Linux 防火墙开放特定端口 (iptables)
查看状态: iptables -L -n 下面添加对特定端口开放的方法: 使用iptables开放如下端口 /sbin/iptables -I INPUT -p tcp --dport 8000 -j ...
- [转帖]Linux使用Stress-ng测试CPU、内存、磁盘I/O满载情况教程与范例
https://www.xiaoyuanjiu.com/108301.html 介绍如何在 Linux 系统上使用 stress-ng 负载测试工具,产生 CPU.内存等资源满载的状况. stress ...
- 申威CPU的简单知识梳理
摘要 最近有客户要用申威服务器了 自己很早之前简单测试过相关的CPU的服务器 但是感觉很多东西都不是很系统. 今天简单收集一下资料 希望对以后的工作有所帮助 申威CPU的创始 申威是解放军总参谋部第五 ...
- Redislabs的简单使用与benchmark测试结果
Redislabs的简单使用与benchmark测试结果 自己的理解 仅是理解. 没有看过源码 哨兵可以实现高可用, 但是对高吞吐是没有太大帮助的. 虽然可以实现主写从读, 但是在高并发的场景下延迟肯 ...
- 京东哥伦布即时设计平台ChatGPT落地实践
一.平台介绍 即时设计平台是一个即时搭建c端楼层的开发平台,支持通过导入relay设计稿url完成Ui2Code,在此基础上完成前端可视化搭建,同时支持通过ChatGPT完成一句话需求,搭建后的楼层自 ...
- 人均瑞数系列,瑞数 5 代 JS 逆向分析
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,抓包内容.敏感网址.数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 本文章未经许 ...
- 6.6 Windows驱动开发:内核枚举Minifilter微过滤驱动
Minifilter 是一种文件过滤驱动,该驱动简称为微过滤驱动,相对于传统的sfilter文件过滤驱动来说,微过滤驱动编写时更简单,其不需要考虑底层RIP如何派发且无需要考虑兼容性问题,微过滤驱动使 ...