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

原文地址:http://www.cnblogs.com/RimekeyBergling/p/16825979.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性