JavaSe总结-05--Java语言基础(1)

来源:互联网 发布:淘宝lol限定皮肤 编辑:程序博客网 时间:2024/05/22 04:32

05.01 方法概述和格式说明
05.02 方法的定义求和案例
05.03 方法的调用有明确返回值的方法调用
05.04 方法的调用图解
05.05 方法的练习1获取两个数中的较大值
05.06 方法的练习2比较两个数是否相等
05.07 方法的练习3获取三个数中的最大值
05.08 方法的注意事项
05.09 方法的调用void类型方法的定义和调用
05.10 方法的练习4根据行数和列数输出星形
05.11 方法的练习5根据键盘录入输出对应的乘法表
05.12 方法重载概述和基本使用
05.13 方法重载练习比较数据是否相等
05.14 数组概述和定义格式说明
05.15 数组的初始化动态初始化
05.16 Java中的内存分配以及栈和堆的区别
05.17 数组的内存图解1一个数组
05.18 数组的内存图解2二个数组
05.19 数组的内存图解3三个数组
05.20 数组的初始化静态初始化及内存图
05.21 数组操作的两个常见小问题越界和空指针
05.22 数组的操作1遍历
05.23 数组的操作2获取最值
05.24 数组的操作3逆序
05.25 数组的操作4查表法
05.26 数组的操作5基本查找

05.01 方法概述和格式说明

    简单的说:方法就是完成特定功能的代码块,在很多语言里面都有函数的定义,函数在Java中被称为方法

    格式:

        修饰符 返回值 类型 方法名(参数类型 参数名1,参数类型 参数名2...){

           函数体;

           return 返回值;

        }

    方法格式解释:

    修饰符:后面会详细介绍。目前public static

    返回值类型:用于限定返回值的数据类型

    方法名:一个名称,方便我们调用方法

    参数类型:限定调用方法时传入参数的数据类型

    参数名:是一个变量,接收调用方法时传入的参数

    方法体:完成功能的代码

    return:结束方法以及返回方法指定类型的值

    返回值:程序被return带回的结果,返回给调用者

05.02 方法的定义求和案例

    根据两个明确来写一个方法

    1.返回值类型,明确功能结果的数据类型

    2.参数列表,明确有几个参数,以及参数的类型

    例:求两个数据之和

    1 public static int add(int i,int j)    2 {    3     return i+j;    4 }

05.03 方法的调用有明确返回值的方法调用

    有明确返回值的方法调用:

    1). 单独调用,没有意义;  例:add(2,3);

    2). 输出调用,有意义,但是不够好,因为不一定要把结果输出; 例:System.out.println(result);

    3). 赋值调用,推荐方式

       例: int result = add(2,3);

           System.out.println(result);

05.04 方法的调用图解

05.05 方法的练习1获取两个数中的较大值

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         Scanner sc = new Scanner(System.in); 7         System.out.println("请输入第1个数:"); 8         int num1 = sc.nextInt(); 9         System.out.println("请输入第2个数:");10         int num2 = sc.nextInt();11         int max = getMax(num1 , num2);12         System.out.println("较大的数是:"+max);13     }14     //返回值类型:int15     //参数列表:int i,int j16     public static int getMax(int i,int j)17     {18         return (i > j)? i : j;19     }20 }

     运行结果:

请输入第1个数:43请输入第2个数:56较大的数是:56

05.06 方法的练习2比较两个数是否相等

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         Scanner sc = new Scanner(System.in); 7         System.out.println("请输入第1个数:"); 8         int num1 = sc.nextInt(); 9         System.out.println("请输入第2个数:");10         int num2 = sc.nextInt();11         boolean flag = compare(num1 , num2);12         System.out.println("比较结果:"+flag);13     }14     //返回值类型:boolean15     //参数列表:int i,int j16     public static boolean compare(int i,int j)17     {18         return i == j;19     }20 }

    运行结果:

请输入第1个数:34请输入第2个数:65比较结果:false

05.07 方法的练习3获取三个数中的最大值

键盘录入三个数据,返回三个数中的最大值

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         Scanner sc = new Scanner(System.in); 7         System.out.println("请输入第1个数:"); 8         int num1 = sc.nextInt(); 9         System.out.println("请输入第2个数:");10         int num2 = sc.nextInt();11         System.out.println("请输入第3个数:");12         int num3 = sc.nextInt();13         int max = getMax(num1 , num2 ,num3);14         System.out.println("最大的数是:"+max);15     }16     //返回值类型:int17     //参数列表:int a,int b,int c18     public static int getMax(int a,int b,int c)19     {20         int temp = (a > b)?a : b;21         int max = (temp > c)?temp : c;22         return max;23     }24 }

运行结果:

请输入第1个数:23请输入第2个数:54请输入第3个数:21最大的数是:54

05.08 方法的注意事项

    1.方法不调用不执行

    2.方法与方法之间是平级关系,不能嵌套定义

    3.方法定义的时候参数之间用逗号隔开

    4.方法调用的时候不用再传递数据类型

    5.如果方法有明确的返回值,一定要有return返回一个值

05.09 方法的调用void类型方法的定义和调用

    没有明确返回值的函数调用:其实就是void类型方法的调用,只能单独调用

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         print(3,4); 6     } 7     //返回值类型:没有明确的返回值,用void 8     //参数列表:int m,int n 9     public static void print(int m,int n)10     {11         for(int i = 0;i < m;i++)12         {13             for(int j = 0;j <n;j++)14             {15                 System.out.print("* ");16             }17             System.out.println();18         }19     }20 }

    运行结果:

* * * ** * * ** * * *

05.10 方法的练习4根据行数和列数输出星形

键盘录入行数和列数,输出对应的星形

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         Scanner sc = new Scanner(System.in); 7         System.out.println("请输入行数:"); 8         int row = sc.nextInt(); 9         System.out.println("请输入列数:");10         int col = sc.nextInt();11         print(row,col);12     }13     //返回值类型:void14     //参数列表:int m,int n15     public static void print(int m,int n)16     {17         for(int i = 0;i < m;i++)18         {19             for(int j = 0;j <n;j++)20             {21                 System.out.print("* ");22             }23             System.out.println();24         }25     }26 }

运行结果:

请输入行数:4请输入列数:5* * * * ** * * * ** * * * ** * * * *

05.11 方法的练习5根据键盘录入输出对应的乘法表

    键盘录入一个数据n(1<=n<=9),输出对应的nn乘法表

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         Scanner sc = new Scanner(System.in); 7         System.out.println("请输入一个数(1~9):"); 8         int num = sc.nextInt(); 9         print(num);10     }11     //返回值类型:void12     //参数列表:int m13     public static void print(int m)14     {15         for(int i = 1;i <= m;i++)16         {17             for(int j = 1;j <= i;j++)18             {19                 System.out.print(j+"*"+i+"="+(i*j)+"\t");20             }21             System.out.println();22         }23     }24 }

运行结果:

请输入一个数(1~9):31*1=11*2=2   2*2=41*3=3   2*3=6   3*3=9

05.12 方法重载概述和基本使用

    方法重载概述:在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。

    方法重载特点:与返回值类型无关,只看方法名和参数列表,在调用时,虚拟机通过参数列表的不同来区分同名方法

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int result1 = add(2,3); 6         System.out.println("result1 = "+result1); 7         int result2 = add(2,3,4); 8         System.out.println("result2 = "+result2); 9     }10     //求2个数的和11     public static int add(int a,int b)12     {13         return a + b;14     }15     //求3个数的和16     public static int add(int a,int b,int c)17     {18         return a + b + c;19     }20 }

    运行结果:

result1 = 5result2 = 9

05.13 方法重载练习比较数据是否相等

    比较两个数据是否相等

    参数类型分别为两个byte类型,两个short类型,两个int类型,两个long类型,并在main方法中进行测试

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         //测试byte 6         byte b1 = 2; 7         byte b2 = 3; 8         System.out.println("byte:"+compare(b1,b2)); 9         10         //测试short11         short s1 = 5;12         short s2 = 5;13         System.out.println("short:"+compare(s1,s2));14 15         //测试int16         int i1 = 6;17         int i2 = 7;18         System.out.println("int:"+compare(i1,i2));19 20         //测试long21         long l1 = 6788;22         int l2 = 6788;23         System.out.println("long:"+compare(l1,l2));24     }25     //byte类型26     public static boolean compare(byte a,byte b) 27     {28         return a == b;29     }30     31     //short类型32     public static boolean compare(short a,short b) 33     {34         return a == b;35     }36     37     //int类型38     public static boolean compare(int a,int b) 39     {40         return a == b;41     }42     43     //long类型44     public static boolean compare(long a,long b) 45     {46         return a == b;47     }48 }

05.14 数组概述和定义格式说明

    数组概念:

        1.数组是存储同一种数据类型多个元素的集合,也可以看成是一个容器。

        2.数组既可以存储基本数据类型,也可以存储引用数据类型。

    数组的定义格式:

        格式1:数据类型[] 数组名; 例:int[] arr;

        格式2:数据类型数组名[]; 例:int arr[];

        注意:这两种定义做完了,数组中的元素是没有值的

05.15 数组的初始化动态初始化

    数组初始化概述:Java中的数组必须先初始化,然后才能使用。

    初始化:就是为数组中的数组元素分配内存空间,并为每个数组元素赋值。

    数组的初始化方式:

        动态初始化:初始化时只指定数组长度,由系统为数组分配初始值。

            格式:数据类型[] 数组名 = new 数据类型[数组长度];数组长度其实就是数组中元素的个数。例:int[] arr = new int[3];

              解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值。

        静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    数组中的每个元素都是有编号的,编号从0开始到数组的长度减1,用数组名与编号的配合就可以获取数组中指定编号的元素,编号的专业名称叫索引,

    格式:数组名[索引]

05.16 Java中的内存分配以及栈和堆的区别

    Java程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域都有特定的处理数据方式和内存管理方式。

    1.栈:存储局部变量

    2.堆:存储new出来的东西

    3.方法区:(面向对象)

    4.本地方法区:(和系统相关)

    5.寄存器:(给CPU使用)

   局部变量:方法定义中或者方法声明上的所有变量,使用完毕,立即消失

    栈内存:存储的都是局部变量,局部变量就是定义在方法中的变量,局部变量所属的作用域一旦结束,该变量就自动释放

    堆内存:存储的是数组和对象(其实数组就是对象),凡是new建立的对象都在堆中

    堆内存特点:

        1.每一个实体都有首地址值

        2.堆内存中的每一个变量都有默认初始化值,根据数据类型的不同而不同

          byte、short、int、long默认为0

          float、double默认为0.0或0.0f

          boolean默认为false

          char默认为'\u0000'

          引用类型默认为null

        3.使用完毕后,会被垃圾回收器空闲的时候回收

05.17 数组的内存图解1一个数组

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = new int[3]; 6  7         //输出数组名称 8         System.out.println(arr); 9         10         //输出数组元素值11         System.out.println(arr[0]);12         System.out.println(arr[1]);13         System.out.println(arr[2]);14 15         //给数组元素赋值16         arr[0] = 100;17         arr[2] = 200;18 19         //输出数组名称20         System.out.println(arr);21         22         //输出数组元素值23         System.out.println(arr[0]);24         System.out.println(arr[1]);25         System.out.println(arr[2]);26     }27

运行结果:

[I@1175422 ( [表示数组实体 I表示Int型 1175422表示十六进制哈希值 )000[I@11754221000200

图解:

05.18 数组的内存图解2二个数组

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr1 = new int[2]; 6         int[] arr2 = new int[3]; 7  8         arr1[1] = 10; 9         arr2[0] = 30;10         arr2[1] = 20;11 12         System.out.println(arr1);13         System.out.println(arr1[0]);14         System.out.println(arr1[1]);15 16         System.out.println(arr2);17         System.out.println(arr2[0]);18         System.out.println(arr2[1]);19         System.out.println(arr2[2]);20     }21 }

运行结果:

[I@1175422010[I@949f6930200

    图解:

05.19 数组的内存图解3三个数组

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr1 = new int[3]; 6         arr1[0] = 10; 7         arr1[1] = 20; 8         arr1[2] = 30; 9 10         int[] arr2 = new int[3];11         arr2[0] = 50;12         arr2[1] = 60;13         arr2[2] = 70;14 15         int[] arr3 = arr1;16         arr3[0] = 100;17         arr3[1] = 200;18 19         System.out.println(arr1);20         System.out.println(arr1[0]);21         System.out.println(arr1[1]);22         System.out.println(arr1[2]);23 24         System.out.println(arr2);25         System.out.println(arr2[0]);26         System.out.println(arr2[1]);27         System.out.println(arr2[2]);28     }29 }

运行结果:

[I@117542210020030[I@949f69506070

    图解:

05.20 数组的初始化静态初始化及内存图

    静态初始化:初始化时指定每个数组元素的初始值,由系统决定数组长度。

    格式:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};  例:int[] arr = new int[]{1,2,3};

    解释:定义了一个int类型的数组,这个数组中可以存放3个int类型的值,并且值分别是1,2,3。

    简化写法:int[] arr = {1,2,3};

    注意:不能同时进行动态初始化和静态初始化

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = {1,2,3}; 6         System.out.println(arr); 7         System.out.println(arr[0]); 8         System.out.println(arr[1]); 9         System.out.println(arr[2]);10     }11 }

运行结果:

[I@1175422123

图解:

 

    

05.21 数组操作的两个常见小问题越界和空指针

 05.22 数组的操作1遍历

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = {12,32,11,5,23}; 6         System.out.print("["); 7         //arr.length返回数组的长度 8         for(int i = 0;i < arr.length;i++) 9         {10             if(i == arr.length-1)11                 System.out.println(arr[i]+"]");12             else13                 System.out.print(arr[i]+",");14         }15     }16 }

运行结果:

[12,32,11,5,23]

05.23 数组的操作2获取最值

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = {12,32,11,5,23,56,15,27}; 6         //假设第1个数是最大的 7         int max = arr[0]; 8         //从第2个数开始遍历,依次与max比较 9         for(int i = 1;i < arr.length;i++)10         {11             if(arr[i] > max)12                 max = arr[i];13         }14         System.out.println("最大的数是:"+max);15     }16 }

运行结果:

最大的数是:56

05.24 数组的操作3逆序

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = {12,3,1,35,23}; 6         System.out.print("逆序前:"); 7         print(arr); 8         reverse2(arr); 9         System.out.print("逆序后:");10         print(arr);11     }12     //方法113     public static void reverse1(int[] arr)14     {15         for(int i = 0;i < arr.length / 2;i++)16         {17             int temp = arr[i];18             arr[i] = arr[arr.length-1-i];19             arr[arr.length-1-i] = temp;20         }21     }22     //方法223     public static void reverse2(int[] arr)24     {25         for(int start = 0,end = arr.length - 1;start <= end;start++,end--)26         {27             int temp = arr[start];28             arr[start] = arr[end];29             arr[end] = temp;30         }31     }32     //遍历数组的方法33     public static void print(int[] arr)34     {35         System.out.print("[");36         for(int i = 0;i < arr.length;i++)37         {38             if(i == arr.length-1)39                 System.out.println(arr[i]+"]");40             else41                 System.out.print(arr[i]+",");42         }43     }44 }

运行结果:

逆序前:[12,3,1,35,23]逆序后:[23,35,1,3,12]

05.25 数组的操作4查表法

数组查表法(根据键盘录入索引,查找对应星期)

 1 import java.util.Scanner; 2 class Demo 3 { 4     public static void main(String[] args) 5     { 6         //定义一个字符串数组 7         String[] strArray = {"星期一","星期二","星期三","星期四","星期五","星期六","星期日"}; 8         Scanner sc = new Scanner(System.in); 9         System.out.println("请输入一个数(1~7):");10         int index = sc.nextInt();11         if(index > 7 || index < 1)12             System.out.println("数据输入错误");13         else14             System.out.println(index+"对应"+strArray[index-1]);15     }16 }

运行结果:

请输入一个数(1~7):11对应星期一

05.26 数组的操作5基本查找

数组元素查找(查找指定元素第一次在数组中出现的索引)

 1 class Demo 2 { 3     public static void main(String[] args) 4     { 5         int[] arr = {23,12,26,73,14,27}; 6         int index = getIndex(arr,14); 7         if(index == -1) 8             System.out.println("没有找到该数"); 9         else10             System.out.println("找到该数,在第"+index+"位");11     }12     //返回值类型:int13     //参数列表:int[] arr,int key14     public static int getIndex(int[] arr,int key)15     {16         for(int i = 0;i < arr.length;i++)17         {18             if(arr[i] == key)19                 return i;20         }21         //没有找到返回-122         return -1;23     }24 }

运行结果:

找到该数,在第4位
0 0