प्रौद्योगिकी साझेदारी

जावा - स्ट्रिंग क्लास

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. String वर्गः किम् ?

अहं मन्ये यदा भवन्तः C भाषां शिक्षमाणाः आसन् तदा भवन्तः तारानाम् सम्पर्कं कृतवन्तः, परन्तु C भाषायां भवन्तः केवलं उपयोगं कर्तुं शक्नुवन्ति
वर्ण सरणी char [10] str = “नमस्ते”;कोऽपि समर्पितः String वर्गः न प्रदत्तः . वस्तु-उन्मुखे जावा मध्ये String वर्गः तस्य कार्याणि च विशेषतया प्रदत्तानि सन्ति, यत् अस्माकं प्रोग्रामर्-जनानाम् उपयोगाय अधिकं सुविधाजनकम् अस्ति ।

स्ट्रिंग अपरिवर्तनीयता

स्ट्रिंग् इत्यस्य सामग्रीं परिवर्तयितुं न शक्यते ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

  • String क्लास् मध्ये वर्णाः वास्तवतः value इति वर्णसरण्यं निर्वाहयन्ति ।
  • String वर्गः final इत्यनेन परिवर्तितः अस्ति, यस्य अर्थः अस्ति यत् final इत्येतत् उत्तराधिकारं प्राप्तुं न शक्यते ।
  • अन्तिमः मूल्यं परिवर्तयति, यस्य अर्थः अस्ति यत् मूल्यं अन्येषां सरणीनां सन्दर्भं कर्तुं न शक्नोति, परन्तु सरणीयाः सामग्रीः अद्यापि परिवर्तयितुं शक्यते!

String इत्यस्मिन् स्ट्रिंग् इत्यस्य सामग्रीं परिवर्तयितुं सम्भावनायुक्ताः सर्वे क्रियाः नूतनं वस्तु निर्मान्ति, यत् परिवर्तितं तत् नूतनं वस्तु एव ।
यथा, उपतारानाम् अन्वेषणकाले :
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
केचन जनाः वदन्ति: Strings अपरिवर्तनीयानि सन्ति यतोहि तेषां अन्तः वर्णानाम् संग्रहणं कुर्वन् array final द्वारा परिवर्तितः अस्ति अतः परिवर्तयितुं न शक्यते ।

  • एतत् कथनं अशुद्धम् अस्ति प्रथमं, String इत्यस्य अन्तिमपरिवर्तनं सूचयति यत् String वर्गः अन्तिमवर्गः अस्ति, परिवर्तनं वा उत्तराधिकारं वा प्राप्तुं न शक्यते । अन्तिमः परिवर्तितः सन्दर्भप्रकारः सूचयति यत् सन्दर्भचरः अन्यवस्तूनि सन्दर्भयितुं न शक्नोति, परन्तु सन्दर्भितवस्तुनः सामग्रीः अद्यापि परिवर्तयितुं शक्यते ।
  public static void main(String[] args) {
        final char[] arr = {'h','e','l','l','o'};
        arr[0] = 'H';
        System.out.println(String.valueOf(arr));//Hello
        // arr = new char[]{'h','o'};Error

    }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

2. String वर्गस्य मूलभूतः उपयोगः

१ तारनिर्माणम्

String एकः सन्दर्भदत्तांशप्रकारः अस्ति तथा च स्ट्रिंग् स्वयं न संगृह्णाति ।

public class Test {
    public static void main(String[] args) {
        //1.直接赋值
        String s1 = "first";
        //2.new 对象
        String s2 = new String("second");
        //3. 创建字符数组
        char[] arr = {'t','h','i','r','d'};
        String s3 = new String(arr);
        
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
    }
}

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

सूचना:
String s1 = “प्रथमम्”;
जावा वर्चुअल् मशीन् (JVM) प्रथमं परीक्षते यत् "first" इति स्ट्रिंग् स्ट्रिंग् स्थिरांकपूले पूर्वमेव अस्ति वा इति । यदि अस्ति तर्हि नित्यपूले स्ट्रिंग् इत्यस्य सन्दर्भः प्रत्यक्षतया प्रत्यागच्छति यदि नास्ति तर्हि स्ट्रिंग् नित्यपूले योजितः भवति तथा च नित्यपूले तस्य सन्दर्भः प्रत्यागच्छति

२ String वस्तुनां तुलना

  1. == तुलनां करोति यत् ते समानाः सन्दर्भाः सन्ति वा
     //s1 s2 分别是new 一个新的字符串"hello"
    String s1 = new String("hello");
	String s2 = new String("hello");
	String s3 = "Hello";
	String s4 = s1;

	System.out.println(s1 == s2);//false
 	System.out.println(s1 == s4);//true
	System.out.println(s1 == s3);//false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  1. equals() इत्यनेन च उपयुज्यते यत् द्वौ स्ट्रिंग् समानौ स्तः इति निर्धारयितुं, सत्यं यदि समानं भवति, अन्यथा false इति प्रत्यागच्छति
      
        //因为Object类中的equals()方法是==实现的,完成不了String类的需求,
        //所以String对equals()实现了重写

        String s1 = new String("hello");
        String s2 = new String("hello");
        String s3 = "Hello";
        String s4 = s1;

        System.out.println(s1.equals(s2));//true
       	System.out.println(s1.equals(s4));//true
        System.out.println(s1.equals(s3));//false
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
3. compareTo() शब्दकोशक्रमेण तुलनां करोति, रिटर्न् मूल्यं int भवति

        /*
        * 比较的方式有一下两种:
        * 1.先一个一个字符相比较,如果出现不同的字符,则返回差值
        * 2.如果前x个字符相等,则返回两个字符串的长度差值
        * */

        String s1 = new String("abc");
        String s2 = new String("abcdef");
        String s3 = new String("abd");
        String s4 = new String("abc");
        
        System.out.println(s1.compareTo(s2));//-3 (3-6)
        System.out.println(s1.compareTo(s3));//-1
        System.out.println(s1.compareTo(s4));//0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  1. compareToIgnoreCase() compareTo मेथड् इत्यस्य समानम्, परन्तु case इत्यस्य अवहेलनां करोति

        String s1 = new String("Abc");
        String s2 = new String("aBcdef");
        String s3 = new String("aBd");
        String s4 = new String("ABc");

        System.out.println(s1.compareToIgnoreCase(s2));//-3 (3-6)
        System.out.println(s1.compareToIgnoreCase(s3));//-1
        System.out.println(s1.compareToIgnoreCase(s4));//0

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3. स्ट्रिंग् अन्वेषणम्

प्रक्रियानियोग
char charAt(int अनुक्रमणिका) २.अनुक्रमणिकास्थाने वर्णं प्रत्यागच्छति यदि अनुक्रमणिका ऋणात्मकः अथवा सीमातः बहिः अस्ति तर्हि IndexOutOfBoundsException अपवादः क्षिप्तः भवति ।
int indexOf(int च) ९.यत्र ch प्रथमं दृश्यते तत्र स्थानं प्रत्यागच्छति, -1 न प्रत्यागच्छति
int indexOf (int च, intfromIndex) 1.1.यत्र ch प्रथमं दृश्यते तत्र स्थानं अन्वेष्टुं fromIndex स्थानात् आरभ्य -1 प्रत्यागच्छतु
int indexOf (स्ट्रिंग str) 1.1.यत्र str प्रथमं दृश्यते तत्र स्थानं प्रत्यागच्छति, -1 न प्रत्यागच्छति
int indexOf (स्ट्रिंग str, intfromIndex) 1.1.fromIndex स्थानात् आरभ्य str इत्यस्य प्रथमं घटनां ज्ञातव्यं, -1 इत्यस्य प्रत्यागमनं विना
int lastIndexOf (int ch) 1.1.पृष्ठतः अग्रे अन्वेषणं कुर्वन्तु, यत्र प्रथमवारं ch दृश्यते तत्र गच्छन्तु, यदि न तर्हि -1 प्रत्यागच्छन्तु
int lastIndexOf (int च, intfromIndex)fromIndex स्थानात् अन्वेषणं आरभत, तथा च पृष्ठतः अग्रे अन्वेषणं कुर्वन्तु यत्र ch प्रथमं दृश्यते तत्र न प्रत्यागच्छति ।
int lastIndexOf (स्ट्रिंग str) 1.1.पृष्ठतः अग्रे अन्वेषणं कृत्वा यत्र str प्रथमं दृश्यते तत्र प्रत्यागच्छति ।
int lastIndexOf (स्ट्रिंग str, intfromIndex)fromIndex स्थानात् अन्वेषणं आरभत, तथा च यत्र str प्रथमं दृश्यते तत्र अन्वेषणं कुर्वन्तु ।

 public static void main(String[] args) {
 
        String s = "Hello, how are you today?";
        System.out.println(s.charAt(2)); //l
        System.out.println(s.indexOf('H')); //0
        System.out.println(s.indexOf('l',2)); //从第二个开始找 2
        System.out.println(s.indexOf("are")); //11
        System.out.println(s.indexOf("are",12)); // 未找到-1
        System.out.println(s.lastIndexOf('l')); //从后往前数 3
        System.out.println(s.lastIndexOf('l',3));// 从第三个往后数 3
        System.out.println(s.lastIndexOf("how"));// 7
        System.out.println(s.lastIndexOf("how",6));// 未找到 -1

    }

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

4.परिवर्तनम्

1. संख्यानां तारानाञ्च परिवर्तनम्

		String s1 = String.valueOf(1234);
        String s2 = String.valueOf(12.34);
        String s3 = String.valueOf(true);
        String s4 = String.valueOf(new Student("Hanmeimei", 18));
        System.out.println(s1);//1234 String
        System.out.println(s2);//12.34 String
        System.out.println(s3);//true String
        System.out.println(s4);//Student@1b6d3586
        System.out.println("=================================");
        int data1 = Integer.parseInt("1234");
        double data2 = Double.parseDouble("12.34");
        System.out.println(data1);//1234
        System.out.println(data2);//12.34
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

2. प्रकरणरूपान्तरणम्

 		String s1 = "hello";
        String s2 = "HELLO";
        System.out.println(s1.toUpperCase());//HELLO
        System.out.println(s1.toLowerCase());//hello
  • 1
  • 2
  • 3
  • 4

3. String to character array तथा character array to string इति

 		//字符串转字符数组
        String s = "What can I say!";
        char[] arr = s.toCharArray();
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]);
        }
        System.out.println();
        //字符数组转字符串
        String s1 = new String(arr);
        System.out.println(s1);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.स्वरूपीकरणं

		//格式化
        String s = String.format("%d/%02d/%d",2024,07,10);
        System.out.println(s);//2024/07/10
  • 1
  • 2
  • 3

5. तारप्रतिस्थापनम्

प्रक्रियानियोग
String replaceAll(String regex, स्ट्रिंग प्रतिस्थापन)सर्वाणि निर्दिष्टानि सामग्रीनि प्रतिस्थापयन्तु
String replaceFirst(स्ट्रिंग regex, स्ट्रिंग प्रतिस्थापन)प्रथमं सामग्रीं प्रतिस्थापयन्तु
		String s = "What can I say say!";
        System.out.println(s.replaceAll("say","look"));
        System.out.println(s.replaceFirst("say","SAY"));

        //What can I look look!
        //What can I SAY say!
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

6. तारविभाजनम्

प्रक्रियानियोग
String[] split(स्ट्रिंग regex) 1.1.सर्वाणि ताराः विभज्यताम्
String [] split (स्ट्रिंग regex, int सीमा)निर्दिष्टस्वरूपे स्ट्रिंग् सीमासमूहेषु विभज्यताम्
 		//字符串拆分
        String s = "字 符 串 拆 分";
        String[] str = s.split(" ");
        for(String i : str) {
            System.out.print(i+"|");
        }
        System.out.println();
        String[] str2 = s.split(" ",2);
        for(String i : str2) {
            System.out.println(i);
        }
        
        /*
        * 输出:
        字|符|串|拆|分|
        字
        符 串 拆 分
        * */
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
       /*
       *拆分是特别常用的操作:
       * 一定要重点掌握
       *另外有些特殊字符(通配符)作为分割符可能无法正确切分, 需要加上转义.
       * */
       String s2 = "192.168.1.16" ;
       String[] result = s2.split("\.") ;
       for(String i: result) {
           System.out.println(i);
       }
       System.out.println("\");
       //为了匹配字面上的点号,你需要使用反斜杠()来转义它,
       // 但在Java字符串中,反斜杠本身也是一个转义字符,
       // 所以你需要使用双反斜杠(\)来表示一个字面量上的反斜杠。
       
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

7. तार-अवरोधः

	 //字符串截取
        String s = "What can I say!";
        System.out.println(s.substring(6));//an I say!
        System.out.println(s.substring(0,3));//What
  • 1
  • 2
  • 3
  • 4

8. तारात् अग्रभागं पश्चात् च रिक्तस्थानं निष्कासयन्तु

	 String s = "   yy ds       ";
        System.out.println(s.trim());//yy ds
  • 1
  • 2

10. तारसंशोधनम्

String वर्गः परिवर्तयितुं न शक्यते सर्वे परिवर्तनानि नूतनानि वस्तुनि निर्मास्यन्ति, यत् कार्यक्षमम् नास्ति ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
इदं केवलं 10000 अस्ति, यत् 341ms अस्ति यदि भवान् एतत् परिवर्तयितुम् इच्छति तर्हि StringBuffer अथवा StringBuilder इत्यस्य उपयोगः अनुशंसितः ।

3. StringBuffer तथा StringBuilder इति

String इत्यस्य अपरिवर्तनीयत्वात् स्ट्रिंग् इत्यस्य परिवर्तनस्य सुविधायै जावा StringBuilder तथा StringBuffer क्लास् अपि प्रदाति । एतयोः च वर्गयोः अधिकांशः विधिः समानः एव।
यदि भवान् रुचिं लभते तर्हि क्लिक् कुर्वन्तुऑनलाइन दस्तावेजीकरण

अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु

StringBuffer इत्यस्य उपयोगानन्तरं 1ms ।
अत्र चित्रविवरणं सम्मिलितं कुर्वन्तु
नोट्: String तथा StringBuilder क्लास् प्रत्यक्षतया परिवर्तयितुं न शक्यते । यदि भवान् परस्परं परिवर्तनं कर्तुम् इच्छति तर्हि निम्नलिखितसिद्धान्तान् स्वीकुर्वितुं शक्नोति ।

  • String StringBuilder भवति: StringBuilder इत्यस्य constructor अथवा append() मेथड् इत्यस्य उपयोगं कुर्वन्तु
  • StringBuilder String: call toString() मेथड् भवति

String, StringBuffer तथा StringBuilder इत्येतयोः मध्ये अन्तरम्

  • String इत्यस्य सामग्रीं परिवर्तयितुं न शक्यते, परन्तु StringBuffer तथा StringBuilder इत्यस्य सामग्री परिवर्तयितुं शक्यते ।
  • StringBuffer समकालिकप्रक्रियाकरणस्य उपयोगं करोति तथा च थ्रेड्-सुरक्षितं कार्यं भवति StringBuilder समकालिकसंसाधनस्य उपयोगं न करोति तथा च थ्रेड्-असुरक्षितं कार्यम् अस्ति ।
    करोतु

तथाकथितं सूत्रसुरक्षा यथा यदा बहुजनाः शौचालयं गच्छन्ति तदा भवन्तः प्रथमं प्रविशन्ति, द्वारं पिधाय, कृत्वा बहिः आगच्छन्ति। अस्मिन् काले भवतः कृते एतत् कक्षं भवति, कोऽपि प्रवेशं कर्तुं न शक्नोति । प्रथमं वर्तमानकार्यं सम्पन्नं कुर्वन्तु, संसाधनानाम् एकाधिकारं कुर्वन्तु, ततः समाप्तेः अनन्तरं कब्जाकृतानि संसाधनानि मुञ्चन्तु ।