charat越界返回什么_Java基本语法方法修饰符返回类型参数列表异常列表

方法[method name]

定义

方法[method]是类的成员之一,(因为在java中,方法不能单独定义,它必须在类之中)。

修饰符 返回类型 方法名()[throws 异常类型]{
 //方法体
}

方法名字:只要是一个合法的名字就可以,尽可能有意义。如:getName,nextInt...

调用

当被调用的方法使用static修饰符修饰时:

  • 通过类名来调用,也就是:ClassName.methodName();如:
double d = Math.sqrt(4.5);
String istr = Integer.toBinaryString(8);

当被调用的方法没有使用static修饰符修饰时:

  • 通过对象来调用,也就是:obj.methodName();如:
Scanner sc = new Scanner(System.in);
//此处的sc就是对象[变量]
int i = sc.nextInt();

:在Java中,方法之间是没有顺序的。

/* this 当前对象 same class context 上下文 一个静态方法不能直接调用非静态方法。所以要先创建对象。*/

重载

在一个类中,具有相同方法名称但不同参数的方法就构成了方法的重载。什么叫方法的重载?

  • 参数个数不同
  • 参数类型不同
  • 参数顺序不同 如:
public class Demo{
 public int add(int a,int b){return a+b;}
 public double add(double a,double b){return a+b;}
 public double add(int a,double b){return a+b;}
 public double add(double a,int b){return a+b;}
}

当调用重载方法时,JVM是根据参数列表来判断出准确的方法的。

递归[recursive]

递归就是指方法直接或间接地调用自己。利用递归可以用简单的程序来解决一些复杂的问题,比如:斐波那契数列的计算、汉诺塔问题、快排等问题。递归结构包括两个部分:

  1. 定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
  2. 递归体。解答:什么时候需要调用自身方法。

如:求一个整数的阶乘。5! = 5*4!; 4! = 4*3!; 3! = 3*2!; 2! = 2*1!; 1! = 1;使用数学公式就可以表达为:f(n) = n*f(n-1);所以,递归要有2个条件,也就是上面说的递归结构的两个部分。一要有规律,二要有退出时机。

:使用递归时方法的效率不是很高,它对栈的容量有较大的要求,因为每一次的调用都是利用栈来保存中间的计算结果,直到最后一次递归返回结果。如果栈不够的话,则JVM会抛出StackOverflowException

/* 求阶乘方法 */
public static long factorial(int n){
 if(n==1){//递归头
  return 1L;
 }else{//递归体
  return factorial(n-1);//n! = n * (n-1)!
 }
}

/* 所有用递归可以实现的方法都可以使用非递归实现。 */
/* 非递归求阶乘方法 */
public static long factorialLoop(int n){
 long result = 1;
 while(n > 1){
  result *= n * (n-1);
  n -= 2;
 }
 return result;
}

/* 求整数的二进制字符串形式 */
public String toBinary(int n){
 if(n==0){//退出条件
  return "";
 }
 return toBinary(n/2)+n%2;
}

/* 汉诺塔问题 */
public void move(char a, char b, char c, int n) {
 //
 if(n == 1){
  System.out.println(a+" -> "+c);
 }
 //调用自己
 move(a, c, b, n-1);
 System.out.println(a + " -> "+c);
 //再调用自己
 move(b, a, c, n-1);
}

修饰符[modifier]

访问控制修饰符piblic ,prootected,默认,private其他修饰符 static,abstract,final,syschronized,native,volatile... 注:修饰符之间是不没有顺序的。在java中,针对类的成员访问限权有四种,分别对应四种修饰符。

全局子类同包本身
publicYYYY
protectedNYYY
默认NNYY
privateNNNY

返回类型[return type]

1.所有合法的数据类型【包含基本数据类型和自定义对象】

表示这个方法有返回值,则在代码体中必须有return语句,并返回与表示这个方法有一致类型的。2.void表示这个方法没用返回值,则在代码体中可以不写return语句,如果一定要写,只能写空返回,如:return;

参数列表[parameters]

参数列表就是局部变量【Local variable】,它的语法与变量一样,只是不能初始化。如有多个参数,则每个参数之间使用逗号隔开。

如:

public int add(int a,int b){
 //...
}

当这个参数被调用[invoke]之时,它的参数才会有值【传递进来】。

所以,对于参数,有两种叫法:形参,是在方法的定义时所叫,它只有类型,暂时无值。实参,实在方法的调用时所叫,它既有类型又有值。

异常列表

异常定义

java异常[exception]定义:是一种“信号”传递机制 如:

int i = ...;
int j = ...;

if(i / j == ...) { //有可能会出现异常【除0异常】
 //...
}
//...

一段代码中,如果存在“有可能”出现异常的代码,而你的程序中又没有针对它做出“处理”,则一旦出现异常,程序就有可能会异常结束,从而达不到你的预期。

会有哪些异常?

java的异常可以分为:A. 运行时异常,也叫未检查异常;B. 非运行时异常,也叫已检查异常;

运行时异常,也叫未检查异常

所有直接或间接继承于RuntimeException异常的类都叫未检查异常,有:NullPointerException 空指针异常ClassCastException  类型转换异常ArrayIndexOutofBoundsException 下标越界异常 ... 以上这类异常都有一个共性:都是在JVM内部造成的,而不是由外部环境引起的。所以,这种异常可以说是由程序员编码粗心造成的。解决方案是:希望程序员编码谨慎,比如:对象使用之前做非空判断,....

非运行时异常,也叫已检查异常

它们直接或间接继承于Exception类,或者换句话说,只要不是RuntimeException的子类,就是已检查异常。如:IOException,SqlException,FileNotFoundException,NetException, ... 以上这些异常也有一些共性,就是它们都是由JVM外部环境造成的,所以,对于此类异常,光编码谨慎是不够的,还有做出处理。

注:在java中,对异常还有更高层次的抽象,叫可抛出的,由java.lang.Throwable来表示。

java.lang.Throwable
 \- java.lang.Error [错误] 无需处理它
 \- java.lang.Exception [异常] 重视
    \- RuntimeException 未检查异常
    \- 直接继承或间继承于 Exception 的类

如何处理异常?

有如下两种处理方式A. 消极处理方式,B. 积极处理方式。

消极处理方式

利用 关键字 throws 把异常抛出。如:

public void ma() throws InterruptedException {
    Scanner sc = new Scanner(System.in);
    System.out.print("please enter int>");
    //
    int i = sc.nextInt(); //这个方法有可能会抛出异常的。
    //但是,由于是未检查异常,所以,可以不用处理。
    
    //...
    Thread.sleep(1000); //这个方法也是有可能会抛出异常的.
    //这个异常是已检查异常,所以,必需要做出处理
    //...
}

积极处理方式

利用 try catch finally 语句块来处理这个语句块有多种不同的变种。如:

try {
    //有可能出现异常的代码
    ...
} catch(异常类型 e) {
    //...做日志,或者可以恢复...
} catch (异常类型 e) {
    //...
}

还有:

try {
    //有可能出现异常的代码
    ...

} catch(异常类型 e) {
    //...做日志,或者可以恢复...
} finally {
    //... 一般做释放资源
}
//....

注:不管try块中的代码是否出现了异常,finally块总会执行,除非在try块中执行了 System.exit(1) //退出JVM 进程

还有:

try {
    //....
    ...
} finally {
    //...一般做释放资源
}

自定义异常类

自定义异常类一般是自定义已检查异常。只需要定义一个类继承 java.lang.Exception 类即可,并且重写父类的构造方法。

如:

public class BalanceNotEnoughException extends Exception {
    public BalanceNotEnoughException() { super(); }

    public BalanceNotEnoughException(String msg) { super(msg); }

    public BalanceNotEnoughException(Throwable cause) { super(cause); }

    public BalanceNotEnoughException(String msg,Throable cause){
        super(msg,cause);
    }
}

结束语

欢迎关注本号,获取更多Java知识。

6683306974e7296a35202249df23f3ef.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245736.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

打包指令_Linux系统常用指令总结

来源 | CSDN 博客作者 | 不撸代码闲得慌,责编 | Carol出品 | CSDN云计算(ID:CSDNcloud)系统的运行级别0:关机1:单用户模式(可以找回丢失的密码)2:多用户状态没有网络服务3:多用户状态有网络服务4&#xff1…

cmd管道无法接收特定程序返回值_渗透不会反弹shell?来教你写一个cmd的shell

渗透不会反弹shell?来教你写一个cmd的shell包含的库:#include #include #include #include #include #pragma comment(lib, "Ws2_32.lib")#define DEFAULT_BUFLEN 1024winsock2和ws2tcpip两个库文件是用来初始化网络套接字的。windows用来初始…

有类似split的命令吗_5分钟学linux命令之split

情景介绍平时工作中,我习惯使用rz从本地上传文件到服务器,sz从服务器下载文件到本地,但对传输文件大小有限制,例如排查线上jvm的问题,需要生成了dump文件,可能有10G大,超过了限制,怎…

乐观锁的颗粒度_MySql数据库锁机制详解

概述数据库锁定机制简单的来说,就是数据库为了保证数据的一致性与完整性,而使各种共享资源在被并发访问时变得有序所设计的一种规则。对于任何一种数据库来说都需要有相应的锁机制,所以MySQL也不能例外。MySQL数据库根据锁锁定数据的颗粒度可…

云溪怎么导入dxf_dwg怎么转换成dxf文件?超详细图文教程分享

在CAD相关的工作中,我们经常遇到这种问题,需要把DWG格式的CAD图纸转换成DXF格式。那么,我们应该怎么做呢?接下来为你介绍这一个方法,非常方便快速哦。准备电脑风云CAD转换器具体步骤:在桌面上新建文件夹,将…

特斯拉是l3还是l2_比特斯拉还“高一级”,长安的“L3级自动驾驶”到底什么来头?...

3月5日,长安发布了旗下全新轿跑SUV——UNI-T,新车一经亮相,便凭借极具科幻的造型,以及越级的动力性能吸粉无数。而在大家意犹未尽之时,长安又在3月10日,通过UNI-T发布了“L3级自动驾驶”量产体验&#xff0…

mysql5.7.17配置_mysql-5.7.17-winx64的安装配置

第一步:下载mysql-5.7.17-winx64解压版本:http://dev.mysql.com/downloads/mysql/第二步:解压到安装目录,如:C:\myprogram\mysql-5.7.17-winx64第三步:设置环境变量操作如下:1)右键单击我的电脑…

openstack实例控制台显示响应时间过长_监控OpenStack的技巧

如果你以前曾在云平台上工作过,你一定熟悉这些系统的分布式和解耦性质。解耦的分布式系统依赖于微服务来执行特定的任务,每个微服务都会暴露自己的REST(表示状态转移)API。这些微服务通常以诸如RabbitMQ或QPID等消息中间件的形式通过轻量级消息层相互通信…

java8 创建list方式_Java 8 创建 Stream 的 10 种方式,我保证你受益无穷!

今天来分享下在 Java 8 中创建 Stream 的 10 种方式,我就整理了 10 种,其实还有更多,仅供大家参考学习下。 1、Stream.of 可变参数 Stream<String> stream1 = Stream.of("A", "B", "C"); System.out.println("stream1:" + st…

js map满足条件跳出循环_js.es5 map循环一大坑:循环遍历竟然出现逗号!

一、mapmap大法好作为当今程序界最好用的循环方法之一map, 在我的项目里基本替代了for循环map循环常用的一些方法/********* ES6 **********///一行代码可以省略returnarray.map( item > console.log(item))>array.map( item > {return console.log(item)})//多行代码…

micropython按键控制流水灯_【micro:bit Micropython】The LED Display(1)控制像素点

使用DFrobot研发的micropython编程软件uPyCraft&#xff0c;下载固件(Firmware)和下载程序都非常方便。可以在DFrobot论坛中进行下载。uPyCraft软件运行界面官网中的micro:bit Micropython API介绍得非常详细&#xff0c;为开发人员提供了详细的文字说明和参照。micro:bit Micr…

python中exp_python中的exp是什么

Python exp() 函数描述exp() 函数返回 x 的指数&#xff0c;。语法import mathmath.exp(x)注意&#xff1a;exp() 是不能直接访问的&#xff0c;需导入 math 模块&#xff0c;通过静态对象调用该方法。参数x -- 数值表达式。返回值返回 x 的指数&#xff0c;。实例# -*- coding…

python干货_python 基础干货 02

list 与 tuplelist 类似 数组tuple 跟 list 一样, 只是一旦定义, 里边的内容不可以改变.这样, 上边的内容就不可以改变了."可变的" tuple, 不是说 tuple 是不可以改变的么?想内存dict 与 setdict 是 python内置字典, 其他语言中称为 map, 使用键-值(key-value)存储&…

mysql安装目录问题_Windows下MySQL的安装目录问题

今天发现一个MySQL的问题&#xff0c;当把MySQL的文件目录安放在t字母打头的目录下时&#xff0c;比如d:/test目录&#xff0c;mysql服务就起不来了&#xff0c;报告找不到文件:D:/test/mysql>bin/mysqld-nt.exe --console090811 10:09:55 [ERROR] Cant find messagefile D:…

大学考试分数越高学分越多吗_大学的绩点和学分有什么用?影响学生毕业吗

原标题&#xff1a;大学的绩点和学分有什么用&#xff1f;影响学生毕业吗网友一&#xff1a;读大学也要关心成绩&#xff0c;绩点和学分是两个重要指标&#xff0c;到底是什么&#xff0c;怎么计算&#xff1f;有什么用处&#xff1f;为什么很重要&#xff1f;面试官最看重哪些…

pandas输出到excel_python读写excel等数据文件方法汇总

python处理数据文件第一步是要读取数据&#xff0c;文件类型主要包括文本文件&#xff08;csv、txt等&#xff09;、excel文件、数据库文件、api等。下面整理下python有哪些方式可以读取数据文件。1. python内置方法&#xff08;read、readline、readlines&#xff09;read()&a…

dijkstra算法_Python实现图的经典DFS、BFS、Dijkstra、Floyd、Prim、Kruskal算法

讲在前面的话&#xff0c;图的算法太多&#xff0c;理论知识肯定一篇文章讲不完&#xff0c;关于理论知识大家可以参考教材Sedgewick的《算法》或reference的链接,本文主要还是想在一篇文章中记录六种算法的Python代码。同样想吐槽一下&#xff0c;虽然网上博客很多&#xff0c…

深度学习试题_高中生物:今年高考试题3点显著变化及5个备考建议!不看准吃亏...

新课标下的新高考即将开启&#xff0c;最后一届旧高考模式在不同寻常的2020年七月份已圆满结束。今年全国Ⅰ卷理综生物试题有几个明显变化。1.内容、范围不变&#xff0c;考查理解能力和实践能力加强作为过渡期的高考&#xff0c;全国高考Ⅰ卷理综生物试题题型结构保持不变&…

电脑工具栏怎么调整到下面_雷电模拟器4.0怎么玩召唤与合成 一键下载轻松游玩 - 工具软件...

召唤与合成是一款既不是卡牌&#xff0c;也不是消除&#xff0c;也不算策略的高烧脑解谜手游&#xff0c;很多玩家想要利用雷电模拟器来在电脑上运行手游&#xff0c;却不知道怎么操作&#xff0c;下面就来教教大家如何在雷电模拟器上玩召唤与合成。1、首先要下载游戏&#xff…

ESP8266网络相框采用TFT_eSPI库TJpg_Decoder库mixly库UDP库实现图片传送

用ESP8266和TFT_ESPI模块来显示图片数据。具体来说&#xff0c;我们将使用ILI9431显示器作为显示设备&#xff0c;并通过UDP协议将图片数据从发送端传输到ESP8266。最后&#xff0c;我们将解析这些数据并在TFT屏幕上显示出来。在这个过程中&#xff0c;我们将面临一些编程挑战&…