Java cadena conocimientos básicos y preguntas de la entrevista pertinentes

I. Definición:
secuencia de caracteres: la pluralidad de caracteres alineados de acuerdo con un cierto orden de las cuerdas para obtener: una pluralidad de cadenas conectadas en serie
cadenas de clasificación:
Cadena inmutable: Cadena : después de crear el objetivo actual, el contenido del objeto (secuencia de caracteres) no se puede cambiar, una vez que el cambio de contenido es un objeto nuevo.
la variable cadena: el StringBuilder / StringBuffer : cuando se crea un objeto, el contenido del objeto puede ser cambiado, cuando se cambia el contenido, el objeto se mantiene sin cambios.
la naturaleza de la cadena (el fondo es lo que es en realidad un char []), char representa un array de caracteres representación de cómo entender el char [] con más de un tipo de datos:
string str = "ABCDEFG"; // definir una objeto de cadena, equivalente a
char [] cs = new char [ ] { 'a', 'B', 'C', 'D', 'E', 'F', 'G'};

objeto segunda cadena creado de varias maneras
1): formar directamente un literal: String str1 = "ABCD";
2): constructor Crear por: String str2 = new String ( " ABCD");
preguntas de la entrevista 1: El por encima de dos tipo de manera de crear varios objetos fueron creados?
respuesta: cadena str1 = "ABCD"; crear hasta un objeto String, al menos no crea un objeto String.
Si la piscina constante, y la presencia de "ABCD", entonces str1 referencia directa, no en este momento crear un objeto de cadena.
de lo contrario, primero crear un "ABCD" pool constante de espacio de memoria, y luego referencia.
str2 String = new new String ( "ABCD");
crear hasta dos objetos String, crear al menos un objeto String.
nuevas nuevas palabras clave: absoluta se amontonarán espacio, crear una zona de memoria para crear al menos un objeto String ..
Aquí Insertar imagen Descripción
preguntas cara 2:

public class StringDemo {
    private static String getXx() {
        return "AB";
    }
    public static void main(String[] args) {
    // 说说下面String对象,彼此之间是否相等.
        String str1 = "ABCD";
        String str2 = "A" + "B" + "C" + "D";
        String str3 = "AB" + "CD";
        String str4 = new String("ABCD");
        String temp = "AB";
        String str5 = temp + "CD";
        String str6 = getXx() + "CD";
        System.out.println(str1==str2);//true
        System.out.println(str1==str3);//true
        System.out.println(str1==str4);//false
        System.out.println(str1==str5);//false
        System.out.println(str1==str6);//false
    }
}

Comparación de los objetos String:
1): Usar una por separado "" comillas de cadena se crean directamente volumen, compilar ya determinado almacenado en la piscina constante;
2): el uso de la nueva cadena ( "") para crear tienda de objetos memoria de pila, una carrera fue creado;
3): una cantidad que contiene sólo un conector directo tal como compilador cadena es una cantidad de "aa" + "BB" creado se puede determinar directamente, se ha determinado se almacena en la piscina constante (str2 y Str3);
4): cadena de objetos que contiene una cantidad de expresión de cadena directa (modificador no final) (tales como "aa" + s1) se crea antes de tiempo de ejecución creado, almacenado en el montón;
 5): para conectar la cadena a través de / llamar las variables del método, sólo se puede devolver valor para determinar el valor de las variables y métodos, no existe operación de optimización del compilador en tiempo de ejecución.

.String tres métodos comunes en clase:
. 1): creación de cadena y la conversión:
byte [] los getBytes (): convierte una cadena a byte array
char [] toCharArray (): convierte una cadena de matriz de caracteres
String (byte [ ] bytes): la matriz de bytes en una cadena de
cadena (char [] valor): la matriz de caracteres de cadena
2): obtención de información de cadena de caracteres
de longitud int () devuelve la longitud de esta cadena
Char charAt (int index) devuelve valor Char en el indice de
int indexOf (str cadena) devuelve el índice de la subcadena en la primera aparición de la cadena.
int lastIndexOf (String str) Devuelve el índice secundario especificado dentro de esta cadena aparece en la parte más a la derecha
3): String comparación determinación
boolean equals (Object unObjeto) Esta comparación cadena con el objeto especificado.
boolean equalsIgnoreCase (String anotherString) comparar esto a otro String String, sin tener en cuenta la capitalización
contentEquals booleanos (CharSequence cs) esta cadena especificada CharSequence Comparativo
4): la conversión caso cadena
Cadena la toUpperCase () la cadena actual convierte a mayúsculas (que se llaman el método, que es el carácter actual)
Cadena toLowerCase () la cadena actual de minúsculas
preguntas pluma ①: llegar al principio del nombre de archivo de nombre hola sufijo

public class StringDemo1 {
    public static void main(String[] args) {
        //获取以hello开头的文件名的的后缀名
        String fileNames = "abc.java;hello.txt;hello.java;hello.class";
        //1.将字符串以分号分隔开
        String[] names = fileNames.split(";");
        for (String name : names) {
            //2.得到所有以hello开头的字符串
            if(name.startsWith("hello")){
                //3.返回指定字符串在此字符串中最右边出现处的索引
                int i = name.lastIndexOf(".");
                //4.根据索引来截取后缀名
                String newName = name.substring(i);
                System.out.println(newName);
            }
        }
    }
}

② preguntas T: secuencia capitalizado

public class StringDemo2 {
    public static void main(String[] args) {
        //把单词首字母大写
        String str = "adasfagfadf";
        //1.截取到首字母并转换为大写
        String s = str.substring(0, 1).toUpperCase();
        //2.截取后面的所有字母
        String s1 = str.substring(1);
        String s2=s+s1;
        System.out.println(s2);
    }
}

IV. Hablando de la diferencia entre la cadena, StringBuffer, StringBuilder es?
Cadena es una clase inmutable, cada vez que nos movemos en la cadena, siempre crea una nueva cadena. Operación de cadena un desperdicio de recursos, Java proporciona dos herramientas para manipular la secuencia - StringBuffer y StringBuilder.
StringBuffer y StringBuilder es de clase mutable, StringBuffer es thread-safe, StringBuilder no es hilo de seguridad. Así que cuando varios subprocesos en la misma manipulación de cadenas, que deben elegir usar StringBuffer. Desde multi-hilo sin manipulación, del StringBuilder es más eficiente que StringBuffer.
Comúnmente los métodos utilizados:
el append (Object Val): indica el tipo de cualquier dato adicional
StringBuilder deleteCharAt (int index): Eliminar la cadena, la posición de designación de caracteres
inversa (): esta secuencia de caracteres sustituido por el reverso

preguntas cara ①String es seguro para hilos? ¿Por qué siempre empleo Al usar HashMap Cadena hacer llave?
clase String es inmutable, una vez que se crea un objeto String, que no podemos cambiar su valor. Por lo tanto, es seguro hilo y puede ser utilizado con seguridad en un entorno multiproceso.
Debido a que las cadenas son inmutables, al crear una cadena, que es el código hash almacenado en caché, no tiene por qué ser calculado de nuevo. Debido a que la aplicación HashMap interno es determinar el valor de la ubicación de almacenamiento con llave código hash, es más rápido que otros objetos. Esta es la razón que suelen utilizar objetos String como un HashMap.

preguntas cara ②: interruptor se pueden aplicar en una cadena?
R: .jdk1.7 continuación, se puede aplicar a una cadena, jdk1.7 y no hay nuevas instrucciones para manipular interruptor de cadena, pero el interruptor llamando String.hashCode, la cadena se determina a ejecutar un trabajo convertido a un int.

Publicado 99 artículos originales · ganado elogios 2 · Vistas 2626

Supongo que te gusta

Origin blog.csdn.net/weixin_41588751/article/details/105107111
Recomendado
Clasificación