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. [转帖]原创经典:SQLSERVER SendStringParametersAsUnicode引发的疑案 推荐

    https://developer.aliyun.com/article/429563 简介: 上周五碰到开发的请求协助解决数据预定程序中对单头等几个表检索数据时检索条件尾数是9的数据特别慢.第一时间 ...

  2. [转帖]CPU Utilization is Wrong

    Brendan Gregg's Blog home CPU Utilization is Wrong 09 May 2017 The metric we all use for CPU utiliza ...

  3. cookie的设置读取

    <script> // 设置cookie值哈 let username = '我是cookie' document.cookie = "name=" + usernam ...

  4. 【K哥爬虫普法】百亿电商数据,直接盗取获利,被判 5 年!

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

  5. 爬虫逆向基础,认识 SM1-SM9、ZUC 国密算法

    关注微信公众号:K哥爬虫,QQ交流群:808574309,持续分享爬虫进阶.JS/安卓逆向等技术干货! [01x00] 简介 国密即国家密码局认定的国产加密算法,爬虫工程师在做 JS 逆向的时候,会遇 ...

  6. NetCore高级系列文章01---创建项目及配置文件

    .NET Core是适用于 Windows.Linux 和 macOS 的免费.开源托管的计算机软件框架,作为.NET开发人员,全面拥抱.NetCore将成为趋势. 本系列文章将分为两大部分讲解.Ne ...

  7. 小白学k8s(6)使用kubespray部署k8s

    kubespray部署k8s 准备 需要关闭防火墙 配置hosts 处理镜像 配置文件 运行 通过对应的镜像 运行代码 查看结果 出现的问题 墙 错误的配置 kubespray部署k8s 准备 kub ...

  8. 强化学习技巧四:模型训练速度过慢、GPU利用率较低,CPU利用率很低问题总结与分析。

    1.PyTorchGPU利用率较低问题原因: 在服务器端或者本地pc端, 输入nvidia-smi 来观察显卡的GPU内存占用率(Memory-Usage),显卡的GPU利用率(GPU-util),然 ...

  9. C/C++ 字符串拷贝处理

    C语言的字符串操作 strtok 实现字符串切割: 将字符串根据分隔符进行切割分片. #include <stdio.h> int main(int argc, char* argv[]) ...

  10. 转换流(InputStreamReader OutputStreamWriter)

    1.字节输出转换流(OutputStreamWriter) 1 package iochange; 2 3 import java.io.*; 4 5 /* 6 java.io.OutputStrea ...