java string常见操作题

1.string.操作方法,默认会生成一个新的string保存在常量池中,不会改变原来常量池中的string。

因为常量池,string是final的,一经创建无法改变。

看下面代码:

    String str = "abcde";
         str.toUpperCase();
        System.out.println(str);
        //输出还是abcde,而非ABCDE。因为string是final的,string的改变内容的操作方法会生成一个新的string在常量池中。

2.引用变量指向常量池中的新的str

String str = "abcde";
         str = str.toUpperCase();
        System.out.println(str);//常量池中新生成一个string,以前的引用变量指向新地址

3.字符串反转,用string缓存类,stringBuffer或者stringBuilder.

因为string缓存类,预先在堆内存中开辟一个16字符的存储空间,借以不断改变string的值

String str = "abcde";
        StringBuilder stringBuilder =  new StringBuilder(str);
        stringBuilder.reverse();
        str = stringBuilder.toString();
        System.out.println(str);//输出edcba

stringBuilder是在堆内存开辟一个存储空间,对stringBuilder的修改全是在修改stringBuilder对象内存本身。

4.判断字符串是否对称:

String str = "abcde";
        StringBuilder stringBuilder =  new StringBuilder(str);
        String str2 = stringBuilder.reverse().toString();
        System.out.println(str==str2);

5.输出字符串的子串,比如string str = "@abc  efg . ghk";

string[] strArray = string.split("byChar");

string.split(“byChar”)方法

要求输出abc efg ghk

String str = "[email protected] ghk efg";
        str = str.replaceAll("@", " ");
        String[] strArray = str.split(" ");
        for(String str1:strArray)
        {
            System.out.println(str1);
        }

5. 编写一个程序,将下面的一段文本中的各个单词的字母顺序翻转,
“To be or not to be",将变成"oT eb ro ton ot eb."。

public static void main(String[] args) {
String s = "To be or not to be";
String ss[] = s.split(" ");
StringBuffer sb2 = new StringBuffer();
for (int i = 0; i < ss.length; i++) {
StringBuffer sb = new StringBuffer(ss[i]);
sb.reverse();
sb2.append(sb);
if(i == ss.length-1){
sb2.append(".");
}else{
sb2.append(" ");
}
}
System.out.println(sb2);
}

6.String s=”name=zhangsan age=18 classNo=090728”;
将上面的字符串拆分,结果如下:
zhangsan 18 090728

public static void main(String[] args) {
        String s="name=zhangsan age=18 classNo=090728";
        String[] ss = s.split(" ");
        StringBuffer sb =new StringBuffer();
        for (int i = 0; i < ss.length; i++) {
            String[] ss2 =ss[i].split("=");
            sb.append(ss2[1]);
            sb.append("  ");
        }
        System.out.println(sb);
    }

总结:字符串的常见操作无非几种

1.字符串反转 用stringBuilder.reverse();

2.字符串切割String[] strArray = str.spilt("spiltChar");

3.字符串拼接 用stringBuilder.append("str");

时间: 2024-10-24 22:01:47

java string常见操作题的相关文章

Java开发常见基础题大全

1.&和&&的区别? &:逻辑与(and),运算符两边的表达式均为true时,整个结果才为true. &&:短路与,如果第一个表达式为false时,第二个表达式就不会计算了. 2.”==”和equals方法究竟有什么区别? ==:表示两个变量的值是否相等,用于比较两个基本数据类型的数据或者引用变量. equals:用于比较两个独立对象的内容是否相同.字符串的比较也用equals. == 对于基本类型来说是值比较,对于引用类型来说是比较的是引用:而 equal

java String 的+操作导致的问题

不说别的先看代码截图: 结果如下: 很好奇为什么String对象的null加上了""就等于"null"字符串了,先给点资料看看: 这个是我找的一个人博客上的截图,null不是任何对象的类型,那么这个到底是怎么实现的呢? 机制的我又找到了一点资料: L0 LINENUMBER 27 L0 ACONST_NULL ASTORE 1 L1 LINENUMBER 28 L1 NEW java/lang/StringBuilder DUP INVOKESPECIAL java

String字符串操作题

/** * 反转键盘录入字符串 * 反转键盘录入的字符串 * 反转键盘录入的字符串 * 反转键盘录入的字符串 * */ Scanner sc = new Scanner(System.in);String in = sc.next();System.out.println("录入的字符串" + in);char a = '1';char[] arr = in.toCharArray();//转为数组,返回值类型是数组for (int i = 0; i < arr.length/2

Java链表常见操作【剑指Offer】03:从尾到头打印链表

题目描述 输入一个链表,按链表从尾到头的顺序返回一个ArrayList. 题解一:递归 1 /* 2 在最后一次递归方法返回以后,每一层的递归方法都会做一个arrayList.add(listNode.val)这个操作, 3 从最后一次到第一次,逆向的调用了后面的方法 4 */ 5 static ArrayList<Integer> list = new ArrayList<>(); 6 public static ArrayList<Integer> printLis

java String类-字符串常见操作

/* String常见的操作: String str="abchgthujidfg"; 1,获取 1.1字符串包含的字符数,即字符串的长度. int lenrth(): str.length();   //注意字符串获取长度的方法区别于数组获取长度的方法.数组采用格式:arr.length 1.2根据位置获取位置上的字符. char charAt(int index): str.charAt(4); 1.3根据字符获取该字符的位置. int indexOf(int ch): str.i

java实现二叉树的常见操作

本文转自:红客联盟 解释:程序调用自身的编程技巧叫做递归. 程序调用自身的编程技巧称为递归( recursion).递归做为一种算法在程序设计语言中广泛应用. 一个过程或函数在其定义或说明中有直接或间接调用自身的一种方法,它通常把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解,递归策略只需少量的程序就可描述出解题过程所需要的多次重复计算,大大地减少了程序的代码量.递归的能力在于用有限的语句来定义对象的无限集合. 递归的三个条件: 边界条件 递归前进段 递归返回段 当边界条件不

java数据结构:单链表常见操作代码实现

一.概述: 本文主要总结单链表常见操作的实现,包括链表结点添加.删除:链表正向遍历和反向遍历.链表排序.判断链表是否有环.是否相交.获取某一结点等. 二.概念: 链表: 一种重要的数据结构,HashMap等集合的底层结构都是链表结构.链表以结点作为存储单元,这些存储单元可以是不连续的.每个结点由两部分组成:存储的数值+前序结点和后序结点的指针.即有前序结点的指针又有后序结点的指针的链表称为双向链表,只包含后续指针的链表为单链表,本文总结的均为单链表的操作. 单链表结构: Java中单链表采用No

[java学习笔记]java语言基础概述之数组的定义&amp;常见操作(遍历、排序、查找)&amp;二维数组

1.数组基础 1.什么是数组:           同一类型数据的集合,就是一个容器. 2.数组的好处:           可以自动为数组中的元素从零开始编号,方便操作这些数据. 3.格式:  (一旦创建,必须明确长度)          格式1:              元素类型   [ ]  数组名  =  new  元素类型  [元素个数即数组的长度]:              示例:int[] array = new int[5];          格式2:           

String类的常见操作

一.String类概述 1.String的值是一个对象,也是一个常量不能被改变 2.String的equals方法是比较两个字符串的内容 3.String s1=”abc”  String s2=new String(“abc”) s1有一个对象,s2有两个对象 二.String常见功能---获取和判断 1.获取 1.1 字符串中包含的字符数,也就是字符串的长度. int length():获取长度. 1.2 根据指定位置获取位置上的某个字符 char charAt(int index) 1.3