首页 > 编程语言 >字符串_Java

字符串_Java

时间:2022-10-25 21:03:48浏览次数:50  
标签:Java String int System str 字符串 out

ASCII码

ASCII码连接字符和数字,每个常用字符都对应一个-128 ~ 127的数字,二者之间可以相互转化。

注意:目前负数没有与之对应的字符。

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        //将字符传换为对应的ASCII码值
        char c = 'a';
        System.out.println((int)c);

        //将ASCII码转换为对应的字符
        int a = 66;
        System.out.println((char)a);
    }
}

以上代码打印出来的结果如下

97
B

常用的ASCII码值
1.AZ是从6590;

2.az是从97122;

3.09对应的是4857;

字符串是可以参加运算的,参加运算的字符串会直接被当作ASCII码值带入运算;

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        int a = 'B' - 'A';
        int b = 'A' * 'B';
        char c = 'A' + 2;

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
    }
}

得到的结果为

1
4290
C

String

和C++/C里直接将字符串作为数组来使用不同;

Java的字符串是不能修改的,甚至连拼接都是在重新开一个字符串;

各种初始化

String a = "Hello World";

String b = "My name is ";

String x = b;  // 存储到了相同地址

String c = b + "xqc";  // String可以通过加号拼接

String d = "My age is " + 18;  // int会被隐式转化成字符串"18"

String str = String.format("My age is %d", 18);  // 格式化字符串,类似于C++中的sprintf,容许将18作为整数打印

String money_str = "123.45";

double money = Double.parseDouble(money_str);  // String转double

String是真的麻烦,第一是稍微修改就会重新开地址,开空间;

String a = "Hello ";
a += "World";  // 哪怕是直接拼接,也会构造一个新的字符串,重新开空间,开地址;

第二是,遍历String的时候,不能将它当数组处理,导致只能查看,不能修改更新;

String str = "Hello World";
for (int i = 0; i < str.length(); i ++ ) 
{
    System.out.print(str.charAt(i));  // 只能读取,不能写入
}

String常用API

1.str.length()

返回字符串的长度;

int sz = str.length();

2.String[] sp = str.spilt(用来分割的物)

以什么为分割线,分割字符串;

String a1="麦克雷|卡西迪|天王老子";
String[] sp = a1.split("\\|");
System.out.println(Arrays.toString(sp));
//结果是:[麦克雷, 卡西迪, 天王老子]

3.str.indexOf(char c)、str.indexOf(String str)、str.lastIndexOf(char c)、str.lastIndexOf(String str)

上面都是查找,找到了就返回下标;

找不到就返回-1;

4.str1.equals(str2)

将两个字符串进行匹配,不能用"==";

相同返回true , 不相同返回false;

if(str1.equals(str2))
{

}

5.str.compareTo()

判断两个字符串的字典序大小,负数表示小于,0表示相等,正数表示大于;

参照物是发起compareTo的字符串;

String s1 = "a";
int a = s1.compareTo("A");//正数;

int b = s1.compareTo("a");//0;

int c = s1.compareTo("b");//负数;

6.str.startsWith("前缀" (, 开始的下标))

判断字符串是否由某个前缀开头;

7.str.endsWith("后缀" (, 开始的下标))

判断是否以某个后缀结尾;

8.str.trim()

去掉首尾的空白字符

9.str.toLowerCase() / str.toUpperCase()

前者将字符串里的所有字母替换为小写,后者是全部替换为大写;

10.str.replace(char oldChar, char newChar) / str.replace(String oldRegex, String newRegex)

前者是将字符串里所有oldChar全部替换为newChar;

后者则是针对字符串的;

11.str.substring(int beginIndex, int endIndex)

返回从[beginIndex, endIndex)下标范围中的子串;

12.str.toCharArray()

将字符串转换为字符数组;

输入和输出

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.next();  // 输入字符串,遇到空格、回车等空白字符时停止输入
        String str2 = sc.nextLine();  // 输入一整行字符串,遇到空格不会停止输入,遇到回车才会停止

        System.out.println(str1);  // 可以直接输出
        System.out.printf("%s\n", str2);  // 也可以格式化输出,用 %s 表示字符串
    }
}

StringBuilder和StringBuffer

String不能被修改,如果打算修改字符串,可以使用StringBuilder和StringBuffer。

StringBuffer线程安全,速度较慢;

StringBuilder线程不安全,速度较快。

StringBuilder sb = new StringBuilder("Hello ");  // 初始化

sb.append("World");  // append,拼接字符串

System.out.println(sb);

for (int i = 0; i < sb.length(); i ++ ) 
{
    sb.setCharAt(i, (char)(sb.charAt(i) + 1));  // setCharAt读取和写入字符,这一行是将下标i的字符变成原来的ASCII+1,再转化为字符打印;
}

System.out.println(sb);

sb.reverse();//反转字符串;

System.out.prinln(sb);

结果是

Hello World
Ifmmp Xpsme
emspX pmmfI

标签:Java,String,int,System,str,字符串,out
From: https://www.cnblogs.com/RimekeyBergling/p/16825979.html

相关文章

  • 【Java[类与对象]】7-4 设计一个风扇Fan类
    设计一个名为Fan的类表示一个风扇。这个类包括:1.三个名为SlOW、MEDIUM和FAST,其值为1、2和3常量表示风扇的速度。2.一个名为speed的int类型私有数据域表示风扇的速度(默认......
  • 【Java[类与对象]】7-5 BankAccount类定义
    定义银行账户BankAccount类。私有数据成员:余额balance(整型)。公有成员方法:无参构造方法BankAccount():将账户余额初始化为0;带参构造方法BankAccount(intm):将账户余额初......
  • Java8新特性-接口增强、Lambda表达式、函数式接口
    一、Interface接口增强1.1默认方法1.概念:使用default关键字来修饰的方法2.语法:访问修饰符default返回值类型方法名称(参数列表){方法体;return返回值}3.......
  • 【Java[方法调用]】7-2 整数排序(降序)
    输入5个整数,对所有整数进行排序,按照降序输出。输入格式:输入5个整数。输出格式:按照降序输出5个整数。输入样例1:13526输出样例1:65321输入样例2:182......
  • 【Java[方法调用]】7-3 计算函数P(n,x)
    输入一个正整数repeat(0<repeat<10),做repeat次下列运算:输入一个整数n(n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。1(n=0)x(n=1)((2n-1)p(n-1,x)-(......
  • 【Java[类的创建与使用]】7-3 学生类定义
    定义一个Student类,含类成员变量:Stringname、Stringgender、intscore、booleanaward,所有的变量为私有(private)。1.编写有参构造函数:对name、gender、score、award赋......
  • java基础
    java基础注释单行注释//多行注释/**/文本注释/***/关键字标识符是大小写敏感的数据类型强类型语言基本类型byteshortintlong(数字后面加L)float......
  • 【Java[类的创建与使用]】7-4 设计一个"无名的粉"类
    为“无名的粉”写一个类:classWuMingFen要求:有三个属性:面码:StringtheMa粉的分量(两):intquantity是否带汤:booleanlikeSoup;写一个构造方法,以便于简化初始化过程,如:......
  • 【Java[类的创建与使用]】7-5 设计一个矩形类Rectangle
    编写一个Java应用程序,该程序包含两个类,类的定义如下:(1)一个有关计算矩形面积的类Rectangle,定义如下成员:①两个私有的成员变量:length(长,double类型)、width(宽,double类型);......
  • 算法】字符串复原IP地址,从前序与中序编辑序列构造二叉树
    算法学习有些时候是枯燥的,一点一点学习算法第一题算法题目描述对给定的两个日期之间的日期进行遍历,比如startTime是2014-07-11;endTime是2014-08-11如何把他们之间......