接着前面的学习:

java学习笔记4--类与对象的基本概念(2)

java学习笔记3--类与对象的基本概念(1)

java学习笔记2--数据类型、数组

java学习笔记1--开发环境平台总结

本文地址:http://www.cnblogs.com/archimedes/p/java-study-note5.html,转载请注明源地址。

1、方法的控制流程

Java中的流程控制结构主要有三种:

顺序结构

选择结构

if语句(二路选择结构)、switch语句(多路选择结构)

循环结构

for语句、while语句、do-while语句

跑个程序:

输入一个年份,判断它是不是闰年。(闰年: 能被4整除但不能被100整除,或者能被400整除)
public class test
{
public static void main(String[ ] args) throws IOException {
int year;
boolean IsLeapYear;
System.out.println("Enter the year:");
BufferedReader in =new BufferedReader(new InputStreamReader(System.in));
year=(new Integer(in.readLine())).intValue();
IsLeapYear=((year%4==0 && year%100 != 0)||(year%400 == 0));
if (IsLeapYear) {
System.out.print(year);
System.out.println( "is a leap year");
} else {
System.out.print(year);
System.out.println( "is not a leap year");
}
}
}

由于java相关循环控制与C语言类似,所以不加赘述

2、异常处理简介

异常的基本概念:

又称为例外,是特殊的运行错误对象;是面向对象规范的一部分,是异常类的对象;Java中声明了很多异常类,每个异常类都代表了一种运行错误,类中包含了该运行错误的信息

处理错误的方法:

每当Java程序运行过程中发生一个可识别的运行错误时,即该错误有一个异常类与之相对应时,系统都会产生一个相应的该异常类的对象,即产生一个异常

异常处理示意图:

Java异常处理机制的优点:
  • 将错误处理代码从常规代码中分离出来

  • 按错误类型和差别分组

  • 对无法预测的错误的捕获和处理

  • 克服了传统方法的错误信息有限的问题

  • 把错误传播给调用堆栈

程序运行过程中发生的异常事件,根据错误的严重程度不同,可分为两类

错误

致命性的,用户程序无法处理

Error类是所有错误类的父类

异常

非致命性的,可编制程序捕获和处理

Exception类是所有异常类的父类

异常和错误类的层次结构:

Java预定义的一些常见异常:

ArithmeticException:整数除法中除数为0

NullPointerException:访问的对象还没有实例化

NegativeArraySizeException:创建数组时元素个数是负数

ArrayIndexOutOfBoundsException:访问数组元素时,数组下标越界

ArrayStoreException:程序试图向数组中存取错误类型的数据

FileNotFoundException:试图存取一个并不存在的文件

IOException:通常的I/O错误

异常的处理:

对于检查型异常,Java强迫程序必须进行处理。处理方法有两种:声明抛出异常

不在当前方法内处理异常,而是把异常抛出到调用方法中捕获异常,使用try{} catch() {}块,捕获到所发生的异常,并进行相应的处理

声明抛出异常

如果程序员不想在当前方法内处理异常,可以使用throws子句声明将异常抛出到调用方法中

如果所有的方法都选择了抛出此异常,最后JVM将捕获它,输出相关的错误信息,并终止程序的运行。在异常被抛出的过程中, 任何方法都可以捕获它并进行相应的处理

举个例子:

public void openThisFile(String fileName) throws java.io.FileNotFoundException {
//code for method
}
public void getCustomerInfo() throws java.io.FileNotFoundException {
// do something
this.openThisFile("customer.txt");
// do something
}

如果在openThisFile中抛出了FileNotfoundException异常,getCustomerInfo将停止执行,并将此异常传送给它的调用者

捕获异常

语法格式:
try {
statement(s)
} catch (exceptiontype name) {
statement(s)
} finally {
statement(s)
}

说明

try 语句,其后跟随可能产生异常的代码块

catch语句,其后跟随异常处理语句,通常用到两个方法

getMessage(),返回一个字符串对发生的异常进行描述。

printStackTrace(),给出方法的调用序列,一直到异常的产生位置

finally语句,不论在try代码段是否产生异常,finally 后的程序代码段都会被执行。通常在这里释放内存以外的其他资源

注意事项

在类层次树中,一般的异常类型放在后面,特殊的放在前面

举个例子:

import java.io.*;
public class ExceptionTester {
public static void main(String args[]) {
System.out.println("Enter the first number:");
int number1 = Keyboard.getInteger();
System.out.println("Enter the second number:");
int number2 = Keyboard.getInteger();
System.out.print(number1 + " / " + number2 + "=");
int result = number1 / number2;
System.out.println(result);
}
}

其中,Keyboard类的声明如下:

import java.io.*;
public class Keyboard{
static BufferedReader inputStream = new BufferedReader(new InputStreamReader(System.in));
public static int getInteger() {
try {
return (Integer.valueOf(inputStream.readLine().trim()).intValue());
} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
public static String getString() {
try {
return (inputStream.readLine());
} catch (IOException e) {
return "0";
}
}
}
运行结果:

Enter the first number:

140

Enter the second number:

abc

java.lang.NumberFormatException: abc

at java.lang.Integer.parseInt(Integer.java:426)

at java.lang.Integer.valueOf(Integer.java:532)

at Keyboard.getInteger(Keyboard.java:10)

at ExceptionTester.main(ExceptionTester.java:7)

140 / 0=Exception in thread "main" java.lang.ArithmeticException: / by zero

at ExceptionTester.main(ExceptionTester.java:10)

3、方法的重载(overloading)

一个类中名字相同的多个方法,这些方法的参数必须不同,Java可通过参数列表的不同来辨别重载的方法:或者参数个数不同、或者参数类型不同

返回值可以相同,也可以不同;重载的价值在于它允许通过使用一个方法名来访问多个方法

举个例子:

class MethodOverloading {
public void receive(int i){
System.out.println("Receive one int parameter. ");
System.out.println("i="+i);
}
public void receive(double d){
System.out.println("Receive one double parameter. ");
System.out.println("d="+d);
}
public void receive(String s){
System.out.println("Receive one String parameter. ");
System.out.println("s="+s);
}
public void receive(int i,int j){
System.out.println("Receive two int parameters. ");
System.out.println("i=" + i + " j=" + j);
}
public void receive(int i,double d){
System.out.println("Receive one int parameter and one double parameter. ");
System.out.println("i=" + i + " d=" + d);
}
}
public class test {
public static void main(String args[]){
MethodOverloading m = new MethodOverloading();
m.receive(2);
m.receive(5.6);
m.receive(3,4);
m.receive(7,8.2);
m.receive("Is it fun?");
}
}
运行结果:

Receive one int parameter.

i=2

Receive one double parameter.

d=5.6

Receive two int parameters.

i=3  j=4

Receive one int parameter and one double parameter.

i=7  d=8.2

Receive one String parameter.

s=Is it fun?

参考资料:

《java程序设计》--清华大学

java学习笔记5--类的方法的更多相关文章

  1. Java学习笔记——File类之文件管理和读写操作、下载图片

    Java学习笔记——File类之文件管理和读写操作.下载图片 File类的总结: 1.文件和文件夹的创建 2.文件的读取 3.文件的写入 4.文件的复制(字符流.字节流.处理流) 5.以图片地址下载图 ...

  2. Java学习笔记之---类和对象

    Java学习笔记之---类和对象 (一)类 类是一个模板,它描述一类对象的行为和状态  例如:动物类是一个类,动物们都有属性:颜色,动物们都有行为:吃饭 public class Dog { Stri ...

  3. Java学习笔记 04 类和对象

    一.类和对象的概念 类 >>具有相同属性和行为的一类实体 对象 >>实物存在的实体.通常会将对象划分为两个部分,即静态部分和动态部分.静态部分指的是不能动的部分,被称为属性,任 ...

  4. 0018 Java学习笔记-面向对象-类的基本要素

    类与对象 大街上一个个的人,就是一个个对象 类是对一群对象的抽象,比如人都有性别.年龄.姓名,都会吃饭.睡觉等.姓名性别可以抽象为变量,吃饭睡觉可以抽象为方法,像下面一样定义个类来形容人 public ...

  5. 疯狂java学习笔记之面向对象(三) - 方法所属性和值传递

    方法的所属性: 从语法的角度来看:方法必须定义在类中 方法要么属于类本身(static修饰),要么属于实例 -- 到底是属于类还是属于对象? 有无static修饰 调用方法时:必须有主调对象(主语,调 ...

  6. Java学习笔记之——类与对象

    1.参数的传递方式 1)值传递 2)引用传递 2.类和对象: (1)类的定义: public class 类名{ 类型 属性1: 类型 属性2: ……… public 返回值类型 方法名1(形参){ ...

  7. 1.2(java学习笔记)类与对象

      对象:是指具体的事物.比如学生 张三,老师 李四,代表一个单一的个体. 比如 学生 张三,这时张三就是具体的对象. 类:将对象中共有特征抽象出,可以理解为某种特性的集合. 世界上的事物可以分解成一 ...

  8. Java 学习笔记之 线程interrupted方法

    线程interrupted方法: interrupted()是Thread类的方法,用来测试当前线程是否已经中断. public class InterruptThread extends Threa ...

  9. Java学习笔记-File类的基本方法

    要渐渐养成写博客的习惯-----> 前段时间看Mars的java中的I/O流没怎么懂,发现I/O流好难啊.今天重新看一遍其他教学,还有书籍,做些笔记,记录下每天的学习生活. File类的一些方法 ...

  10. 0040 Java学习笔记-多线程-线程run()方法中的异常

    run()与异常 不管是Threade还是Runnable的run()方法都没有定义抛出异常,也就是说一条线程内部发生的checked异常,必须也只能在内部用try-catch处理掉,不能往外抛,因为 ...

随机推荐

  1. java.lang.ClassCastException: android.widget.ImageButton异常处理

    在调程序时总是出现异常关闭的现象,log显示: 03-26 07:58:09.528: E/AndroidRuntime(398): Caused by: java.lang.ClassCastExc ...

  2. Window 下一台机器配置三个Tomcat实例

    下面我们把配置的详细过程写在下面,以供参考:(此例以配置三个Tomcat为例) 1. 下载apache-tomcat-8.0.63,下载下来的文件为apache-tomcat-8.0.63.zip. ...

  3. 深度学习笔记之【随机梯度下降(SGD)】

    随机梯度下降 几乎所有的深度学习算法都用到了一个非常重要的算法:随机梯度下降(stochastic gradient descent,SGD) 随机梯度下降是梯度下降算法的一个扩展 机器学习中一个反复 ...

  4. Spring框架 AOP面向切面编程(转)

    一.前言 在以前的项目中,很少去关注spring aop的具体实现与理论,只是简单了解了一下什么是aop具体怎么用,看到了一篇博文写得还不错,就转载来学习一下,博文地址:http://www.cnbl ...

  5. centos7-硬盘坏道检测

    #检测坏道命令,结果输出到 /home/badblocks.log badblock -s -v -o /home/badblocks.log /dev/sdb1 [注]:硬盘损坏程度不同,block ...

  6. windows下srand48()和drand48()的问题

    前几天在windows下用MINGW编译一段代码时,出现了错误提示说srand48()和drand48()的未定义,去网上搜了下,发现好多人也遇到了同样的问题,大约有两种解决方案: 第一个就是说gcc ...

  7. 更改paramiko 源码 记录命令实现堡垒机功能

    利用paramiko 下的demo可以很容易的实现记录客户在操作客户机时的命令,修改\demos\interactive.py def posix_shell(chan): import select ...

  8. HTTP 415错误 Unsupported Content-Type

    报如下错误: { "badMediaType": { "message": "Unsupported Content-Type", &quo ...

  9. PHP多个版本爆出远程DOS漏洞

    近日,php多个版本爆出远程DoS漏洞(官方编号69364),利用该漏洞构造poc发起链接,很容易导致目标主机cpu的100%占用率,绿盟科技威胁响应中心随即启动应急机制, 启动应急响应工作,总结PH ...

  10. 区间DP POJ 1141 Brackets Sequence

    Brackets Sequence Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 29520   Accepted: 840 ...