You are never a loser until you quit trying!

Hiển thị các bài đăng có nhãn String Java. Hiển thị tất cả bài đăng
Hiển thị các bài đăng có nhãn String Java. Hiển thị tất cả bài đăng

Bài tập string trong java



Chào bạn đến với phanlamcoder.blogspot.com!

Ở bài viết này chúng ta sẽ cùng test lại những câu lệnh cơ bản nhé!
Ôn tập lại kiến thức về String trong JAVA!

/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */
package stringjava;

import java.util.Locale;

/**
 *
 * @author Nhu Y
 */
public class StringJava {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        String s1 = "Toi dep trai nhat, toi biet toi dep trai";

        //VI TRI XUAT HIEN CUOI CUNG TRONG CHUOI

        System.out.println(s1.lastIndexOf("toi"));
        

        //XOA MOT KY TU

        System.out.print(removeCharAt(s1, 2));
        

        //THAY THE CHUOI CON TRONG CHUOI CHA

        System.out.print(s1.replaceFirst("dep trai", "thong minh"));
        

        //HAI CACH DAO CHUOI

            //cach 1
        s1 = new StringBuffer(s1).reverse().toString();
            //cach 2
        String temp = "";
        for(int i = s1.length()-1;i>-1;i--)
        {
            temp += s1.substring(i);
            s1 = s1.substring(0,i);
        }
        s1 = temp;
        System.out.print(s1);
        

        //TIM MOT TU TRONG CHUOI

        s1 = "hoc-lap-trinh-java";
        
        System.out.print(s1.indexOf("java"));

        //CHIA NHO CHUOI, VONG LAP FOREACH

        
        String[] arrStr = s1.split("-");
        for(String s : arrStr)
        {
            System.out.print(s+" ");
        }

        //SO SANH HAI VUNG CUA CHUOI

        //str1[14-17] == str2[3,6] ???
        String str1 = "Welcome to my blog";
        String str2 = "My blog is lovely";
        //str1[14-17] = "blog"
        //Vung cua chuoi str1: tu vi tri 14
        //Vung cua chuoi str2: tu vi tri 3, co 4 ki tu ("blog")
        //tra ve true or false
        System.out.print(str1.regionMatches(14, str2, 3, 4));

        //SO SANH THOI GIAN THUC THI CAU LENH

        long startTime = System.currentTimeMillis();
      for(int i=0;i<50000;i++){
         String strF = "hello";
         String strL = "hello"; 
      }
      long endTime = System.currentTimeMillis();
      System.out.println("Time taken for creation" 
      + " of String literals : "+ (endTime - startTime) 
      + " milli seconds" );       
      long startTime1 = System.currentTimeMillis();
      for(int i=0;i<50000;i++){
         String strF1 = new String("hello");
         String strL1 = new String("hello");
      }
      long endTime1 = System.currentTimeMillis();
      System.out.println("Time taken for creation" 
      + " of String objects : " + (endTime1 - startTime1)
      + " milli seconds");
        

    //FORMAT()

    double e = 2.25874;
    System.out.format(Locale.GERMANY,"%1.4f%n%n", e);
    

        //LAY KI TU UNICODE

    System.out.print(s1.codePointAt(2));

    }
   
    
    public static String removeCharAt(String s, int i)
    {
        return s = s.substring(0,i) + s.substring(i+1);
    }
    
}






Chúc các bạn học tốt!
Góp ý tại mục bình luận bên dưới 💓

Tổng kết về lớp String và tìm hiểu về hai lớp StringBuffer và StringBuilder trong Java



Chào bạn đến với phanlamcoder.blogspot.com!

Ở bài viết này chúng ta sẽ tổng kết về lớp String và tìm hiểu về hai lớp StringBuffer và StringBuilder trong Java:
java string


Như đã nói trong bài Tìm hiểu về đối tượng String
lớp String Literal là immutable (không thể thay đổi) : 

       String a = " Yzenny97";   //tạo ra instance chứa “Yzenny97”  nằm trong String Pool và a sẽ tham chiếu đến nó.
       String b = " Yzenny97";  //sẽ ko tạo ra instance khác mà b sẽ tham chiếu đến instance ở trên
       /*
nghĩa là vì 2 chuỗi này giống nhau nên chương trình chỉ khởi tạo 1 instance và a,b sẽ tham chiếu đến nó
*/
        a = “JavaString”; //tạo ra instance mới chứa “JavaString” nằm trong String Pool và a sẽ tham chiếu đến instance này, khi đó instance chứa “Yzenny97” vẫn còn tồn tại( vì thế biến b vẫn không thay đổi)
Ghi chú:  Các đối tượng String được lưu trữ trong một khu vực bộ nhớ đặc biệt gọi là String Constant Pool.
Bonus: Đối tượng String tạo bằng từ khóa new sẽ lưu trong vùng nhớ heap chứ không phải Pool như String Literal.

Vì String Literal là không thể thay đổi và làm chậm chương trình hơn(do khi muốn sửa đổi nội dung nó phải tạo nhiều instance) nên Java cung cấp thêm 2 lớp đó là: StringBuffer và StringBuilder. 2 lớp này không so sánh chuỗi bằng Equals() được vì nó không ghi đè lên phương thức này của lớp Object.
Hai lớp này cơ bản là giống nhau, chỉ khác ở chỗ StringBuffer chỉ cho 1 luồng tham chiếu, còn StringBuilder cho nhiều luồng tham chiếu cùng lúc.

Các phương thức chính:

  • append() : nối chuỗi
  • reverse(): đảo chuỗi
  • insert(int offset, String s) : chèn chuỗi s vào vị trí offset
  • replace(int startIndex, int endIndex, String str) : thay thế chuỗi
  • delete(int startIndex, int endIndex): xóa chuỗi

Về hiệu suất thực thi lệnh giữa String và StringBuffer:
public class Test1{  
    public static String concatWithString()    {  
        String t = "Java";  
        for (int i=0; i<10000; i++){  
            t = t + "YZenny";  
        }  
        return t;  
    }  
    public static String concatWithStringBuffer(){  
        StringBuffer sb = new StringBuffer("Java");  
        for (int i=0; i<10000; i++){  
            sb.append("YZenny ");  
        }  
        return sb.toString();  
    }  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        concatWithString();  
        System.out.println("Thoi gian tieu ton boi noi chuoi voi String: "+(System.currentTimeMillis()-startTime)+"ms");  
        startTime = System.currentTimeMillis();  
        concatWithStringBuffer();  
        System.out.println("Thoi gian tieu ton boi noi chuoi voi StringBuffer: "+(System.currentTimeMillis()-startTime)+"ms");  
    }  
}  
Chương trình trên sẽ cho kết quả dạng:
Thoi gian tieu ton boi noi chuoi voi String: 578ms
Thoi gian tieu ton boi noi chuoi voi StringBuffer: 0ms
Kiểm tra HashCode của lớp String và StringBuffer trong Java
Như bạn có thể thấy trong chương trình dưới đây, lớp String trả về giá trị Hashcode mới khi bạn nối chuỗi nhưng StringBuffer trả về cùng giá trị Hashcode.
public class Test2{ 
    public static void main(String args[]){ 
        System.out.println("Kiem tra Hashcode cua String:"); 
        String str="java"; 
        System.out.println(str.hashCode()); 
        str=str+" YZenny "; 
        System.out.println(str.hashCode()); 
  
        System.out.println("Kiem tra Hashcode cua StringBuffer:");  
        StringBuffer sb=new StringBuffer("java"); 
        System.out.println(sb.hashCode()); 
        sb.append("YZenny "); 
        System.out.println(sb.hashCode()); 
    } 
}  
Chương trình trên sẽ cho kết quả dạng:
Kiem tra Hashcode cua String:
3254818
229541438
Kiem tra Hashcode cua StringBuffer:
118352462
118352462
Làm tương tự như trên, ta có thể so sánh được hiệu suất thực thi của StringBuilder và StringBuffer.

Chúc các bạn học tốt!
Góp ý tại mục bình luận bên dưới 💓