05.01 方法概述和格式说明

简单的说:方法就是完成特定功能的代码块

在很多语言里面都有函数的定义,函数在Java中被称为方法

格式:

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

{

   函数体;

   return 返回值;

}

 

方法格式解释:

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

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

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

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

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

方法体:完成功能的代码

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

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

05.02 方法的定义求和案例

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

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

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

例:求两个数据之和

 public static int add(int i,int j)
{
return i+j;
}

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获取两个数中的较大值

键盘录入两个数据,返回两个数中的较大值

 import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1个数:");
int num1 = sc.nextInt();
System.out.println("请输入第2个数:");
int num2 = sc.nextInt();
int max = getMax(num1 , num2);
System.out.println("较大的数是:"+max);
}
//返回值类型:int
//参数列表:int i,int j
public static int getMax(int i,int j)
{
return (i > j)? i : j;
}
}

运行结果:

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

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

键盘录入两个数据,比较两个数是否相等

 import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1个数:");
int num1 = sc.nextInt();
System.out.println("请输入第2个数:");
int num2 = sc.nextInt();
boolean flag = compare(num1 , num2);
System.out.println("比较结果:"+flag);
}
//返回值类型:boolean
//参数列表:int i,int j
public static boolean compare(int i,int j)
{
return i == j;
}
}

运行结果:

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

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

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

 import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入第1个数:");
int num1 = sc.nextInt();
System.out.println("请输入第2个数:");
int num2 = sc.nextInt();
System.out.println("请输入第3个数:");
int num3 = sc.nextInt();
int max = getMax(num1 , num2 ,num3);
System.out.println("最大的数是:"+max);
}
//返回值类型:int
//参数列表:int a,int b,int c
public static int getMax(int a,int b,int c)
{
int temp = (a > b)?a : b;
int max = (temp > c)?temp : c;
return max;
}
}

运行结果:

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

05.08 方法的注意事项

1.方法不调用不执行

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

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

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

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

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

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

例:

 class Demo
{
public static void main(String[] args)
{
print(3,4);
}
//返回值类型:没有明确的返回值,用void
//参数列表:int m,int n
public static void print(int m,int n)
{
for(int i = 0;i < m;i++)
{
for(int j = 0;j <n;j++)
{
System.out.print("* ");
}
System.out.println();
}
}
}

运行结果:

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

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

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

 import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入行数:");
int row = sc.nextInt();
System.out.println("请输入列数:");
int col = sc.nextInt();
print(row,col);
}
//返回值类型:void
//参数列表:int m,int n
public static void print(int m,int n)
{
for(int i = 0;i < m;i++)
{
for(int j = 0;j <n;j++)
{
System.out.print("* ");
}
System.out.println();
}
}
}

运行结果:

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

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

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

 import java.util.Scanner;
class Demo
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数(1~9):");
int num = sc.nextInt();
print(num);
}
//返回值类型:void
//参数列表:int m
public static void print(int m)
{
for(int i = 1;i <= m;i++)
{
for(int j = 1;j <= i;j++)
{
System.out.print(j+"*"+i+"="+(i*j)+"\t");
}
System.out.println();
}
}
}

运行结果:

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

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

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

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

例:

 class Demo
{
public static void main(String[] args)
{
int result1 = add(2,3);
System.out.println("result1 = "+result1);
int result2 = add(2,3,4);
System.out.println("result2 = "+result2);
}
//求2个数的和
public static int add(int a,int b)
{
return a + b;
}
//求3个数的和
public static int add(int a,int b,int c)
{
return a + b + c;
}
}

运行结果:

result1 = 5
result2 = 9

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

比较两个数据是否相等

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

 class Demo
{
public static void main(String[] args)
{
//测试byte
byte b1 = 2;
byte b2 = 3;
System.out.println("byte:"+compare(b1,b2)); //测试short
short s1 = 5;
short s2 = 5;
System.out.println("short:"+compare(s1,s2)); //测试int
int i1 = 6;
int i2 = 7;
System.out.println("int:"+compare(i1,i2)); //测试long
long l1 = 6788;
int l2 = 6788;
System.out.println("long:"+compare(l1,l2));
}
//byte类型
public static boolean compare(byte a,byte b)
{
return a == b;
} //short类型
public static boolean compare(short a,short b)
{
return a == b;
} //int类型
public static boolean compare(int a,int b)
{
return a == b;
} //long类型
public static boolean compare(long a,long b)
{
return a == b;
}
}

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一个数组

例:

 class Demo
{
public static void main(String[] args)
{
int[] arr = new int[3]; //输出数组名称
System.out.println(arr); //输出数组元素值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]); //给数组元素赋值
arr[0] = 100;
arr[2] = 200; //输出数组名称
System.out.println(arr); //输出数组元素值
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}

运行结果:

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

图解:

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

例:

 class Demo
{
public static void main(String[] args)
{
int[] arr1 = new int[2];
int[] arr2 = new int[3]; arr1[1] = 10;
arr2[0] = 30;
arr2[1] = 20; System.out.println(arr1);
System.out.println(arr1[0]);
System.out.println(arr1[1]); System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}

运行结果:

[I@1175422
0
10
[I@949f69
30
20
0

图解:

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

例:

 class Demo
{
public static void main(String[] args)
{
int[] arr1 = new int[3];
arr1[0] = 10;
arr1[1] = 20;
arr1[2] = 30; int[] arr2 = new int[3];
arr2[0] = 50;
arr2[1] = 60;
arr2[2] = 70; int[] arr3 = arr1;
arr3[0] = 100;
arr3[1] = 200; System.out.println(arr1);
System.out.println(arr1[0]);
System.out.println(arr1[1]);
System.out.println(arr1[2]); System.out.println(arr2);
System.out.println(arr2[0]);
System.out.println(arr2[1]);
System.out.println(arr2[2]);
}
}

运行结果:

[I@1175422
100
200
30
[I@949f69
50
60
70

图解:

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

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

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

例:int[] arr = new int[]{1,2,3};

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

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

例:

 class Demo
{
public static void main(String[] args)
{
int[] arr = {1,2,3};
System.out.println(arr);
System.out.println(arr[0]);
System.out.println(arr[1]);
System.out.println(arr[2]);
}
}

运行结果:

[I@1175422
1
2
3

图解:

 

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

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

 

05.22 数组的操作1遍历

数组遍历(依次输出数组中的每一个元素)

 class Demo
{
public static void main(String[] args)
{
int[] arr = {12,32,11,5,23};
System.out.print("[");
//arr.length返回数组的长度
for(int i = 0;i < arr.length;i++)
{
if(i == arr.length-1)
System.out.println(arr[i]+"]");
else
System.out.print(arr[i]+",");
}
}
}

运行结果:

[12,32,11,5,23]

05.23 数组的操作2获取最值

数组获取最值(获取数组中的最大值最小值)

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

运行结果:

最大的数是:56

05.24 数组的操作3逆序

数组元素逆序 (就是把元素对调)

 class Demo
{
public static void main(String[] args)
{
int[] arr = {12,3,1,35,23};
System.out.print("逆序前:");
print(arr);
reverse2(arr);
System.out.print("逆序后:");
print(arr);
}
//方法1
public static void reverse1(int[] arr)
{
for(int i = 0;i < arr.length / 2;i++)
{
int temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
}
//方法2
public static void reverse2(int[] arr)
{
for(int start = 0,end = arr.length - 1;start <= end;start++,end--)
{
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
//遍历数组的方法
public static void print(int[] arr)
{
System.out.print("[");
for(int i = 0;i < arr.length;i++)
{
if(i == arr.length-1)
System.out.println(arr[i]+"]");
else
System.out.print(arr[i]+",");
}
}
}

运行结果:

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

05.25 数组的操作4查表法

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

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

运行结果:

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

05.26 数组的操作5基本查找

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

 class Demo
{
public static void main(String[] args)
{
int[] arr = {23,12,26,73,14,27};
int index = getIndex(arr,14);
if(index == -1)
System.out.println("没有找到该数");
else
System.out.println("找到该数,在第"+index+"位");
}
//返回值类型:int
//参数列表:int[] arr,int key
public static int getIndex(int[] arr,int key)
{
for(int i = 0;i < arr.length;i++)
{
if(arr[i] == key)
return i;
}
//没有找到返回-1
return -1;
}
}

运行结果:

找到该数,在第4位

JavaSE学习总结第05天_Java语言基础1的更多相关文章

  1. JavaSE学习总结第06天_Java语言基础2 & 面向对象1

      06.01 二维数组概述和格式1的讲解 二维数组概述:二维数组其实就是一个元素为一维数组的数组 格式1:数据类型[][] 变量名 = new 数据类型[m][n]; m表示这个二维数组有多少个一维 ...

  2. JavaSE学习总结(二)——Java语言基础

    一.Java程序预览 Java的语法与C非常类似,这里先使用几个非常简单的程序以点带面来区分C语Java的区分再细讲每个知识点.该文仅针对有编程基础的朋友参考. 1.1.Hello World 创建j ...

  3. Java学习总结(二)----Java语言基础

    1.     Java语言基础 2.1 关键字 定义:被java语言赋予特殊含义的单词 特点:关键字中的字母都为小写 用于定义数据类型的关键字 class,interface,byte,short,i ...

  4. JavaSE学习总结第01天_Java概述

      01.01 计算机概述 计算机(Computer):全称电子计算机,俗称电脑. 是一种能够按照程序运行,自动.高速处理海量数据的现代化智能电子设备. 由硬件和软件所组成,没有安装任何软件的计算机称 ...

  5. JavaSE学习总结第02天_Java基础语法1

      02.01 关键字的概述和使用 关键字概述:被Java语言赋予特定含义的单词 关键字特点:组成关键字的字母全部小写 关键字注意事项:goto和const作为保留字存在,目前并不使用,类似Notep ...

  6. JavaSE学习总结第03天_Java基础语法2

      03.01 数据类型中补充的几个小问题 1:在定义Long或者Float类型变量的时候,要加L或者f.   整数默认是int类型,浮点数默认是double.   byte,short在定义的时候, ...

  7. JavaSE学习总结第04天_Java基础语法3

      04.01 选择结构switch语句的格式及其解释 switch语句的格式: switch(表达式) {    case 值1:语句体1;break;    case 值2:语句体2;break; ...

  8. JavaSE学习总结(三)——Java语言编程练习、格式化字符与常量

    一.变量.常量.字面量 package com.zhangguo.chapter2_3; /** * 1.银行利率为5%,问存款100美元5年的收益细节? * */ public class P1 { ...

  9. 04747_Java语言程序设计(一)_第1章_Java语言基础

    二进制0b开头 八进制0开头 十六进制0x开头 package com.jacky; public class Aserver { public static void main(String arg ...

随机推荐

  1. (iOS)关于GCD死锁的问题

    - (void)viewDidLoad { [super viewDidLoad]; dispatch_sync(dispatch_get_main_queue(), ^{NSLog("); ...

  2. Android SDK与API版本的对应关系

    看教程.开发Android程序等很多地方,需要设置Android SDK的版本,而其要我们写的却是API版本的数字, 为了方便查看 Android SDK与API版本的对应关系 我在SDK Manag ...

  3. Http请求 post get

    package com.sprucetec.tms.utils; import org.slf4j.Logger;import org.slf4j.LoggerFactory; import java ...

  4. linux select 网络模型

    io模型: 同步IO: 阻塞形式,非阻塞形式(轮询).信号驱动IO.IO复用(select, poll, epoll): 异步io:aio_read() 典型场景: 1.客户端处理多种IO------ ...

  5. linux 之进程间通信-------------InterProcess Communication

    进程间通信至少可以通过传送打开文件来实现,不同的进程通过一个或多个文件来传递信息,事实上,在很多应用系统里,都使用了这种方法.但一般说来,进程间 通信(IPC:InterProcess Communi ...

  6. 用JQUERY实现给当前页面导航一个CSS

    今天遇到一个问题 当我在导航中点击一个标签后 希望用户知道自己所在导航的位置 只需要根据点击的页面是否加载完成 给这个标签用JS 添加一个CCcurr的 也就是我们常说的current CLASS 代 ...

  7. ##DAY1 UI、frame、center、bounds、UIVIew

    ##DAY1 UI.frame.center.bounds.UIVIew #pragma mark ———————UI——————————— UI的本意是用户界面,是英文User和 Interface ...

  8. Spring 中拦截器与过滤器的区别

    spring 中拦截器 与servlet 的filter 有相似之处.比如二者都是aop 编程思想的体现都能实现权限检查,日志记录等. 不同之处 使用范围不同 Filter 是Servlet 规定的. ...

  9. ASP.NET MVC 中的 T4

    每次使用“添加视图”或“添加控制器”功能时,您都在 ASP.NET MVC 项目中使用 T4 模板.这些模板位于 Common7\IDE\ItemTemplates\CSharp\Web\MVC 2\ ...

  10. AMD模块化JS

    参考http://ourjs.com/detail/52ad26ff127c76320300001f Offcial Site http://requirejs.org/ 下载http://requi ...