Clase interna anónima
La clase interna anónima se refiere a una clase interna sin nombre, que debe definirse sobre la base de una clase o interfaz abstracta.
Ejemplo: uso de clases internas anónimas para simplificar la definición de clase
interface Message{ //定义接口
public void print();
}
public class Test1_1_4_9 {
public static void main(String args[]){
fun(new Message(){ //直接实例化接口对象
public void print(){ //匿名内部类中覆写print()方法
System.out.println("Hello World");
}
}); //传递匿名内部类实例化
}
public static void fun(Message msg){ //接收接口对象
msg.print();
}
}
//结果
//Hello World
Contenedor de tipo de datos básico
Java proporciona las clases correspondientes para los tipos de datos básicos, que se denominan envoltorios.
Clase de empaquetado de objetos (subclase directa de objeto): personaje, booleano.
Clase de empaquetado numérico (subclase directa de número): Byte, Short, Integer, Long, Float, Double.
Acerca de la definición de la clase Number:
Number es una clase abstracta, que define un total de 6 métodos de operación: intValue (), doubleValue (), floatValue (), byteValue (), shortValue (), longValue ().
Operaciones de boxeo y unboxing
Operación de boxeo: cambie el tipo de datos básicos en la forma de una clase de empaque;
cada método de construcción de clase de empaque puede recibir variables de su propio tipo de datos;
operación de desempaquetado: saque los datos empaquetados del empaque;
use la herencia de la clase Number Se completa una serie de métodos xxxValue ().
Ejemplo: uso de int e Integer
public class Test1_1_5_11 {
public static void main(String args[]){
Integer obj=new Integer(10); //将基本数据类型装箱(构造方法实例化)
int temp=obj.intValue(); //将基本数据类型拆箱
System.out.println(temp*2); //数学计算
}
}
//结果
//20
Ejemplo: usar doble y doble
public class Test1_1_5_11 {
public static void main(String args[]){
Double obj=new Double(10.2); //装箱
double temp=obj.doubleValue(); //拆箱
System.out.println(temp*2);
}
}
//结果
//20.4
Ejemplo: embalaje y desembalaje automático
public class Test1_1_5_11 {
public static void main(String args[]){
Integer obj=10; //自动装箱(直接装箱实例化)
int temp=obj; //自动拆箱
obj++;
System.out.println(temp*obj);
}
}
//结果
//110
Si utiliza el método de creación de instancias de boxeo directo, se utilizará el mismo espacio de memoria de almacenamiento dinámico y el objeto de empaquetado creado por el constructor abrirá un nuevo espacio de memoria de almacenamiento dinámico. Por lo tanto, el método más confiable para la comparación equitativa de los datos de empaquetado es igual a ().
Use la clase Object para recibir todos los tipos de datos.
Proceso:
1. Tipo de datos básicos
2. Empaque automático (convertirse en un objeto)
3. Transformación ascendente a Objeto
Ejemplo: use Object para recibir tipos de datos
public class Test1_1_5_11 {
public static void main(String args[]){
Object obj=10; //先自动装箱后再向上转型,此时不能进行科学计算
//Object不可能直接向下转型
//所以要取出基本数据类型必须首先向下转型为指定的包装类
int temp=(Integer)obj; //向下变为Integer后自动拆箱
System.out.println(temp*2);
}
}
//结果
//20
Conversión de tipo de datos
Métodos de uso común para cambiar el tipo de datos String a tipos de datos básicos
Clase entera: public static int parseInt (String s);
Clase doble: public static double parseDouble (String s);
Clase booleana: public static boolean parseBoolean (String s);
Ejemplo: cambiar la cadena en datos int
public class Test1_1_5_1 {
public static void main(String args[]){
String str="123"; //字符串
int temp=Integer.parseInt(str); //将字符串转换为int型数据
System.out.println(temp*2);
}
}
//结果
//246
Nota: Si desea convertir los datos de una cadena en un número, debe asegurarse de que los caracteres definidos en la cadena sean todos números, si hay caracteres no numéricos, la conversión será anormal.
Ejemplo: convertir el tipo de datos básico a datos de tipo de cadena
public class Test1_1_5_1 {
public static void main(String args[]){
int num=100;
String str=String.valueOf(num); //变为String型
System.out.println(str.replaceAll("0","9"));
}
}
//结果
//199