Java学习

Java学习,第1张

Java学习

2021/12/27 Java学习

1.IDE项目
main()方法:快捷键psvn;
输出语句:sout
查看运行框显示:Alt+4
重要:代码修复:Alt+回车
删除光标所在行:ctrl+Y
重复当前行:ctrl+D
重要:格式化代码行:ctrl+Alt+L
单行注释:ctrl+/ (取消再按一次)
多行注释:ctrl+Shift+/ (取消再按一次)
自动生成代码、toString,get,set方法:Alt+Ins
移动当前代码行:Alt+Shift+上下箭头

一、方法:
for循环次数快捷见:循环次数.fori ; eg:5.fori

package ln.javatest.day04.demo02;

public class Demo01Method {
    public static void main(String[] args) {
        printMethod();
    }
​
    public static void printMethod() {
        for (int i = 0; i < 3; i++) {
            for (int j = 0; j < 5; j++) {
                System.out.println("*");
            }
            System.out.println();
        }
    }
}
​

方法的定义和调用:

package ln.javatest.day04.demo02;

​
public class Demo02MethodDefine {
    public static void main(String[] args) {
        //单独调用:方法名称(参数)
        sum(10,20);
        System.out.println("================");
​
        //打印调用:System.out.println(方法名称(参数))
        System.out.println(sum(10,20));
        System.out.println("================");
​
        //赋值调用: 数据类型 变量名称 = 方法名称(参数)
        int number = sum(10,27);
        System.out.println(number);
    }
    public static int sum(int a ,int b){
        System.out.println("方法执行啦!");
       int result =  a + b;
       return result;
    }
}
​

对比有参数和无参数方法:

package ln.javatest.day04.demo02;

​
public class Deno03MethodParam {
    public static void main(String[] args) {
        method1(2,9);
        method2();
    }
    //两个数字相乘,做乘法,必须知道两个数字各自是多少,否则无法进行计算
    //有参数
    public  static void method1(int a, int b){
        int result = a * b;
        System.out.println("结果是:" + result);
    }
​
    //打印输出固定10次文本字符串
    public static void method2(){
        for (int i = 0; i < 10; i++) {
            System.out.println("Hello!" + i);
        }
    }
}
​

对比有返回值和无返回值方法:

package ln.javatest.day04.demo02;

​
public class Demo04MethodReturn {
    public static void main(String[] args) {
        //我调用你,你告诉我结果
        int num = getSum(10,20);
        System.out.println("返回值是:"+ num);
​
        //我调用你,你不用告诉我结果
        printSum(10,20);
    }
    public static int getSum(int a ,int b){
        int result = a + b;
        return result;
    }
​
    public static void printSum(int a , int b ){
        int result = a + b;
        System.out.println("结果为:" + result);
    }
​
}
​

方法练习题:

package ln.javatest.day04.Demo03;

public class Demo01MethodSame {
    public static void main(String[] args) {
        methodSame(20,20);
    }
    public static void methodSame(int a ,int b){
        if(a == b){
            System.out.println("这两个数相同!");
        } else{
            System.out.println("这两个数不相同!");
        }
​
    }
}
​
package ln.javatest.day04.Demo03;

​
public class Demo02MethodSum {
    public static void main(String[] args) {
        System.out.println(getSum());
    }
    public static int getSum(){
        int sum = 0;
        for (int i = 0; i <= 100; i++) {
            sum += i;
        }
        return sum;
    }
}
​
package ln.javatest.day04.Demo03;

​
public class Demo03MethodPrint {
    public static void main(String[] args) {
        printCount(3);
​
    }
    public static void printCount(int a ){
        for (int i = 1; i <= a; i++) {
            System.out.println("Hello" + i);
        }
    }
}
​

方法的注意事项:
1.方法应该定义在类当中,但是不能再方法当中再定义方法,不能嵌套。
2.方法定义的前后顺序无所谓
3.方法定义之后不会执行,如果希望执行,一定要调用:单独调用、打印调用、赋值调用。
4.如果方法有返回值,那么必须写上“return 返回值;”,不能没有。
5.return后面的返回值数据必须和方法的返回值类型对应一致。
6.对于一个void没有返回值的方法,不能写return后面的返回值,只能写“return;”
7.“return;”可省略不写
8.一个方法当中可以有多个return语句,但是必须保证同时只有一个会被执行到。例如if-else里各有,但只有一个会被执行,两个return不能连写。

方法重载:

package ln.javatest.day04.Demo04;

​
public class Demo01MethodOverload {
    public static void main(String[] args) {
        System.out.println(sum(10,20));
        System.out.println(sum(10,20,30));
        System.out.println(sum(10,20,30,40));
    }
    public static int sum(int a ,int b){
        return a + b;
    }
    public static int sum(int a ,int b,int c){
        return a + b + c;
    }
    public static int sum(int a ,int b,int c, int d){
        return a + b + c + d;
    }
​
}
​

方法的注意事项: 方法重载与下列因素相关:
1.参数个数不同
2.参数类型不同
3.参数的多类型顺序不同
方法重载与下列因素无关:
1.与参数名称无关 eg.int a,int b; 和 int x, int y;一样
2.与方法的返回值无关

方法重载练习题:

package ln.javatest.day04.Demo04;


public class Demo02MethodOverloadSame {
    public static void main(String[] args) {
        if(isSame((byte)2,(byte)2)){
            System.out.println("这两个数一样!");
        } else{
            System.out.println("这两个数不一样!");
        }

        if(isSame((short)176,(short)138)){
            System.out.println("这两个数一样!");
        } else{
            System.out.println("这两个数不一样!");
        }

        if(isSame((int)36769,(int)47907)){
            System.out.println("这两个数一样!");
        } else{
            System.out.println("这两个数不一样!");
        }

        if(isSame(5.7F,8.9F)){
            System.out.println("这两个数一样!");
        } else{
            System.out.println("这两个数不一样!");
        }

    }
    public static boolean isSame(byte a, byte b){
        System.out.println("这是两个byte值。");
        return a == b;
    }
    public static boolean isSame(short a, short b){
        System.out.println("这是两个short值。");
        return a == b;
    }
    public static boolean isSame(int a, int b){
        System.out.println("这是两个int值。");
        return a == b;
    }
    public static boolean isSame(float a, float b){
        System.out.println("这是两个float值。");
        return a == b;
    }
}

package ln.javatest.day04.Demo04;
//实现重载的println方法
//byte short int long float double char boolean
//String
//在调用输出语句的时候,println方法其实就是进行了多种数据类型的重载形式。
public class Demo04OverloadPrint {
    public static void main(String[] args) {
        myPrint(100); //int
        myPrint((byte)100); //byte
        myPrint("hello"); //String

    }
    public static void myPrint(byte num){
        System.out.println("num");
    }
    public static void myPrint(short num){
        System.out.println("num");
    }
    public static void myPrint(int num){
        System.out.println("num");
    }
    public static void myPrint(long num){
        System.out.println("num");
    }
    public static void myPrint(float num){
        System.out.println("num");
    }
    public static void myPrint(double num){
        System.out.println("num");
    }
    public static void myPrint(char zifu){
        System.out.println("zifu");
    }
    public static void myPrint(boolean is){
        System.out.println("num");
    }
    public static void myPrint(String str){
        System.out.println("num");
    }
}

二、数组 1.动态初始化数组

package ln.javatest.day04.Demo05;


public class Demo01Array {
    public static void main(String[] args) {
        //动态初始化数组
        //创建一个数组,里面可以存放300个数字
        //格式:数据类型[] 数组名称 = new 数据类型[数组长度];
        int[] arrayA = new int[300];

        //创建一个数组,能存放10个double类型的数据
        double[] arrayB = new double[10];

    }
}

2.静态初始化数组 1)静态初始化的基本格式

package ln.javatest.day04.Demo05;


public class Demo02Array {
    public static void main(String[] args) {
        //直接创建一个数组,里面装的全都是int数组,具体为:5,15,25
        int[] arrayA = new int[]{5,15,25};

        //创建一个数组,用在装字符串,“Hello“,”World“,”Java“
        String[] arrayB = new String[]{"Hello","World","Java"};
    }
}

2)静态初始化的省略格式

package ln.javatest.day04.Demo05;

public class Demo03Array {
    public static void main(String[] args) {
        //省略格式的静态初始化
        int[] array = {10,20,30};
        //静态初始化标准格式可以拆分成为两个步骤
        int[] arrayB;
        arrayB = new int[]{10,20,30};
        //动态初始化也可以拆分成两个步骤
        int[] arrayC;
        arrayC = new int[5];
        //静态初始化一旦使用省略格式,就不能拆分成为两个步骤了
        //int[] arrayD;
        //arrayD = {10,20,30};
        //上面两句是错误的写法
    }
}

3)静态数组的 *** 作:访问数组元素进行获取。

package ln.javatest.day04.Demo05;


public class Demo04ArrayUse {
    public static void main(String[] args) {
        //静态初始化的省略格式
        int[] array = {10,20,30};
        //直接打印数组名称,得到的是数组对应的,内存地址哈希值。
        System.out.println(array);    //[I@75412c2f
        System.out.println(array[0]); //10
        System.out.println(array[1]); //20
        System.out.println(array[2]); //30
        //也可以将数组当中的某一个单个元素,赋值交给一个变量
        int num = array[1];  //num=20
        System.out.println(num); //20
    }

}

4)对动态数组的 *** 作:对数组元素进行赋值。

package ln.javatest.day04.Demo05;


public class Demo05ArrayUse {
    public static void main(String[] args) {
        //动态初始化一个数组
        int[] array = new int[3];
        System.out.println(array); //内存地址值
        System.out.println(array[0]);  //0
        System.out.println(array[1]);  //0
        System.out.println(array[2]);  //0
        //将数据123赋值给交给数组array当中的1号元素。
        array[1] = 123;
        System.out.println(array[0]);  //0
        System.out.println(array[1]);  //123
        System.out.println(array[2]);  //0
    }


}

三、Java中的内存划分:分为5个部分。
1.栈(Stack):存放的都是方法中的局部变量。方法运行一定要在栈中。
局部变量:方法的参数,或者是方法{}内部的变量;
作用域:一旦超出作用域,立刻从栈内存当中消失;
2.堆(Heap): 凡是new出来的东西,都在堆当中。
堆内存里面的东西都有一个地址值:16进制; 堆内存里面的数据,都有默认值。
规则:
如果是整数 默认为0
如果是浮点数 默认为0.0 如果是字符 默认为'u0000'
如果是布尔 默认为false
如果是引用类型 默认为null
3.方法区(Method Area): 存储.class相关信息,包含方法的信息。
4.本地方法栈(Native Method Stack):与 *** 作系统相关。
5.寄存器(pc Register): 与CPU有关。

四、数组索引越界异常

package ln.javatest.day04.Demo05;


public class Demo01ArrayIndex {
    public static void main(String[] args) {
        int[] array = {12,25,35};
        System.out.println(array[0]);  //15
        System.out.println(array[1]);  //25
        System.out.println(array[2]);  //35

       //错误写法:并不存在3号元素,所以数组索引越界异常 System.out.println(array[3]);
    }
}

五、空指针异常

package ln.javatest.day04.Demo05;


public class Demo02ArrayNull {
    public static void main(String[] args) {
        int[] array = null;
        array = new int[3];
        System.out.println(array[0]);
    }
}

六、获取数组的长度以及数组大小的改变

package ln.javatest.day04.Demo05;


public class Demo03ArrayLength {
    public static void main(String[] args) {
        int[] arrayA = new int[3];

        int[] arrayB = {10,20,30,3,4,5,6,7,8,9};
        int len = arrayB.length;
        System.out.println(len);  //10
        //数组一旦创建,程序运行期间,长度不可改变。
        //两个new是两个数组,开辟的两个不同大小的空间,arrayC只是一个名字
        int[] arrayC = new int[3];
        System.out.println(arrayC.length); //3
        arrayC = new int[5];
        System.out.println(arrayC.length); //5
    }
}

七、数组的遍历输出

package ln.javatest.day04.Demo05;


public class Demo04Array {
    public static void main(String[] args) {
        int[] array = {15,25,30,40,50};
        //原始方式一个个打印
        System.out.println(array[0]);
        System.out.println(array[1]);
        System.out.println(array[2]);
        System.out.println(array[3]);
        System.out.println(array[4]);
        //使用循环,次数其实就是数组的长度
        for(int i = 0;i < 5;i++){
            System.out.println(array[i]);
        }
        //数组长度不确定时
        //数组名称.fori:可自动生成。 eg.array.fori
        for (int i = 0; i < array.length; i++) {
            System.out.println(array[i]);
        }
    }
}

八、求出数组的最值

package ln.javatest.day04.Demo05;
//求数组中的最大值

public class Demo05ArrayMax {
    public static void main(String[] args) {
        int[] array = {15,30,50,70,100};
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if(max < array[i]){
                max = array[i+1];
            }
        }
        System.out.println(max);
    }
}

九、数组元素反转

package ln.javatest.day04.Demo05;


public class Demo07ArrayReverse {
    public static void main(String[] args) {
        int[] array = {15,30,50,70,100,90};
        for (int j = 0; j < array.length; j++) {
            System.out.print(array[j]+",");
        }
        System.out.println();
        for (int min = 0,max = array.length-1; min < max;min++,max--) {
                int x;
                x = array[min];
                array[min] = array[max];
                array[max] = x;
        }
        for (int j = 0; j < array.length; j++) {
            System.out.print(array[j]+",");
        }

    }
}

十、数组作为方法参数

package ln.javatest.day04.Demo05;
//数组作为方法参数


public class Demo09ArrayParam {
    public static void main(String[] args) {
        int[] array = {10,20,30,40,50};
        arrayPrint(array);
    }
    public static void arrayPrint(int[] a){
        for (int i = 0; i < a.length; i++) {
            System.out.print(a[i]+",");
        }
    }
}

十一、数组作为方法的返回值

package ln.javatest.day04.Demo05;


public class Demo08ArrayReturn {
    public static void main(String[] args) {
       int[] array1 = calculate(3,3,3);
        System.out.println("总和:"+array1[0]);
        System.out.println("平均数:"+array1[1]);
    }
    public static  int[] calculate(int a, int b, int c){
        int sum = a + b + c ;
        int avg = sum / 3;
        int[] array = new int[2];
        array[0] = sum;
        array[1] = avg;
        return array;
    }
}

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zaji/5684281.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-12-17
下一篇2022-12-17

发表评论

登录后才能评论

评论列表(0条)

    保存