讲师:王博
Id:10.8.159.99
第一阶段第二周
今日内容
- 方法(函数)
- Break和continue的关键字
- 数组
- 大量的方法和数组的练习题
- 方法(函数)
1.1为什么要使用方法
开发中会遇到很多重复的功能,循环已经满足不了我们的需求
会导致:
·代码臃肿
·阅读性差
·维护性极差
1.2其实咱们已经见过方法了
Public static void main (String [] args){}
Main 方法是java内置的方法(java自己封装好的,只需要调用就行了)它是主方法,也叫主函数,是程序的一个入口
Public static:
Void:返回值类型,void没有任何返回值的
Main:方法名,如果自己定义的话,能和main起名字一样吗?不能
需要自己起方法的名字
():是方法后面紧跟着的一个符号
String [] args:参数,形式参数
{}:方法体,大括号里面放的是功能代码
1.3无参数,无返回值的方法
比葫芦画瓢
语法格式
Public static void 方法名(){}
注意事项:
·方法的声明必须写在主函数外面
·方法的调用一定要放在主函数中
·方法名字();即可
·方法命名和变量命名一样
·方法是条狗,哪里需要哪里吼,方法不调用,不执行
package www.liujinghe.com;
public class Demo4 {
public static void main(String[] args) {
System.out.println("你好,世界");
//打印十次空间尽头
printKj();
System.out.println("晚上好");
//打印十次空间尽头
printKj();
}
public static void printKj(){
System.out.println("打印十次空间尽头");
for (int i = 0; i < 10; i++) {
System.out.println((i+1)+".空间尽头");
}
}
}
1.4有参数无返回值的方法
语法格式
Public static void (数据类型 参数名,数据类型 参数名...){}
package www.liujinghe.com;
public class Demo5 {
public static void main(String[] args) {
//3.2和3.4是实参,真实的参数
/**
* 把3.2赋值给了num1
* 把3.4赋值给了num2
*/
printSum(3.2,3.4);
//三个int类型的数据和
printSum1(4,5,4);
//两个字符串
printStr("你好","世界");
}
/**
* 打印两个double类型的数据的和
* num1和num2是形参,形式上的参数
* @param num1
* @param num2
*/
public static void printSum(double num1, double num2) {
System.out.println("两个数的和为:" + (num1 + num2));
}
//打印三个int类型的数据和
public static void printSum1(int a,int b,int c){
System.out.println("三个数的和为:"+(a+b+c));
}
//两个字符串
public static void printStr(String str1,String str2){
System.out.println(str1+str2);
}
}
1.5无参数有返回值的方法
语法格式
Public static 返回值数据类型 方法名(){
Return 返回值;
}
package www.liujinghe.com;
public class Demo6 {
public static void main(String[] args) {
int a = giveFive();
int c = a+7;
System.out.println(c);
geiveSix();//直接打印了6
String str = giveStr();
System.out.println(str);
}
/**
* 声明了一个有返回值无参数的方法
* @return
*/
public static int giveFive(){
return 9;
}
/**
* 无返回值无参数的方法
*/
public static void geiveSix(){
System.out.println(6);
}
/**
*有返回值无参数的方法
*/
public static String giveStr(){
return "空间尽头";
}
}
1.6有参数有返回值的方法
语法格式
Public static 数据类型 方法名(数据类型 形式参数,数据类型 形式参数...){
Return 返回值类型;
}
package www.liujinghe.com;
public class Demo7 {
public static void main(String[] args) {
int sum = sum(1,2);
System.out.println(sum);
}
//求两个int类型的和
public static int sum(int a,int b){
return a+b;
}
}
总结:
无参数无返回值的:public static void 方法名(){}
无参数有返回值的:public static 数据类型 方法名(){return}
有参数无返回值的:public static void 方法名(数据类型 形参){}
有参数有返回值的:public static 数据类型 方法名(数据类型 形参){return}
注意事项:
1.方法名字的命名
·见名知意
·方法在调用的时候是通过方法的名字来调用的,在main主函数中调用的
·严格使用小驼峰的命名方式
2形式参数(形参)和实际参数(实参)
·形式参数:只是形式而已,参数的名字可以随便
·实际参数:是真真切切的值
3关于返回值的方法
·使用关键字:return
·返回的时候再main主函数中需要接收,接收以后可以进行下一步的操作
2.break关键字
字面意思:终止
代码终止的效果
Switch-case跳出
针对于循环,跳出循环
3.continue关键字
字面意思:继续
代码中:结束本次循环,进入下一次循环
package www.liujinghe.com;
public class Demo9 {
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
/**
* i=0 0<10 true 0%5=0 true 打印代码,contince i++
* i=1 1<0 ture 1%5=0 false 打印1 i++
*/
if(i%5 == 0){
System.out.println("结束本次循环,进入下一次循环");
continue;//代码走到这个地方不再向下执行,回到for
}
System.out.println(i);
}
}
}
4方法的练习题
1封装一个方法,找出两个int类型数据中的最大值
2封装一个方法,找出两个float类型数据中的最小值
3封装一个方法,判断一个字符是否是大写字符
4封装一个方法,判断一个字符是否是数字字符
5封装一个方法,判断一个字符是否是英文字符
6封装一个方法,将一个整数倒序打印
7封装一个方法,计算一个数的立方
8封装一个方法,判断一个年份是否是闰年平年
9封装一个方法,判断一个数是否是整数还是负数
package www.liujinghe.com;
public class Demo10 {
public static void main(String[] args) {
System.out.println("1封装一个方法,找出两个int类型数据中的最大值");
int max = getMax(1, 3);
System.out.println(max);
System.out.println("2封装一个方法,找出两个float类型数据中的最小值");
float min = getMin(12.34f, 25.354f);
System.out.println(min);
System.out.println("3封装一个方法,判断一个字符是否是大写字符");
boolean f = isUpper('F');
System.out.println(f);
System.out.println("4封装一个方法,判断一个字符是否是数字字符");
boolean number = isNumber('9');
System.out.println(number);
System.out.println("封装一个方法,判断一个字符是否是英文字符");
boolean english = isEnglish('5');
System.out.println(english);
System.out.println("6封装一个方法,将一个整数倒序打印");
reverse(12345);
System.out.println("封装一个方法,计算一个数的立方");
int cube = cube(4);
System.out.println(cube);
System.out.println("封装一个方法,判断一个年份是否是闰年平年");
boolean year = isYear(2078);
System.out.println(year);
System.out.println("打印直角三角形");
printTri(50);
}
//1封装一个方法,找出两个int类型数据中的最大值
public static int getMax(int num1,int num2){
// if(num1>num2){
// return num1;
// }else {
// return num2;
// }
return num1>num2?num1:num2;
}
//2封装一个方法,找出两个float类型数据中的最小值
public static float getMin(float num1,float num2){
//return num1<num2?num1:num2;
if(num1<num2){
return num1;
}else{
return num2;
}
}
//3封装一个方法,判断一个字符是否是大写字符
public static boolean isUpper(char ch1){
// return ch1 >= 'A' && ch1 <= 'Z';
//ASCII码的表现形式来判断是否是大写的英文字符
return ch1 >= 65 && ch1 <= 90;
}
//4封装一个方法,判断一个字符是否是数字字符
public static boolean isNumber(char c){
//return c >='0' && c <= '9';
return c >= 48 && c <= 57;
}
//5封装一个方法,判断一个字符是否是英文字符
public static boolean isEnglish(char c){
return (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z');
}
//6封装一个方法,将一个整数倒序打印
public static void reverse(int num){//反转
while (num != 0){
System.out.print(num%10);
num = num/10;
}
}
//7封装一个方法,计算一个数的立方
public static int cube(int num){
return num*num*num;
}
//8封装一个方法,判断一个年份是否是闰年平年
public static boolean isYear(int year){
if(year % 400 ==0 || (year %4 ==0 && year % 100 != 0)){
return true;
}else{
return false;
}
}
//打印直角三角形
public static void printTri(int i){
for (int k = 1; k < i; k++) {
for (int z = 1; z < k; z++) {
System.out.print("*");
}
System.out.println();
}
}
}
5数组【重点】
5.1开发中为什么要有数组
如果开发中出现了大量的同一类型的数据的时候,如果按照变量命名的声明方式,显然会出现多个变量。数组就是声明一个变量名字,然后可以存多个数据的
5.2生活中的数组
图书馆:
图书的归纳就是数组的一种思想
会对书进行分类,进行编号
《java从入门到精通》,《mysql的详解》,《spring解密》,《springboot详解》
T-1234-0 T-1234-1 T-1234-2 T-1234-3
这个书架就是数组的一种思想
5.3java中如何定义数组
变量声明:
数据类型 变量名 = 初始化值
数组声明的语法格式:
第一种声明方式:声明的是一个空数组,容器
数据类型 [] 数组名 = new 数据类型[容量];
第二种声明方式:直接对数组进行赋值
数据类型 [] 数组名 = {值1,值2,值3....};
package www.liujinghe.com;
public class Demo13 {
public static void main(String[] args) {
//第一种数组的声明方式
char [] chs = new char[5];
chs[0] = '中';
chs[1] = '国';
chs[2] = '崛';
chs[3] = '起';
chs[4] = '!';
System.out.println(chs);//打印的不是内存地址,是值
int [] ints =new int[3];
ints[0] = 38;
ints[1] = 57;
ints[2] = 67;
System.out.println(ints);//打印的是内存地址
String [] strs = new String[3];
strs[0] = "你是";
strs[1] = "我是";
strs[2] = "他是";
System.out.println(strs);//除了char,其他的打印的都是内存地址
//第二种声明方式
boolean [] bools = {true,false,true,false,false};
String [] names = {"张三","李四","王二","麻子"};
}
}
5.4数组的使用
1声明 2赋值 3把数据取出来
package www.liujinghe.com;
public class Demo14 {
public static void main(String[] args) {
//这个doubles数组变量已经有值了
double [] doubles = {21.1,23.4,78.9};
System.out.println(doubles);//打印的是内存地址
System.out.println(doubles[0]);//通过索引把值取出来
System.out.println(doubles[1]);
System.out.println(doubles[2]);
// System.out.println(doubles[3]);
System.out.println(doubles.length);//数组的长度
}
}
5.5数组和循环不得不说的秘密
数组和循环是有关联的
如果碰到数组就尽可能的使用循环进行取数据(遍历)
取值一般借助于循环取值的
是因为数组的索引(下标)是有规律的
package www.liujinghe.com;
public class Demo15 {
public static void main(String[] args) {
int[] arr = {521, 4399, 1314, 520, 360, 12315, 110, 120, 119};
System.out.println(arr.length);//数组长度
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
String [] str ={"盖伦", "亚索", "提莫", "奥巴马"};
for (int i = 0; i < str.length; i++) {
System.out.println(str[i]);
}
}
}
5.6数组作为方法的参数
语法格式
Public static void main (String [] args){}
需求:给一个int类型数据的数组进行赋值
package www.liujinghe.com;
public class Demo16 {
public static void main(String[] args) {
//1声明一个空的数组
int [] arr = new int[10];
//2截止setIntArray给这个空数组进行赋值
setIntArray(arr);
//3arr就已经有值了
//4取值
System.out.println(arr[0]);
}
public static void setIntArray(int [] array){
//array是一个空的数组
//赋值
for (int i = 0; i < array.length; i++) {
array[i] = i+3;
}
}
}
作业:
1定义一个方法,找出数组中最大值的索引
2定义一个方法,找到数组中最小值的索引
3定义一个方法,找出指定数据的索引
扩展知识点
三目运算符:
三目运算符和if-else功能一模一样
语法格式
表达式1?变量1:变量2;
执行流程:判断表达式是否为true,如果表达式为true,就返回变量1,如果表达式为false,就返回变量2.