博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JavaSE学习总结第05天_Java语言基础1
阅读量:6367 次
发布时间:2019-06-23

本文共 13105 字,大约阅读时间需要 43 分钟。

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 

运行结果:

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

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 

运行结果:

请输入行数: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 }

转载于:https://www.cnblogs.com/hoop-superman/p/5495670.html

你可能感兴趣的文章
Java日志组件1---Jdk自带Logger(java.util.logging.Logger)
查看>>
php 与 ajax 获取123的案例
查看>>
PHP2014.5.14的总结:
查看>>
如何成为Python高手[转]
查看>>
读《人月神话》有感2
查看>>
安装并解决purcell/emacs.d网络问题
查看>>
趋势科技:微软已修复IE7的最新安全漏洞
查看>>
微软发布1月安全补丁 09年第一安全公告
查看>>
开发者最希望看到的C# 4.0新特性,徐汇区网站设计
查看>>
ISO C++委员会批准C++0x最终草案
查看>>
用好IE9浏览器必须要知道的九件事
查看>>
一起谈.NET技术,从原理来看Silverlight 4的架构
查看>>
艾伟:让.NET程序脱离.NET Framework框架运行
查看>>
艾伟_转载:Lucene.net多字段多索引目录搜索
查看>>
【机器学习】一般线性回归
查看>>
[FFT]luogu P1919 A*B Problem升级版
查看>>
linux -- 进程的查看、进程id的获取、进程的杀死
查看>>
20175313 张黎仙《获奖感想与Java阶段性学习总结》
查看>>
git linux 多工程部署及git默认端口更改
查看>>
python文件操作与字符编码
查看>>