黑马程序员 java学习笔记-基础知识盘点

本文深入讲解了Java中的重载与重写、增强for循环、基本数据类型的装箱与拆箱、枚举类型以及反射机制等核心概念。通过具体示例帮助理解这些关键特性。
---------------------- android培训java培训、期待与您交流! ----------------------

(1)、重载和重写的区别:

重载Overload:就是让类以统一的方式处理不同类型数据的一种手段,特点是:函数名相同,参数个数和类型不同,返回值类型可以相同也可不同。重载是类中多态性的一种表现。

重写Overriding:重写方法只能存在于具有继承关系中,重写方法只能重写父类非私有类的方法,特点是:在子类中定义与父类相同的方法名和参数,就可以说是重写。

(2)、增强for循环

for(type 变量名: 集合变量名) {....}   集合变量名可以是数组、可以是实现了iterable接口的集合类

public static int add(int x,int...args)
    {
        int sum = x;
        for(int i=0;i<args.length;i++)
        {
            sum += args[i];
        }
        return sum;
    }

(3)、基本数据类型的拆箱与装箱

装箱就是把值类型转换成引用类型    Integer i = 10;

拆箱就是把引用类型转换成值类型  int i = new Integer(10);

基本数据类型 int long  char  -----对象类型 Integer Long  Charactor

在java中,所有要处理的东西几乎都是对象(Object),如字符串(String)都是,然而基本数据类型却不是对象,如int定义的变量,在J2SE5.0之前必须 Integer inte = new Integer(10)才能将int包装成一个对象,而在这之后  Integer inte = 10就可以了。

(4)、枚举(enum)

枚举就是要让某个类型的变量的取值只能在若干个固定值中的其中一个。

public static void main(String [] args)

{

        WeekDay wd = WeekDay.星期一;
        System.out.println(wd);
        System.out.println(wd.name());
        System.out.println(wd.ordinal());
        System.out.println(wd.getClass());
        System.out.println(wd.valueOf("星期二").toString());
        System.out.println(wd.values().length);

}

public enum WeekDay{
        星期一(3),星期二,星期三(1),星期四,星期五,星期六,星期七;
        
        private WeekDay()
        {
            System.out.println("无参构造");
        }
        private WeekDay(int day)
        {
            System.out.println("有参构造");
        }
    }

(5)、反射(Reflection)机制

http://www.cnblogs.com/Quincy/archive/2011/06/19/2084557.html

JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 

Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。用在Java身上指的是我们可以于运行时加载、探知、使用编译期间完全未知的classes。换句话说,Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods1

Member接口该接口可以获取有关类成员(域或者方法)后者构造函数的信息。
AccessibleObject类该类是域(field)对象、方法(method)对象、构造函数(constructor)对象的基础类。它提供了将反射的对象标记为在使用时取消默认 Java 语言访问控制检查的能力。
Array类该类提供动态地生成和访问JAVA数组的方法。
Constructor类提供一个类的构造函数的信息以及访问类的构造函数的接口。
Field类提供一个类的域的信息以及访问类的域的接口。
Method类提供一个类的方法的信息以及访问类的方法的接口。
Modifier类提供了 static 方法和常量,对类和成员访问修饰符进行解码。
Proxy类

提供动态地生成代理类和类实例的静态方法。

class Persons {
    private int x;
    public int y;
    
    public Persons(int x,int y){
        super();
        this.x = x;
        this.y = y;
    }
}

Person p1 = new Person();

p.getClass();得到这个对象的字节码

        Persons p = new Persons(2,3);
        Field fieldy = p.getClass().getField("y"); //这个Y相当于类上的变量,并不是代表某个变量的Y值
        Field fieldx = p.getClass().getDeclaredField("x");
        System.out.println(fieldy.get(p));
        fieldx.setAccessible(true);   //暴力反射  本来x是私有的,不可取,
        System.out.println(fieldx.get(p));

---------------------- android培训java培训、期待与您交流! ----------------------
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值