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. SeaJS 简单试用

    http://seajs.org/docs/#quick-start 感觉seajs的语法有点罗嗦... 它既有RequireJS的特点也有NodeJS引入模块的特点 例子是抄的官方的例子  在官方的 ...

  2. JAVA学习第一课(初识JAVA)

    PS:退ACM集训队了,自己也疯玩了两天,后天就开学了,就正式大二了,该收收心好好学习啦                                                         ...

  3. 基于Proxy思想的Android插件框架

    意义 研究插件框架的意义在于下面几点: 减小安装包的体积,通过网络选择性地进行插件下发 模块化升级.减小网络流量 静默升级,用户无感知情况下进行升级 解决低版本号机型方法数超限导致无法安装的问题 代码 ...

  4. 2.Freshman阶段学习内容的确定

    我刷知乎.在知乎上答题的程序员,不是很牛逼就是更牛逼,说起各种系统.各种系统的各种版本.各种语言.数据库.算法.IT届的各种圣战都有板有眼.信手拈来.头头是道,不得不服.这导致了一些非常严重的问题:我 ...

  5. 在mac系统安装Apache Tomcat的详细步骤(转载自himi的博客,修改了错误添加了图片)

    链接地址:http://blog.csdn.net/liuyuyefz/article/details/8072485 1. 2. 3. 4. 5. 对于Apache Tomcat 估计很多童鞋都会, ...

  6. BZOJ 2208: [Jsoi2010]连通数( DFS )

    n只有2000,直接DFS就可以过了... -------------------------------------------------------------------------- #in ...

  7. linux历史发展

    1.什么是开源? 开源就是软件和源代码都是公开的. 可以修改(完善作者的代码)和创建自己的软件. 2.免费软件不同于自由软件,虽然它是免费的,但他不公布源代码,共享软件与免费软件有点类似,其初起是不收 ...

  8. Nexus 5完全拆解

    Nexus 5,由LG制造,配备高通骁龙四核处理器,4.95英寸1080P显示屏,支持4G LTE,运行最新的Android 4.4 KitKat原生操作系统.国外著名拆解网站iFixit第一时间带来 ...

  9. Delphi 预编译指令

    <Delphi下深入Windows核心编程>(附录A Delphi编译指令说明)Delphi快速高小的编译器主要来自Object PASCAL的严谨,使用Delphi随时都在与编译器交流, ...

  10. C/C++ 基础教程

          自从做IOS后,就比较少用纯C++的方式写代码了,因为Obj-C的代码风格和C++的风格还是有一点区别的.怕自己忘记了C/C++的基础.整理了一些C/C++基础的网站,供大家学习C/C++ ...