JAVA-SE小总结

目录

1.byte和char的区别

2.数组

 2.1 求数组的长度(数组名.length)

2.2直接打印数组的方法(Arrays.toString(数组名))

2.3自动将数组中的数字大小排序(Arrays.sort(数组名))

2.4 自动查找数字下标,类似于二分查找(Arrays.bringSearch(数组名,想要找寻的数字))

2.5 数组拷贝

2.6 数组填充

2.7 二维数组jielun

3. 类和对象

 3.1 类的实例化

3.2 this引用的特性

4.封装

5.static成员

6.代码块

6.1 普通代码块

 6.2 静态代码块

7.super与this的区别

8.重写和重载的区别

 9.向上转型和向上转型

9.1向上转型

 9.2 向下转型

10.内部类

10.1 实例内部类

10.2 静态内部类

10.3局部内部类

11.String类

11.1 字符串构造

11.2 字符串拆分

11.3 字符串截取


1.byte和char的区别

1.byte是字节数据类型,是有符号型的,占一个字节,大小范围为-128~127

2.char是字符数据类型,是无符号型的,占两个字节,大小范围为0~65535

3.char是一个十六位二进制的unicode字符,Java用char来表示一个字符

4.byte类型只能表示-128~127的数

   char类型可以表中文字符,byte不可以,例:char e1=‘中’,e2=’国'

   byte=(byte)'中'   //必须强制转换,否则会报错


2.数组

        主要存储相同数据类型的集合,连续的空间

定义方式1:int[] array={1,2,3,4,5};

        方式2:int[] array2=new int[]{1,2,3,4,5};

        方式3:int[] array3=new int[5];

若 arr3[13]=19;  ,则会报错,数组越界异常

1。动态初始化——方式三

2.静态初始化——方式一和二

Java中不推荐这样写:int arr[]={1,2,3};

 2.1 求数组的长度(数组名.length)

int[] array={1,2,3,4,5};
for(int i=0;i<array.length;i++){
    System.out.println(array[i]+" ");
}

2.2直接打印数组的方法(Arrays.toString(数组名))

        Java帮忙实现一个打印数组的方法,将数组里面的值以字符串的形式组织一下,然后进行打印

        注:要添加头文件(import java.util.数组名)

System.out.println(Array.toString(array));

2.3自动将数组中的数字大小排序(Arrays.sort(数组名))

Array.sort(array);

2.4 自动查找数字下标,类似于二分查找(Arrays.bringSearch(数组名,想要找寻的数字))

int[] array={1,2,3,4,5};
int index=Arrays.bringSearch(array,5);

2.5 数组拷贝

int[] array={1,2,3,4,5};
Arrays.copyof(array,array.length);
//若想要扩充两倍,则写成
Arrays.copyof(array,array.length*2);

//若进行数组拷贝,则需要创建一个新的数组
int[] copyArray=new int[array.length];

Arrays.copyofRange(array,1,3);//打印结果为[2,3),没有4
//改行代码的意思是拷贝array中从下标1到下标3的字符或者数字
//注:在Java中,拷贝一个范围时,是左闭右开的范围,即[x,y)
int[] array={1,2,3,4,5};
int[] copy=new int[array.length];
System.out.println(array,0,copy,0,array.length);
//该代码的意思是array从0下标开始拷贝到copy,copy从0下标开始拷贝到array.length结束
System.out.println(Array.toString(copy));

2.6 数组填充

Array.fill(array,9);
//将array里的内容全部填充为9

Array.fill(array,0,3,8);
//将array里将从下标0到下标3的位置填充为8,因为Java中取值是左闭右开,即[1,3)能填充为8
//即[8,8,8,0,0,.....,0]

2.7 二维数组jielun

int[][] array1={{1,2,3},{4,5,6}};
System.out.println(array1.length);
//打印出的是行的长度,结果为2,打印的是array1,这个二维数组有多少行
System.out.println(array[1].length);
//每一行的长度,打印的是二位数组中的长度

for(int[] tmp : array){
    for(int x : tmp){
        System.out.println(x+" ");
    }
}
//打印结果为
//1 2 3
//4 5 6

String ret=Arrars.toString(arrays1);
System.out.println(ret);
//打印结果为{1,2,3}{4,5,6}

int[][] array1=new int[2][];//在Java中,不可以省略行,但是可以省略列
array1[0]=new int[3];
array1[1]=new int [5];
System.out.println(array1.length);
System.out.println(array[1].length);

3. 类和对象

 3.1 类的实例化

        用类类型创建对象的过程,称为类的实例化,在Java中采用new关键字,配合类名来实例化对象

结论:可以使用new关键字实例化多个对象

        1.new关键字用于创建一个对象的实例

        2.使用 . 来访问对象中的属性和方法

        3.同一个类可以创建多个实例

3.2 this引用的特性

  1. this的类型:对应类型引用
  2. this只能在”成员方法“中使用、
  3. 在”成员方法“第一个引用当前对象,不能再引用其他对象
  4. this是”成员方法“第一个隐藏的参数,编译器会自动传递,在成员方法执行时,编译器会负责将调用成员方法对象的引用传递给该成员方法,this负责来接受

4.封装

                范围privatedefaultprotectedpublic
同一包中的同一类可以可以可以        可以
同一包中的不同类可以可以可以
不同包中的子类可以可以
不同包中的非子类可以

default的使用即是什么都不写

public:可以理解为一个外貌特征,谁都可以看到

default:对于自己家族中(同一个包中)不是什么秘密,对于其他人来说是隐私

private:只有自己知道,其他人不知道

【说明】:

  • protected主要用在继承中
  • default权限指:什么都不写时的默认权限
  • 访问权限除了限定类中成员的可见性,也可以控制类的可见性 

5.static成员

private String name;//普通成员变量
private int age;
//表示每一个对象

private static String classRoom;
//表示所有对象共用一份
  • 普通成员变量:在类的内部,构造方法的外部
  • 静态成员变量:在类的外部,构造方法的外部,被static修饰了
  • 局部变量:方法内部定义的变量

6.代码块

6.1 普通代码块

public class Main{
    public static void main(String[] args){
        {
            int x=10;
            System.out.println("x1="+x);
        }
        int x=10;
        System.out.println("x2="+x);
    }
}//x1=10,x2=100    

 6.2 静态代码块

class Student{
    public static String classRoom;
    static{
        classRoom="201";
        System.out.println("静态代码块");
    }
public class Test{
    public static void main(String[] args){
        System.out.println(Student.classRoom);
    }
}
}
//打印结果
//静态代码块
//201

7.super与this的区别

两者不可同时存在,因为两者都需要放在第一行

【相同点】:

  1. 都是Java中的关键字
  2. 只能在类的非静态成员和字段
  3. 在构造方法中调用时必须是构造方法中的第一条语句,并且不能同时存在

【不同点】:

  1. this是当前对象的引用,当前对象即调用实例方法的对象

         super相当于是子类对象中父类继承下来部分成员的引用

     2.在非静态成员方法中,this用来访问本类的方法和属性

        super用来访问父类继承下来的方法和属性

8.重写和重载的区别

重写:override                                                重载:overload

   1.方法名称相同                                                1.方法名称相同

   2.参数列表相同(个数、顺序、类型)                 2.参数列表不同(个数、类型、顺序)

   3.返回类型相同                                                3.返回值没有要求

 

 9.向上转型和向上转型

9.1向上转型

实际就是创建一个子类对象,将其当成父类对象来使用

        语法格式:父类类型 对象名 = new 子类类型();

animal 是父类类型,但可以引用一个子类对象,因为是从小范围到大范围的转换

        例:

                Dog dog =new Dog("WangWang",1);

                Animal animal =dog;

两者向上转型:Animal animal=new Cat("元宝",2);

向上转型的发生的时机:

  1. 直接赋值:Animal animal=new Dog();
  2. 传参:
public static void testFunc(Animal animal){...};
public static void main(String[] args){
       Dog dog =new Dog("WangWang",1); 
       testFunc(dog);//此时,通过参数的传递,发生了向上转型
}

3.返回值

//第一种
public static Animal testFunc(){
    return new Dog();//Animal是父类,Dog是子类,前提条件是父类可以接受子类
}
public static void main(String[] args){
    Dog dog=new Dog("WangWAng",1);
    testFunc();
}
 
//第二种
public static Dog testFunc1(){
    return new Dog();
}
public statc void main(String[] srgs){
    Animal animal==testFunc1();
}//有点类似于直接赋值

 9.2 向下转型

public static void main(String[] args){
    Animal animal =new Dog("WangWang",1);
    Dog dog =(dog)animal;
    dog.bark();
    if(animal instanceof Cat){
        Cat cat =(Cat)animal;    
        cat.mimi();
    }
}

10.内部类

        内部类包括实例内部类、静态内部类、局部内部类

10.1 实例内部类

        概念:在类里面,方法的外面,内部不能定义静态静态类成员变量

例:

        OuterClass.InnerClass innerClass=outerClass.new InnerClass();

        外部类名    . 内部类名     变量       外部类对象的引用

【注意事项】:

  1. 外部类中的任何成员都可以在实例化内部类方法中直接访问
  2. 实例内部类所在的位置与外部类成员位置相同,因此也受public、private等访问限定符的约束
  3. 在实例内部类方法中访问同名的成员时,优先访问自己的,如果要访问外部类同名从成员,必须是外部类.this.同名成员(OutClass.this.date1)来访问
  4. 实例内部类对象必须在先有外部类对象前提下才能创建
  5. 实例内部类的非静态方法中包含了一个指向外部类对象的引用
  6. 外部类中,不能直接访问实例内部类中的成员,如果要访问必须先要创建内部类的对象

10.2 静态内部类

        在类前加static,不需要外部类的对象就能实例化

10.3局部内部类

        定义在外部类的方法体或者{}中,该种内部类只能在其定义的位置使用

11.String类

11.1 字符串构造

        String类提供的构造方法很多,常用的就有以下三种

public static void main(String[] args){
    //使用常量串构造
    String s1="hello bite";
    system.out.println(s1);
    
    //直接newString对象
    String s2=newString("hello bite");
    system.out.println(s2);
    
    //使用字符串数组进行构造
    char[] array={'h','e','l','l','o','b','i','t','e'};
    String s3=new String(array);
    system.out.println(s3);
}

11.2 字符串拆分

        可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串

        String[] split(String regex)     将字符串全部拆分

        String[] split(String regex,int limit)  将字符串以指定的格式,拆分为limit组

public static void main(String[] args){
    String str="hello world hello bite";
    String[] ret=str.split(" ");//一个空格
    for(int i=0;i<ret.lengh;i++){
        system.out.println(ret[i]);
    }
}
//注意事项
//1.字符"|","*","+"都得加上转义字符,前面加上"\\"
//2.而如果是"\\",那么就得写成"\\\\"
//3.如果一个字符串中有多个分隔符,可以用"|"作为连字符

11.3 字符串截取

从一个完整的字符串之中截取出部分内容

String substring(int beginIndex);  从指定索引截取到结尾

String substring(int beginIndex,int endIndex);   截取部分内容

例:

        String str="helloworld";

        System.out.println(str.substring(5));

        System.out.println(str.substring(0,5));

注:

  1. 索引从0开始
  2. 注意前闭后开区间的写法,substring(0,5)表示0号下标的字符,不包含5号下标
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值