Java学习

方法重载
在一个类中,有一系列方法,其方法名相同,但各自的参数不同,称为方法重载(overload), 比如String类中的indexOf方法

public class Hello {

    public void hello(){}
    public void hello(String name){
        System.out.println("Hello" + name + "!");
    }
    public void hello(String name, int age){
        if (age < 18){
            System.out.println("Hi" + name + "!");
        } else{
            System.out.println("Hello" + name + "!!");
        }
    }
    public static void main(String[] args) {
        Hello h = new Hello();
        h.hello();
        h.hello("小明");
        h.hello("小芳", 16);
    }
}
  • 注意:方法返回值的类型通常是相同的
  • 目的:对于功能类似的方法,使用相同的名字,方便记忆和调用

继承

  • 继承可以复用代码,直接调用父类的方法,这样子类就可以不用写重复的代码,而专注于编写扩展功能的代码
  • 继承使用extends关键字
  • 继承除了新加方法外,也可以重写父类的方法
  • Java不直接支持多重继承,一个类只有一个父类,但可以使用接口来实现多重继承
  • 父类(parent class)也可以叫超类(super class)、基类(base class)
  • 继承树,Java中,除了Object外,任何类都会继承某个类,如果没有写extends,编译器默认其继承extends Object
public class Person {
    String name;
    int age;
    public String getName(){
        return name;
    }

    public int getAge(){
        return age;
    }

    public static void main(String[] args) {
        Student s = new Student();
        s.name = "小明";
        s.age = 12;
        s.score = 80;
        System.out.println(s.getName());
        System.out.println(s.getAge());
        System.out.println(s.getScore());
    }
}

class Student extends Person{
    int score;
    public int getScore(){
        return score;
    }

    @Override
    public int getAge() {
        return age + 1;
    }
}

位运算
如下,<< 1表示向左移一位,那么7的二进制向左移一位,实际上就是乘2,结果就变成了14。

public class Demo{
    public static void main(String[] args) {
        int n = 7;  // 00000000 00000000 00000000 00000111
        int m = n << 1;  // 00000000 00000000 00000000 00001110  
        System.out.println(m); // 2^3+2^2+2^1+0 = 14
    }
}

这里对int进行说明下,

  • int整数类型最大的范围为32位(二进制)
  • 其最多能够表示整数的个数为2^32个
  • 最高位0表示正数,最高位为1表示负数
  • 正整数表示的最大值为 2^31-1,即2,147,483,647
  • 默认值为0
  • 负整数表示的最小值为 -2^31,即-2,147,483,648

具体关于位的运算过程,可以参考以下博客,写的很详细。
https://blog.csdn.net/hhy107107/article/details/82801780

使用意义:

  • 位运算是底层运算,效率较高
  • 位运算可以减少代码量,理解简单,比如设置增删改查四种权限的位运算

复制一篇有趣的题目,来自上边链接博客。

有 1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?
根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。
000=0
001=1
010=2
011=3
100=4
101=5
110=6
111=7
一位表示一个老鼠,从左到右分别代表老鼠3,老鼠2,老鼠1。0-7表示8个瓶子。也就是分别将1、3、5、7号瓶子的药混起来给老鼠1吃,2、3、6、7号瓶子的药混起来给老鼠2吃,4、5、6、7号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。同样道理10个老鼠可以确定1000个瓶子

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值