Java基础知识总结 每天定时补充

一.逻辑运算符 

  • & 逻辑与 无论左边真假,右边都要执行 (即使为假,也会继续走下去)
  • &&   短路与   如果左边为真,右边继续执行,左边为假,右边不执行(有一个为假则为假)
  • | 逻辑或 无论左边真假,右边都要执行 (即使为真,也会继续走下去)
  • || 短路或 如果左边为假,右边执行 ,如果左边为真,右边不执行 (有一个为真,则为真)
int age = 20;
String name = "majunbao";

if(age == 20 && name.equals("majunbao")){
    //左边为true ,继续执行右边
    //左边为假 ,直接走else
}else{

}




if(age != 20 & name.equals("majunbao")){
    //左边为true ,继续执行右边
    //左边为假 ,继续执行右边 ,然后执行else
}else{

}



if(age == 20 || name.equals("majunbao")){
    //左边为true ,即为真 不会走右边判断
    //左边为假 ,继续执行右边 ,右边为假走else 为真 进入if里面
}else{

}

if(age == 20 | name.equals("majunbao")){
    //左边为true ,继续执行右边 
    //左边为假 ,继续执行右边 ,右边为假走else 为真 进入if里面
}else{

}



二.循环语句

        for循环:先判断条件是否成立然后执行循环体

        while循环 先判断条件是否成立 然后执行循环体

        do...while循环 先执行循环体 在判断条件是否成立(会比for 和 while 多走一遍)

int count = 5;

for(int i = 0 , i < count , i++){

}



while(count>0){
    count--;
}



do{
    
}while(count > 0)

三种循环的区别

  1. for和while先判断在执行
  2. do...while先执行后判断

for和while的区别

  1. for循环的 变量i 只属于for ,for循环结束 不能在使用
  2. while循环的 控制变量 ,即使循环结束 还可以继续使用

死循环格式

  •  for(;;){}
  • while(true){}
  • do{}while(true)

三.内存分配

  1. 栈内存:存放的是局部变量
  2. 堆内存:存放的是new出来的内容(实体,对象)

1.栈内存存放的是局部变量,定义在方法中的变量 例如上图arr ,使用完毕 立即消失

2.堆内存存放的是new出来的内容对象或者实体,他会为存储空间添加默认值 

                整数:0 浮点数:0.0 布尔:false 字符:空字符 引用数据类型:null

每一个new出来的东西都会生成一个内存地址 ,使用完毕后 垃圾回收器空闲时会被回收


四.形参和实参

  •       实参:实际传入的参数 ,方法调用中的参数 ,等同于使用的常量和变量
  •        形参:方法中拿到的参数,方法中定义的参数 等同于 变量定义格式 int a ,String b
public static void add(int num){
    
}


add(10)


//num是形参 10是实参 因为 10是实际传入的参数

五.类和对象

       1.什么是类

  •         类是对现实生活中的一类具有共同属性和行为特征的事物的抽象

        2.类的提点

  •         类是对象的数据类型
  •         类是具有相同属性行为的一组对象集合

        3.类和对象的关系

  •          类是现实生活中的一类具有共同属性和行为特征的事物的抽象
  •          对象是真实存在的实体

        

ps:类是java中重要组成单位 ,

        类的组成 :属性和 行为 

        属性是 java中的 成员变量 

        行为是 java中成员方法

        4.什么是成员变量 和 局部变量

  •         成员变量 类中方法外的变量 
  •         局部变量 方法中的变量

六.String字符串

  •        字符串不可变,他们的值在创建之后就不能被改变
  •         虽然String不可变,但是他们可以共享
  •         字符串的效果相当于字符数组char ,但是底层原理是字节数据byte
  •         jdk8以前是字符数组,jdk9以后是字节数组

      1.字符串中的常用方法 

  •                 equals()比较字符串的内容区别大小写
  •                 charAt(int index) 返回指定索引处的 char值
  •                 length()  返回字符串的长度

String s = "hello";

s+="world";

system.out.printIn(s);

分析 :

  1.         首先String s 放到占内存中 
  2.         “hello” 放到字符串常量池中 指定一个内存地址 001
  3.         world 查询字符串常量池 没有 ,创建world放到字符串常量池 指向内存地址 002
  4.         s+=world 就是 helloworld 查询没有 ,创建helloworld 放到字符串常量池 指向内存 003
  5.         最后输出的 s 就是 helloworld 

  ps:上面的例子 说明了 字符串不可变 但是 可以共享 

StringBuilder

StringBuilder是一个可变的字符串类型

String:内容是不可变的

SrtringBuilder:内容是可变的

StringBuilder的添加和反转的方法

apend()添加数据 ,并返回对象本身 a.apend("bc") 返回 abc

reverse() 返回相反的 字符串 abc 返回 cba

String和 StringBuilder相互转换

1.StringBuilder转换为String

可以通过.toString()方法进行转换

2.Stirng转换StringBuilder

public StringBuilder(String s) 通过构造方法就可以实现把String转换成 StringBuilder

集合基础

集合是提供一种存储空间可变的存储类型,存储的数据容量可以发生改变

集合类有很多中 

ArrayList<E> 

  •        可调整大小的数组实现
  •        <E>是一种特殊的数据类型,泛型

ArrayList常用方法

        remove(Object o) 删除指定元素,返回删除是否成功 boolean

        remove(int index) 删除指定下标的元素,返回被删除的元素

        set(int index , E element) 修改指定索引处的元素 ,返回被修改的元素

        get(int index) 返回指定索引的 元素

        size()返回数组个数         

 

private 关键字 

是一个权限修饰符

可以修饰成员(成员变量 和 成员方法)

作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问

private修饰的成员变量 如果想访问 需要配置get set方法

this关键字

this修饰的变量用于指代成员变量

  •         方法的形参如果于成员变量同名,不带this修饰的变量指向的事形参,不是成员变量
  •         方法的形参如果于成员变量同名,不带this修饰的变量指向的是成员变量

面向对象三大特征(封装,多态 ,继承)

1.继承

        继承可以使子类具有父类的属性和方法,还可以在子类中重新定义 ,追加属性和 方法

public class Father{
    int age = 10;
    public void setAge(int age){
        this.age = age;
    }
}


public class Son extends Father{

    @override
    public void setAge(int age){
        this.age = age;
    }

    public void setName(String name){
        Log.d(name);
    }
}

  • 子类可以有父类的内容
  • 子类还有有自己的特定内容

继承的好处和弊端

好处

  •         提高了代码的复用性       (多个类相同的成员可以放到一个类中)
  •         提高了代码的可维护性(如果方法的代码需要修改。修改一处就好)

弊端

        继承让类和类之前产生关系,类的耦合性增强了,当父类发生变化时 ,子类也要跟着变化 

super

       super用法和this关键字用法相似

  •         this代表本类中的对象的引用
  •         super代表父类中对象的引用 父类存储空间的表示

重写Override

定义:方法名相同 参数列表相同 返回值相同

私有方法不能被重写 private 

子类的访问权限不能更低public>默认>私有

java中是单继承 ,不支持多继承

java中支持多层继承 (Son继承Father ,Father 继承 GrandFather )

一个类只可以继承一个 

修饰符

修饰符同一个类中同一个包中 子类无关类不同包的子类不同包的 无关类
private✔️
默认✔️✔️
protected✔️✔️✔️
public✔️✔️✔️✔️

final

final关键字的意思是最终的意思,可以用来继续是成员方法,成员变量 ,类

final修饰的特点

  •         修饰方法:表示该方法是最终方法不能为重写
  •         修饰变量:表示该变量是常量 ,不能再次被赋值
  •         修饰类:表示该类是最终类,不能被继承

final修饰局部变量

        修饰基本类型:数据值不能改变

        修饰引用类型:地址值不能改变 ,地址里面的内容可以改变

static关键字

static是静的意思 ,可以用来修饰 成员变量  和 成员方法

static修饰的特点:

        被类的所有对象共享 , 这也是我们判断是否使用静态关键字的条件

        可以通过类名调用 ,当然,也可以通过对象名调用

static访问特点

非静态的成员方法

  •         能访问静态的成员方法
  •         能访问静态的成员变量
  •         能访问成员方法
  •         能访问成员变量

静态的成员方法

  •         能访问静态的成员方法
  •         能访问静态的成员变量

 

ps:静态的成员方法 只能访问静态的成员

多态

好处:提高了程序的扩展性

        具体体现:定义方法的时候 ,使用父类型作为参数,将来在使用的时候 ,使用具体的子类型参与操作

弊端:不能使用子类的特有功能

父类引用指定子类对象 

访问成员变量 ,编译看左边 运行看左边

访问成员方法 , 编译看左边 运行看右边



public class Animal {
    public String name ="majunbao";

    public void eat(){
        System.out.println("Animal ==== eat");
    }

}




public class Cat extends Animal{

    public String name ="hahaha";

    @Override
    public void eat() {
        System.out.println("cat === eat");
    }

    public void study(){
        System.out.println("cat === study");
    }

}


public class Test {

    public static void main(String[] args) {
        Animal animal = new Cat();
        animal.eat();
        System.out.println(animal.name);
    }
}





输出内容

cat === eat
majunbao

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值