java基础学习一

java常识

几个命令行目录
dir 列出当前目录下的文件
md 创建目录
rd 删除目录
cd 进入目录
cd/回退到根目录
cd..回退到上一级目录
echo 创建文件 echo 内容 >1.txt
del 删除文件
exit 退出命令行
jdk:java开发工具包,包括javac编译等java工具(bin目录下)、jre、 以及基础类库(lib目录下)
jre:java运行环境,包括jvm(jre/bin目录下),jvm需要的类库(jre/lib目录)
jvm:java跨平台根本,一处编译,处处运行。只要编译成.class目标文件,有了jvm,能在各种操作系统上运行。
javac编译
java运行
为什么要配置环境变量?
在任意目录下运行在 Java安装目录下的可执行文件(比如java,javac等)

一、参数

1.java中参数总是按值传递:
    形参是基本数据类型的:将实参的值传递给形参的基本数据类型的变量
2.参数有显示参数与隐式参数:将实参引用类型变量的值(对应堆空间的地址)传递给形参的引用类型变量
3...int多值传参

二、封装(数据隐藏)

 1.啥是封装?不能让类中的方法直接访问其他类中的属性,只能通过方法来访问其他类中的属性
    就是属性私有化和提供公共的方法来访问其他类的属性
2.权限修饰符

属性和方法:
    private:类内部
    缺省:类内部、包
    protected:类内部、包、子类
    public:类内部、包、子类、任何地方
类:一般用public和缺省

3.this的用途:

    隐式传参;
    调用该类的其他构造函数: this();

三、继承

1.super关键字
    调用超类中的属性和方法;当父类与子类中的重名时
    调用超类中的构造器       
2.实例化的过程
    隐式或显示得调用父类中的构造器

四、多态

1.多态性:

    方法的重写与重载;
    子类对象的多态性(对象变量的多态性):父类的引用指向子类对象(子类也是一个父类)
2.强制类型转换时候可能会出现错误,可以预先判断一下(instanceof)

五、equal和==

==:
    1.基本数据类型,根据基本数据类型的值判断是否相等(数据类型不同也可能返回true)
    2.引用数据类型,比较引用数据类型变量的地址值是否相等

六、string类型的内存

七、各种包装类

尖括号中的类型参数不允许是基本数据类型,也就是说,不允许写成ArrayList<int>,在这里用到Integer

包装类和基本数据类型之间的转换:自动拆装箱

包装类和基本数据类型====string
    包装类和基本数据类型--->string,String.valueof()
    string--->包装类和基本数据类型,相应包装类的parsexxx()或者是调用包装类的构造器

八、static

可以修饰属性、方法、代码块、内部类的修饰

修饰属性(类变量):属于一个类的变量 VS 实例变量
修饰方法(类方法):

九、类的初始化块

类的初始化数字域的方法:①默认初始化②显示初始化语句和初始化域(按照顺序结构执行)③在构造器中

数据域赋值的顺序:
    ①所有数据域被初始化为默认值(0,false,null)
    ②按照在类声明中的次序,依次执行所有初始化语句和初始化块(初始化语句与初始化块之间按顺序结构执行)
    ③构造器
修饰词只有static
非静态的代码块:
    可以对类的属性进行初始化操作;
    里面可以有输出语句;
    可以有多个非静态的代码块,按照顺序结构执行; 
    每创建一个类的对象,非静态代码块就加载一次
静态的代码块:
    随着类的加载而加载,只被加载一次;
    静态代码块的执行要早于非静态代码块的执行;
    只能执行静态的结构

十、final关键字

可以修饰类、方法、属性
修饰类:这个类就不能被继承
修饰方法:该方法不能被重写
修饰属性:该属性就是一个常量(此常量没有默认初始化;可以显示赋值、代码块、构造器)
public class TestFinal {
    public static void main(String[] args) {

    }

    不正确
    public int addOne(final int x){
        return ++x;
    }
    //正确,因为x引用的地址木有变
    public Other add(final Other x){
        x.i++;
        //x = new Other();不对,x引用的地址变了
        return x;
    }

}

class Other{
    public int i;
}

十一、abstract
abstract可以修饰类、方法,不能用abstract修饰属性、私有方法、构造器、静态方法、 final的方法

修饰类:
    抽象类没有实例;
    有构造器(凡是类都有构造器);
    如果一个类没有全部实现抽象父类中的抽象方法,则还是这个子类抽象的
修饰方法:
    木有方法体实现,交给子类来重写;
    抽象方法所在的类一定是抽象类  ;
    抽象类中可以没有抽象的方法

十二、接口
常量:public static final,不管显示还是不显示,都是public static final
抽象方法:
接口与接口之间也是继承的关系而且能够实现多继承,类与接口之间是实现的关系

十三、内部类:定义在另一个类内部的类

**内部类的分类:
    成员内部类,(类内部,方法外)
    局部内部类,(类的方法里)
成员内部类:
    是外围类的一个成员:①有修饰符(4个)②可以用static/final/abstract修饰③可以调用外围类的成员方法
    具有类的特点:可以在内部定义属性、方法、构造器
局部内部类:


如何创建成员内部类的对象:
如何区分调用内部类与外围类的变量:(重名情况下)
局部内部类的使用:**

**

**如何创建成员内部类的对象
    public class TestInner {
    public static void main(String[] args) {
        //如何创建成员内部类的对象
        //静态的
        Person.Dog dog = new Person.Dog();
        //非静态的:先创建一个外围类的对象
//        Person.Bird bird = new Person.Bird();不对
        Person person = new Person();
        Person.Bird bird = person.new Bird();
        bird.info();
        //如何区分调用成员内部类和外围类中重名的属性
        bird.setName("杜鹃");
    }
}
class Person{
    String name = "韩梅梅";
    int age;
    //成员内部类(非静态的)
    class Bird{
        String name = "黄鹂";
        int id;
        public Bird() {
        }
        public void setName(String name) {
            System.out.println(name);//调用传进的参数
            System.out.println(this.name);//调用成员内部类的属性
            System.out.println(Person.this.name);//调用外围类的属性
        }
        public void info(){
            show();
        }
    }
    //成员内部类(静态的)
    static class Dog{
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public void show(){
        System.out.println("我是show()方法");
    }
}
//局部内部类的使用
public class TestInner1 {
}
class OuterClass{
    public void method1(){
        //局部内部类
        //以下这种使用方法较为少
        class InnerClass{
        }
    }
    //常常使用一个方法,其返回值为某个类或接口的对象,而这个类或接口在方法内部创建
    //使用方法一(有名的)
    //返回值为Comparable接口的一个对象
    public Comparable getComparable(){
        //1.创建一个实现Comparable接口的类
        class MyComparable implements Comparable{
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        }
        //返回一个实现类的对象
        return new MyComparable();
    }
    //使用方式二(匿名内部类)
    public Comparable getComparable1(){
        return new Comparable() {
            @Override
            public int compareTo(Object o) {
                return 0;
            }
        };
    }
}**

猜你喜欢

转载自blog.csdn.net/qwerty_4/article/details/73064971