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

        ArrayList<String>list1=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

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

Animal a=new dog();  //前面明确a用dog类型或者cat类型都可以

if (a instanceof Dog d)        //通过这一串判断无论a是dog或是cat都可以使用特有方法
    d.lookhome()
else if(a instance of Cat c)
    c.catchmouse()
else
    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

 

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值