自己学习JAVA整理的基础知识

发布时间:2023年12月18日

public static void main(String[] ?args){

}

public?? ?访问修饰符(设置类可以被谁调用)
static ?? ?关键字
void ?? ?返回类型
main ?? ?方法名
String[] ?? ?字符串数组
args ?? ?变量名

访问控制修饰符
????????default?? ?在同一包内都可以用,?? ?使用对象:类、接口、变量、方法。
????????private?? ?在同一类中可用,?? ??? ?使用对象:变量、方法。
????????public?? ?对所有类可用,?? ??? ?使用对象:类、接口、变量、方法。
????????protected?? ?对同一包内的类和子类可用,?? ?使用对象:变量、方法。

在java中,被继承的类我们称之为父类,也叫基类;继承的类叫子类,也称派生类或超类。
类的继承(extends),继承属性和方法,以及重写、super关键字

数组的定义:类型[ ] 名字 =new 类型[ ]{写内容的地方,类型相同} ? int[] ?arr=new int[]{1,2,3,4,5}
?? ? ? 简写 类型[ ] 名字 ={写内容的地方,类型相同} ? int[] ?arr={1,2,3,4,5}
?? ? ? ?动态数组:类型[ ] 名字 =new 类型[ 数组中的数量] ?int[] ?arr=new int[5]
?? ?动态数组,整数默认0,浮点数默认0.0,boolean默认false,引用类型(类、接口、数组、String)默认null
? ?二维数组: ?类型[][] 名字 =new int[][]{{},{}}; ?int[][] arr=new int[][]{{1,2,3},{11,22,33}};
?? ? ? 可以简写
? ? ? ?类型[][] 名字 =new int[写可以存几个一维数组][写一维数组中内容数] ?int[][] ?arr=new int[3][5]

java的内存分配
栈:?? ?方法运行时使用的内存,比如main方法运行,进入方法栈中执行。
堆:?? ?储存对象或者数组,new来创建的,都在堆内存。
方法区:?? ?储存可以运行的class文件。
本地方法栈:JVM在使用操作系统功能的时候使用,和开发无关。
寄存器:?? ?给CPU使用,和开发无关。

方法的用法
方法的重载(同类同名不同参数):在定义一个方法的时候,如果在同一个类中,同名,并且参数不同,java虚拟机会认为是不同的方法。
?? ?this( 参数列表 )
?? ?这个用在我们类的构造器中,用来指向另一个构造器,如果参数列表为空,那就是指向无参构造器,
?? ??? ??? ? ? ? ? ? ?如果有参数,就按照参数列表的形式来指向,无参构造器的重载。
如何修改main中的变量:在main中调用类中的方法后,只是修改了方法内部的值,在main中需要接收这个方法的返回值,才可以改变main中的变量。
构造方法:主要是对类的参数进行设置,每个类都会默认一个无参数的构造方法,但是如果自己定义了一个构造方法,那么就没有无参构造方法了,
?? ?一般情况下,我们如果要定义一个构造方法,需要在定义一个无参的构造方法。

String(字符串)
1.String a="abc" 是堆区中的串池中,把地址赋给变量,如果值相同可以服用,节省空间。
2.String a=new String("hello") ?用new构造是在堆区开辟一个空间,把地址赋给变量,不能复用。
3.字符串拼接:(1)都是字符串,java的机制会把这些字符串看成一体的,可以服用串池中的数据。
?? ? ? ? ?(2)如果有变量和字符串一起拼接,那么在编译的时候,会new一个StringBuilder() 把字符串放进去,在new 一个String 去转化成字符串,比较浪费内存。
4.StringBuilder:new的时候会在堆区开辟一个空间,默认初始长度为16
?? ? ? ? ? ? 如果输入的内容超过16,会触发扩容,16*2+2的长度,如果输入的长度大于扩容之后的空间,那么就以输入的长度为StringBuilder的容量。

自己练习的文件

public class Demo3Application {
    // 成员变量
    private int age=188;
    public  void getAge(){
        // 局部变量
        int age=111;
        System.out.println(age);
    }

    //重载整数相加
    public static void sum(int a,int b){
        System.out.println(a+b);
    }
    public static void sum(double a,int b){
        System.out.println(a+b);
    }
    public static int sum(int a,int b,int c){
        System.out.println(a+b+c);
        return a+b+c;
    }
    public static void sum(int a,int b,int c,int d){
        System.out.println(a+b+c+d);
    }
    //拷贝数组(按索引拷贝)
    public static int[] cope(int[] copeArr,int from,int to){
        int[] arr=new int[to-from];
        int index=0;
        for (int i = from; i < to; i++) {
            arr[index]=copeArr[i];
            index++;
        }

        return arr;
    }
    public static int change(int count){
        count=200;
        return count;
    }


    public static void main(String[] args) {
//        SpringApplication.run(Demo3Application.class, args);
        Son myClass=new Son();
        System.out.println(myClass.age);
        myClass.study();
        System.out.println("键盘录入使用Scanner one =new Scanner(System.in);");
/*       键盘录入
        Scanner one =new Scanner(System.in);
        Scanner two =new Scanner(System.in);
        System.out.println("请输入第一个数:");
        int x=one.nextInt();
        System.out.println("请输入第二个数:");
        int y=two.nextInt();
        System.out.println("输出:"+(x+y));
 */
 /* 创建一个数组
        double[] arrNew=new double[]{1.1,3,2.2,5,6};
        int[] arr={1,2,3,4,5};
        System.out.println(arr);//[I@26ba2a48  “[”代表是数组,I代表是整型,@是固定符号,后面是储存地址
        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arrNew));
        int a=arr[0];
        System.out.println(a);
        int result=0;
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i]);
            result+=arr[i];
        }
        System.out.println(result);
        int[] arr2=new int[10];
        System.out.println(Arrays.toString(arr2));
        char[] arr3=new char[10];
        System.out.println(Arrays.toString(arr3));
        //求数组最大值
        //1
        double max=arrNew[0];
        for (int i = 0; i < arrNew.length; i++) {

            if(max<arrNew[i]){
                max=arrNew[i];
            }
        }
        System.out.println(max);
        //2
        for (int i = 0; i < arrNew.length-1; i++) {
            for (int b = 0; b < arrNew.length-1-i; b++) {
                if(arrNew[b]>arrNew[b+1]){
                    double temp=arrNew[b];
                    arrNew[b]=arrNew[b+1];
                    arrNew[b+1]=temp;
                }
            }
        }
        System.out.println(Arrays.toString(arrNew));
 */
  /*    方法的重载(同类,同名,不同参(参数的类型不同也可以),和返回值无关)
        sum(1,2);
        sum(1.1,2);
        sum(1,2,3);
        System.out.println(sum(1,2,3));
        sum(1,2,3,4);
   */
    /* 复制数组,二维数组
        int[] arr1=new int[]{1,2,3,4,5,6,7,8,9};
        int[] cope = cope(arr1, 2, 6);
        System.out.println(Arrays.toString(cope));
        int a=100;
        a=change(a);
        System.out.println(a);
        int[][] arr2=new int[][]{{1,2,3,4,5},{11,22,33,44,55}};
        System.out.println(Arrays.toString(arr2[1]));
     */
        System.out.println("随机数:Random ran= new Random();");
        Random ran= new Random();
        int a=ran.nextInt(100);
        System.out.println(a);
        Demo3Application myClass1=new Demo3Application();
        myClass1.getAge();
        Dome1 myAaa=new Dome1();
        myAaa.aaa();
    }

}
class Father{
     int age=20;
     void study(){
         System.out.println("学习java,努力努力");
     }
}
class Son extends Father {
    @Override
    void study(){
        System.out.println("子类中使用@Override覆盖父类的方法");
    }

}


?

文章来源:https://blog.csdn.net/qq_58364626/article/details/132760402
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。