• Java学习


    目录

    一、变量

    二、运算 

    三、判断和循环语句 

    四、数组

    五、方法

    六、类

    七、字符串

    八、static 

    九、继承

    十、多态 

    十一、包

     十二、final

    十三、抽象类

    十四、接口

    十五、嵌套类


     

    一、变量

            1、byte范围【-128,127】

            2、long变量后面要写l,float变量定义要加f。如float app=1.2f;

            3、true和false都是小写

            4、java区分双引号和单引号,单引号只存一个字,双引号可以存若干

            5、String要大写,可以正常定义,也可以String a=new String("华为");

    ed342aa78ff94bd1ba39e1e287efb9ed.png

    二、运算 

            1、byte、short、char进行运算时会提升到int类型。

            2、字符串和数字(或字符类型)相加会进行concat,注意从左到右进行运算。例如用来实现输出“我的年龄是18岁”可以使用System.out.println("我的年龄是"+age+"岁");

            3、字符(char类型)加数字等于字符转ascii码加数字的int类型。

            4、有自增++,有++a和a++,也有+= 

            5、& ,| ,^ ,!,不能用and or,&&和||有短路效果,如果第一个可以判断不需要看第二个。

    三、判断和循环语句 

            和C++一模一样,单行语句case可以将冒号换成->。即case 1->System.out.println(1);

            字符串相比较时使用equal函数。if (sure.equals("y")){}

    四、数组

            int []array=new int[]{1,2,3};或者int array[] =new int[]{1,2,3}或者int []array={1,2,3};

            打印数组值也是array[0]这种,输出array是地址值

            栈(方法区使用)和堆(数组new)

            打印数组长度时使用array.length

    五、方法

            public static 返回类型 方法名(输入类型 形参 .....)

            可以进行重载:在同一个类下方法名相同,形参不同(包括形参个数和形参类型),不考虑返回值。

            数组形参为int array[]。

    六、类

            和类基本上一样,存在private和public对于变量、函数、类的限制。

     当前类同一package子孙类其他package
    public
    protected×

    默认(空着不写)

    ××
    private×××

            this还是指向类内变量,而不是函数中的形参。比如类中某一个函数中调用this.age,将返回类中的变量age。

            默认构造函数和带参构造函数与c++一致,Student s1=new Student(){}或Student s1=new Student(){age,sex}。

            类内变量一般是private的,函数可以按自己需求public或者其他。

    七、字符串

    1、String

            String s1="abc";或者String s2=new String("abc");

            s1.equals("s2"):(比较,考虑大小写)

            s2.equalsIgnoreCase("s1"):(比较,不考虑大小写)

            s1.charAt(0) :返回s1的第0个索引,可用于循环打印字符

            s1.substring(start,end),左闭右开输入子集,类方法

            s1.replace(old,new)  替换字符串中的旧值和新值

    2、StringBuilding

            StringBuilder sb=new StringBuilder("张三");        建立可变字符串

            sb.append("是坏人");        添加字符串

            sb.reverse()  ;      翻转字符串

            sb.length()  ;          输出长度

            sb.capacity();        输出sb的容量,字节数

            sb.tostring();          返回String类的字符串,而不是原先的StringBuilder类

            正向从String变StringBuilder类就使用第一行就可以,替换为变量

    3、StringJoiner

            StringJoiner sj=new StringJoiner(delimiter,prefix,suffix)

            StringJoiner不能直接初始化变量,只能进行定义,然后在进行循环add时可以自动添加首尾符号和每次执行add后自动添加的间隔符。

            sj.add("abc");        添加字符串,但添加完abc后会自动调用原来定义时的间隔符,最末则会添加尾符。

            sj.length()        返回长度

            sj.tostring()       转换为String类。

    4、ArrayList

            ArrayListlist1=new ArrayList<>();           空ArrayList类,是一个python列表形式[] 

    5364e9711f424371bc8844ce3ddb6c3a.png

             下面这个就是模板<>中的类型。

    aee7bda4854a4b77957cd47eea8cdfa9.png

    八、static 

            类内static方法和变量,可以直接通过类名调用,不需要实例化,可以作为工具类

    c7204d0195854b2fbc03ff1d609c5a46.png

            静态代码块static{} 

    用于静态代码工具,一般是用于初始化,只能执行一次

    九、继承

            多层继承,会从基类中非private,非final,非static的方法建立虚方法表给子类,最后给到最高层子类,最高层子类会先查询虚方法表中寻找建立在父类的方法,而不会通过多层继承找到父类的方法。 

    7f43377f2c764a5b988fdf6e90db68c7.png

             继承遵循就近原则。

    9527495193cc472e804f3741065ffe42.png

            super问题:

            super可以在类中调用上一层的变量或者方法,this是调用本层的变量和方法。当重写父类方法时,需要在上一行添加@override,负责检验。

    09f90fcb6fb34681b7fbf589bf14fc51.png

           

    aee6d1724b7747a6b46e0588a695f12a.png

    十、多态 

            看下图,对于调用成员变量和调用成员方法的区别,在多态情况下变量看父类,方法看子类。b5f455017a43425a844d345c511a1df0.png

             这种父类变量new子类对象的方法,不能调用子类特有方法(可以调用子类重载父类的方法)。可以通过下面的强制转换方式来实现调用子类特有方法。

    c857d064db8c49bc9afa37dca50fd71a.png

            假设动物类中有猫和狗两个类,猫和狗都有特殊的方法,猫捉耗子,狗看家。

    1. Animal a=new dog(); //前面明确a用dog类型或者cat类型都可以
    2. if (a instanceof Dog d) //通过这一串判断无论a是dog或是cat都可以使用特有方法
    3. d.lookhome()
    4. else if(a instance of Cat c)
    5. c.catchmouse()
    6. else
    7. System.out.println("没有该类型不能转换")

    十一、包

     

    ee96092ca6964067948e613060da74b8.png

     十二、final

            类似与const

    cc3f46d515bb46f8938b454c7381a827.png

            final修饰也不是都不能改变,对于类外对象和数组是相同的,如下。 

    6b652291c6b94fa8a555c814f2cb9d1f.png

    十三、抽象类

    6d61788a511b4816b621cb04923cdb6e.png

    十四、接口

            注意接口中写抽象类这个点,也就是说类没有大括号和大括号中的内容

    d18cd748d4ae4920a036c4b596cab5d2.png

    e71622c9f208455ea72eaee8389c3fe2.png

     

    09e71fac16ea47cbb701bfa442121972.png

            以上为jdk7的用法。

            jdk8添加了接口中的方法体default和static,默认的为default修饰,后面的继承子类不需要去重载,若重载则接口中的default修饰的方法需要变为抽象方法。另外可以用static定义静态方法。

            jdk9添加了接口中的私有方法,可以用接口中的默认方法或静态方法来调用该私有方法。私有方法分为私有方法private(默认方法default调用)和私有静态方法private static(静态方法static调用)

    十五、嵌套类

            一般内部类

            内部类可以使用外部类的包括私有属性,而外部类要访问内部类需要创建对象,不能访问内部类私有属性。

            定义方法:Outer.Inner oi=new Outer().new Inner();

            内部类调用外部的变量不能用super,super使用于父类,调用方法:Outer.this.name;

            内部类调用自己的属性使用this.name;

            调用内部类方法时必须创建对象

            静态内部类

            静态内部类定义变量时,Outer.Inner oi=new Outer.Inner();

            调用静态内部类时不用创建对象,可以用类名来进行指定

            匿名内部类 

            b7d8abc2bcd448f4b18ab6768f853b37.png

     

  • 相关阅读:
    JavaScript 数组字符串方法
    01准备阶段 Latex相关软件安装
    Java 那些诗一般的 数据类型 (1)
    事件循环 Event Loop
    NCCL源码解析④:建图过程
    nvidia-smi指令报错:Failed to initialize NVML: Driver 解决
    Orange3数据可视化(箱线图-离散属性分布)
    ThreadLocal源码解析以及常见面试题
    Cognitive Mirage: A Review of Hallucinations in Large Language Models
    ABAP语法基础4
  • 原文地址:https://blog.csdn.net/m0_60177079/article/details/131925648