Java小白进阶笔记(4)-流程控制语句
继续学习:
5.偏头痛杨的Java入门教学系列之流程控制语句篇
详细的去看原文,这里分割线中摘录一些我觉得对新手比较重要的概念(也容易混淆)。
方法的种类
1.实例方法
属于每个实例的方法,必须使用对象来调用,方法前不要加static修饰。
2.类方法
属于类的方法,必须加static修饰,使用类名调用(当然类方法也可以使用实例调用,但是不建议这么做),为什么要用类名来访问一些方法呢?因为不耗费内存,不用创建实例。
3.构造方法/构造器(Constructor)
构造方法是一个类创建对象的根本途径,如果一个类没有构造方法,这个类通常无法创建实例。
因此如果程序员忘记定义构造方法的话,Java编译器将会为该类提供一个默认构造方法(无参的构造方法),一旦程序员已经定义了构造方法,则系统不再提供默认的构造方法。(注意:如果程序员定义了一个有参构造,系统也不再提供默认的无参构造)当然,如果你也想使用无参数构造方法,就可以自己手动写一个。
构造方法的作用
- 通过new关键字来调用某个类的构造方法,即可创建这个类的实例。在创建一个对象(类实例化成对象)的时候,至少要调用一个构造方法。
- 构造方法的作用是完成对象的创建,即完成对象的实例化,在构造方法中一般可以对成员变量进行初始化
构造方法的特点
- 构造方法的名称必须与类同名
- 一个类可以有多个构造方法(参数列表不同)
- 构造方法没有返回类型,不能return
- 构造方法可以设置为private即在外部无法调用该类的构造方法(单例模式)
方法的重载(overload)
- 方法的重载就是在同一个类中允许同时存在一个以上同名的方法。
- 方法名称相同,方法的参数必须不同,参数个数不同,参数类型不同,方法的返回值类型可以相同,也可以不同。
类变量与实例变量
类变量
- 也叫静态变量
- 说明类的属性
- 类变量声明在类中,方法体之外,必须声明为static类型
- 类变量在创建类时被初始化
- 类的所有示例变量在调用该变量的时候共享一块内存空间,可以类名直接调用,也可拿对象调用(不推荐)
实例变量
- 说明类的一个实例的属性
- 实例变量定义在类中,方法体之外,不声明成static类型
- 实例变量在创建对象的时候被初始化
- 类所有实例调用该变量的时候都开辟一块新内存,只能拿对象调用实例变量。
局部变量
- 在方法内、代码块内、形参中定义的变量被称为局部变量
- 所有局部变量均在方法的栈内存中存储
- 方法、代码块结束后,变量就会自动销毁。
- 部变量的作用范围越小,它在内存里停留的时间就越短,程序运行性能就越好。因此能用代码块局部变量的地方,就不要使用方法局部变量
- 访问修饰符不能用于局部变量
作业
- 编写一个方法,需要传1个整型变量作为参数,方法中先把参数输出,再判断参数为偶数就返回true,非偶数返回false。在main方法中调用该方法3次,分别传入参数为3、4、5,并将方法的返回值输出。
答:
代码:
package test; import java.util.Scanner; public class Getodd { public static boolean judge(int tem) { if(tem%2==0) { return true; } else { return false; } } public static void main(String [] args) { Scanner sc=new Scanner(System.in); for(int i=1;i<=3;i++){ int tem=sc.nextInt(); boolean ans=judge(tem); System.out.println("the"+i+" 's ans: "+ans); } } }
输出:
3 the1 's ans: false 4 the2 's ans: true 5 the3 's ans: false
- 编写一个方法,需要传入2个整型变量作为参数,方法中返回数值较大的参数,在main方法中调用该方法几次,参数自定义,并将方法的返回值输出。
答:
代码:
package test; import java.util.Scanner; public class WhoIsMax { public static int judge(int a,int b) { if(a>b) { return a; } else { return b; } } public static void main(String[] args) { Scanner sc=new Scanner(System.in); for(int i=0;i<3;i++) { int a=sc.nextInt(); int b=sc.nextInt(); int ans=judge(a,b); System.out.println("the max between "+a+" and "+b+" is "+ans); } } }
输出:
2 3 the max between 2 and 3 is 3 5 8 the max between 5 and 8 is 8 99 22 the max between 99 and 22 is 99
- 编写一个方法,需要传入1个整型变量作为参数,方法中使用switch做判断,如果参数值为1则输出"星期一",如果参数值为2则输出"星期二",依此类推,如果参数值不在1-7的范围内则输出"参数错误",在main方法中调用该方法几次,参数自定义。
答:
代码:
package test; import java.util.Scanner; public class DateShow { public static void judge(int tem) { switch(tem) { case 1: System.out.println("Monday"); break; case 2: System.out.println("Tuesday"); break; case 3: System.out.println("Wednesday"); break; case 4: System.out.println("Thursday"); break; case 5: System.out.println("Friday"); break; case 6: System.out.println("Saturday"); break; case 7: System.out.println("Sunday"); break; default:System.out.println("Wrong input!"); } } public static void main (String [] args){ Scanner sc=new Scanner(System.in); for(int i=0;i<3;i++) { int tem=sc.nextInt(); judge(tem); } } }
输出:
3 Wednesday 5 Friday 9 Wrong input!
- 编写一个方法,打印出一个菱形(这道题比较难,不允许搜百度上的答案)。
* *** ***** ******* ***** *** *
友情提示:
- System.out.println();输出是带换行的
- System.out.print();输出是不带换行的
- 需要使用嵌套for循环
- 一个循环输出空格,一个循环输出星号;一个循环输出换行
答:
代码:
package test; import java.util.Scanner; public class DrawPic { public static void drawPic(int num) { int half=num/2+1; for(int i=0;i<half;i++) { for(int j=0;j<half-1-i;j++) { System.out.print(' '); } for(int k=0;k<2*i+1;k++) { System.out.print('*'); } System.out.println(); } for(int i=0;i<half-1;i++) { for(int j=0;j<i+1;j++) { System.out.print(' '); } for(int k=0;k<num-2*(i+1);k++) { System.out.print('*'); } System.out.println(); } } public static void main(String [] args) { Scanner sc=new Scanner(System.in); int tem = sc.nextInt(); drawPic(tem); } }
输出:
17 * *** ***** ******* ********* *********** ************* *************** ***************** *************** ************* *********** ********* ******* ***** *** *

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
4月20日云栖精选夜读:天猫国际首家线下店来了!阿里为什么要开跨境体验店?
开业前一天的天猫国际西湖银泰店 4月20日,位于杭州西湖银泰的天猫国际首家跨境门店正式开门迎客。至此,这一筹备了近一年的项目,终于尘埃落定。 据天猫国际跨境新零售项目负责人罗爽介绍,在前期选品阶段,天猫国际西湖银泰店就利用大数据,绘制了一张门店5公里范围内的消费热力图:主力消费群体为26-35岁的周边写字楼上班族,在酒水和化妆品类中,这群年轻人更喜欢消费葡萄酒和口红。 热点热议 天猫国际首家线下店来了!阿里为什么要开跨境体验店? 作者: 技术小能手 阿里巴巴全资收购知名CPU公司,铁了心做好“中国芯”! 作者:技术小能手 阿里云在欧洲掀起技术旋风 POLARDB数据库亮相数据库顶会ICDE 作者:阿里云头条 知识整理 SQL老司机:流量骤增骤减,可以这样设置告警 作者:云雷 除数字货币,区块链影响全球的八种方式 作者:雪花又一年 linux内存管理——mmap函数详解 作者:闪亮的蛤蟆 区块链应用 | 2018年爆发的区块链概念,究竟是什么? 作者:雪花又一年 【OSS 排查方案-7】ossimport 大数据量迁移方案总结 作者:张医博 美文回顾 科普 | 区块链概念大热的背后,真正...
- 下一篇
为什么 Node.js 启动后虚拟内存很大
问题来源 问题来源于cnode社区:node启动占用内存的问题。 自己本地跑了一下,乖乖不得了,启动一个 node,什么都不做。结果是这样子的:果然900+M。 我的电脑信息: $cat /proc/version Linux version 4.13.0-38-generic (buildd@lgw01-amd64-027) (gcc version 5.4.0 20160609 (Ubuntu 5.4.0-6ubuntu1~16.04.9)) #43~16.04.1-Ubuntu SMP Wed Mar 14 17:48:43 UTC 2018 $cat /proc/cpuinfo | grep processor processor : 0 processor : 1 processor : 2 processor
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Windows10,CentOS7,CentOS8安装Nodejs环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- CentOS8安装Docker,最新的服务器搭配容器使用
- 设置Eclipse缩进为4个空格,增强代码规范