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的更多相关文章

  1. 016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值

    016 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 10 布尔类型和字符串的字面值 本文知识点:字面值 关于字面值的概念,需要注意:很多地方,我们可能就把字面值 ...

  2. 020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结

    020 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 14 变量与常量 知识总结 本文知识点:变量与常量 知识总结 Java中的标识符 Java中的关键字 目前常 ...

  3. 017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例

    017 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 11 变量综合案例 本文知识点:变量 相同类型的变量可以一次同时定义多个 例:可以一行代码同时定义2个变量x ...

  4. 007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符

    007 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 01 Java标识符 Java变量与常量主要内容 Java变量与常量主要内容如下,主要是对以下内容的学习,没 ...

  5. Java基础-字符串(String)常用方法

    Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...

  6. Java基础-字符串连接运算符String link operator

    Java基础-字符串连接运算符String link operator 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 字符串链接运算符是通过“+”进行拼接的. 一.使用“+”进行字 ...

  7. 019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例

    019 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 13 数据类型转换的代码示例 本文知识点:Java中的数据类型转换案例 学习视频有误,导致没法写文,文章内容 ...

  8. 018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念

    018 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 12 数据类型转换的基本概念 本文知识点:Java中的数据类型转换 类型转换 类型转换分类 2类,分别是: ...

  9. 015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码

    015 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 09 Unicode编码 本文知识点:Unicode编码以及字符如何表示? ASCII码是美国提出的标准信息 ...

  10. 014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 “字符型”字面值

    014 01 Android 零基础入门 01 Java基础语法 02 Java常量与变量 08 "字符型"字面值 字符型 字面值如何表示? 两个关键:单引号(必须是英文单引号). ...

随机推荐

  1. isolcpus的学习与了解

    isolcpus的学习与了解 前言 最近一直跟同事说要进行CPU的bind bind到具体的core 当时还一直装B, 说这样能够提高性能. 但是今天起床早上查看资料时发现,其实是先设置隔离的. 让操 ...

  2. 一文带你搞懂如何优化慢SQL

    作者:京东科技 宋慧超 一.前言 最近通过SGM监控发现有两个SQL的执行时间占该任务总执行时间的90%,通过对该SQL进行分析和优化的过程中,又重新对SQL语句的执行顺序和SQL语句的执行计划进行了 ...

  3. 【DP】DMOPC '21 Contest 8 P5 - Tree Building

    Problem Link 给定 \(n,m\) 和一个长为 \(m\) 的代价序列,对于一棵 \(n\) 个节点,每个节点度数不超过 \(m\) 的树,定义它的代价为 \(\sum\limits_{i ...

  4. 任意文件下载包含https的图片

    使用a标签进行下载 <a href="https://zos.alipayobjects.com/rmsportal/jkjgkEfvpUPVyRjUImniVslZfWPnJuuZ. ...

  5. vue中设置props参数类型

    props参数的使用 在使用vue的项目开发的过程中 经常会定义大量的组件使用 这个时候组件中的定义的数据类型就非常重要了 此时我们需要定义组件中需要的数据类型 之前我只知道简单的几个 今天忽然发现原 ...

  6. 【K哥爬虫普法】辛苦钱被中间商抽走八成,还因此锒铛入狱

    我国目前并未出台专门针对网络爬虫技术的法律规范,但在司法实践中,相关判决已屡见不鲜,K 哥特设了"K哥爬虫普法"专栏,本栏目通过对真实案例的分析,旨在提高广大爬虫工程师的法律意识, ...

  7. (数据科学学习手札113)Python+Dash快速web应用开发——表单控件篇(下)

    本文示例代码已上传至我的Github仓库https://github.com/CNFeffery/DataScienceStudyNotes 由我开源的先进Dash组件库feffery-antd-co ...

  8. gRPC with JWT

    在 gRPC 中使用 JWT(JSON Web Tokens)进行身份验证是一种常见的做法,它可以帮助你确保请求方的身份和权限.下面是一种使用 gRPC 和 JWT 进行身份验证的步骤: 生成和签发 ...

  9. 总结一个问题:csdn发布文章页面为空或者创作内容管理为空

    总结一个问题:csdn发布文章页面或者创作内容管理为空 解决方案: 打开chrome浏览器的设置: 点击清除数据: 选择高级里清除数据,一般24小时就可以了,不行就7天

  10. Python xlwt数据保存到 Excel中以及xlrd读取excel文件画图

    1.方法一:xlwt 1.1 安装包 pip install xlwt 1.2 保存数据到 Excel import xlwt import numpy as np import random # 新 ...