zoukankan      html  css  js  c++  java
  • java基础学习笔记一

    一、JAVA访问控制修饰符
    用于控制类中成员的可见性
    1、public(公有):在任何地方可以访问
    2、protected(受保护的):子夫类(即使字父类不在同一包)和本包中可以访问
    3、default(默认):默认权限,不用写的。在同一包内访问
    4、private(私有):只能在同一类中访问
    最终总结,就一句话:protected修饰符所修饰的类(这句话中指父类)属成员变量和方法,只可以被子类访问,而不管子类是不是和父类位于同一个包中。
    default修饰符所修饰的类属成员变量和方法,只可被同一个包中的其他类访问,而不管其他类是不是该类的子类。
    protected属于子类限制修饰符,而default属于包限制修饰符。
    注意: 如果一个类使用public修饰,那该类的类名必须与他所在的源文件名相同。一个.java源文件中有且只有一个public类,顶层类只能用public和默认修饰符(即无修饰符)修饰。
    二、JAVA非访问修饰符
    为了实现一些其他的功能,Java 也提供了许多非访问修饰符。
    static 修饰符:用来修饰类方法和类变量
    静态方法: static 关键字用来声明独立于对象的静态方法
    静态方法不能使用类的非静态变量
    静态方法从参数列表得到数据,然后计算这些数据
    静态变量: static 关键字用来声明独立于对象的静态变量,无论一个类实例化多少对象,它的静态变量只有一份拷贝。
    静态变量也被称为类变量。局部变量不能被声明为 static 变量。
    final 修饰符:用来修饰类、方法和变量
    类 :final 修饰的类不能够被继承
    方法:修饰的方法能被继承类,但不能重新定义(修改)
    变量:修饰的变量为常量,是不可修改的,需要初始赋值
    类常量:final 修饰符通常和 static 修饰符一起使用来创建类常量
    abstract 修饰符:用来创建抽象类和抽象方法
    抽象类:
    抽象类不能用来实例化对象,声明抽象类的唯一目的是为了将来对该类进行扩充
    一个类不能同时被 abstract 和 final 修饰;如果一个类包含抽象方法,那么该类一定要声明为抽象类,否则将出现编译错误
    抽象类可以包含抽象方法和非抽象方法
    抽象方法:
    抽象方法是一种没有任何实现的方法,该方法的的具体实现由子类提供
    抽象方法不能被声明成 final 和 static
    任何继承抽象类的子类必须实现父类的所有抽象方法,除非该子类也是抽象类
    如果一个类包含若干个抽象方法,那么该类必须声明为抽象类。抽象类可以不包含抽象方法
    抽象方法的声明以分号结尾,例如:public abstract sample();
    synchronized 修饰符:主要用于线程的编程
    synchronized 关键字声明的方法同一时间只能被一个线程访问。synchronized 修饰符可以应用于四个访问修饰符
    volatile 修饰符:主要用于线程的编程
    volatile 修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值。
    而且,当成员变量发生变化时,会强制线程将变化值回写到共享内存。这样在任何时刻,两个不同的线程总是看到某个成员变量的同一个值。
    一个 volatile 对象引用可能是 null。
    transient 修饰符:
    序列化的对象包含被 transient 修饰的实例变量时,java 虚拟机(JVM)跳过该特定的变量
    该修饰符包含在定义变量的语句中,用来预处理类和变量的数据类型
    三、变量
    类变量:独立于方法之外的变量,用 static 修饰(也称为静态变量)
    关键点:所有对象共享类变量的一份拷贝、常被声明为常量、存储在静态存储区、声明周期为持续到整个程序结束、可直接通过类名访问
    实例变量:独立于方法之外的变量,不过没有 static 修饰
    关键点: 可默认初始化、存在于对象所在的内存中、生命周期为对象周期
    局部变量:类的方法中的变量
    关键点: 局部变量不能带有访问修饰符、栈上分配、必须经过初始化

        成员变量和局部变量的区别(重点)    
                (1)作用域        
                成员变量:针对整个类有效。       
                局部变量:只在某个范围内有效。(一般指的就是方法,语句体内)   
                (2)存储位置        
                成员变量:随着对象的创建而存在,随着对象的消失而消失,存储在堆内存中。        
                局部变量:在方法被调用,或者语句被执行的时候存在,存储在栈内存中。              
                        当方法调用完,或者语句结束后,就自动释放。    
                (3)初始值        
                成员变量:有默认初始值。        
                局部变量:没有默认初始值,使用前必须赋值。
    

    四、重写和重载的区别

    1.重写(Override)从字面上看,重写就是 重新写一遍的意思。其实就是在子类中把父类本身有的方法重新写一遍。子类继承了父类原有的方法,但有时子类并不想原封不动的继承父类中的某个方法,所以在方法名,参数列表,返回类型(除过子类中方法的返回值是父类中方法返回值的子类时)都相同的情况下, 对方法体进行修改或重写,这就是重写。但要注意子类函数的访问修饰权限不能少于父类的。
    例如:
    public class Father {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Son s = new Son(); s.sayHello();
    }
    public void sayHello() {
    System.out.println("Hello");
    }
    }
    class Son extends Father{
    @Override
    public void sayHello() {
    // TODO Auto-generated method stub
    System.out.println("hello by ");
    }
    }
    重写 总结:
    1.发生在父类与子类之间``
    2.方法名,参数列表,返回类型(除过子类中方法的返回类型是父类中返回类型的子类)必须相同
    3.访问修饰符的限制一定要大于被重写方法的访问修饰符(public>protected>default>private)
    4.重写方法一定不能抛出新的检查异常或者比被重写方法申明更加宽泛的检查型异常
    2.重载(Overload)在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同甚至是参数顺序不同)则视为重载。同时,重载对返回类型没有要求,可以相同也可以不同,但不能通过返回类型是否相同来判断重载。
    例如:
    public class Father {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Father s = new Father();
    s.sayHello();
    s.sayHello("wintershii");
    }
    public void sayHello() {
    System.out.println("Hello");
    }
    public void sayHello(String name) {
    System.out.println("Hello" + " " + name);
    }
    }
    重载 总结:
    1.重载Overload是一个类中多态性的一种表现
    2.重载要求同名方法的参数列表不同(参数类型,参数个数甚至是参数顺序)
    3.重载的时候,返回值类型可以相同也可以不相同。无法以返回型别作为重载函数的区分标准

  • 相关阅读:
    http请求的GET和POST请求:查询和新增(server.php)
    http请求的GET和POST请求:查询和新增(ajax)
    shell中$(( )) 与 $( ) 还有${ }的区别
    linux查看操作系统版本信息
    Linux useradd 与 adduser的区别, /sbin/nologin 与 /bin/bash
    红帽触摸屏屏幕180旋转
    Sed命令n,N,d,D,p,P,h,H,g,G,x解析3
    sed命令
    sed高级用法:模式空间(pattern space)和保持空间(hold space)
    sed的模式空间和保持空间
  • 原文地址:https://www.cnblogs.com/si-dian/p/10833209.html
Copyright © 2011-2022 走看看