java程序的结构
一个java程序可由一个或多个.java文件组成,这些文件称为源文件。每个源文件含有一个或多个类或接口。一个源文件中如果有多个类,则最多只能有一个是public类型的类,名字与文件名相同。
package语句:包语句,每个文件最多只有一个,且必须放在文件开始的地方。
import语句:引入语句,可以没有,也可以有多个,如果有 import语句的话,必须放在所有类定义的前面和包语句的后面.import student.*//引入所有与student开头的类.
包的概念
有package语句,该语句一定是源文件中的第一条非注释语句,包语句只能有一个,它的前面只能有注释或空行。通常包名全部用小写,一个包可以包含若干个类文件,还可以包含若干个包。
流程控制
分赋值语句、分支语句、循环语句和跳转语句。
语句是java的最小执行单位。
有的表达式也可单独当作语句,这样的语句称为表达式语句。每个表达式都会得到一个值.如:d++;
if可以嵌套,else可选,所以if的个数可能多于else的个数
switch应用有所限制,其表达式只能应用于int,char.
输入输出
Scanner类属于java. util包.
Scanner scan=new Scanner(System.in);
Scanner类的构造方法接收一个参数,这个参数代表了输入源,System.in对象代表标准输入流,默认是指键盘。
Scanner对象用空白 (空格 、水平制表符及回车换行符)作为输入的分隔元素。这些空白称为分隔符。也可以指定用其他的符号作为分隔符。
next()方法读入下一个输入对象,将它作为字符串返回。
nextLine( )方法读入当前行的所有输入,直到行尾,然后作为字符串返回。
数字处理类
Java提供的格式化输出功能.
使打印或显示的信息看起来比较美观。DecimalFormat类和NumberFormat类属于Java标准类库,定义在 java. text包中。
NumberFormat
public static void main(String[] args){
Double myNumber = 12345.123456789;
NumberFormat.getInstance().format(myNumber);//返回当前默认语言环境的默认数值格式。
NumberFormat.getCurrencyInstance().format(myNumber);//返回当前默认语言环境的通过格式。
NumberFormat.getNumberInstance().format(myNumber);//返回当前默认语言环境的通过数值格式。
NumberFormat.getPercentInstance().format(myNumber);//返回当前默认语言环境的百分比格式。1
NumberFormat.format =NumberFormat.getInstance();
format.setMaximumFractionDigits(3);//设置数值的小数部分允许的最大位数。
format.setMaximumIntegerDigits(5);//设置数值的整数部分允许的最大位数。
format.setMaximumFractionDigits(10);//设置数值的小数部分允许的最小位数。
format.setMaximum IntegerDigits(0);//置数值的整数部分允许的最小位数。
System.out.println(format.format(myNumber));
DecimalFormat
int age;
double weight,height, bmi;
Scanner scan = new Scanner (System.in);
// 创建从键盘输入的对象
System.out.print("请输入您的年龄:");
age = scan.nextInt();
//从键盘读入一个in t型数据
System.out.print("请输入您的体重( 公斤):");
weight = scan. nextDouble();
// 从键盘读入一个double 型数据
System.out.print("请输入您的身高(米):");
height = scan. nextDouble ();
bmi = weight/( height * height);
DecimalFormat format = new DecimalFormat("0.###");
System.out.println ("BMI:"+ format.format(bmi));
处理异常
java在所有的预设包中都定义了异常类和错误类。
Exception类是所有异常类的父类 , Error类是所有错误类的父类,这两个类同时又是Throwable类的子类。虽然异常属于不同的类,但所有这些类都是标准类Throwable类的后代,Throwable在java类库中,不需要import语句就可以使用,异常分为以下3种:
- 受检异常,必须被处理
- 运行时异常,不需要处理
- 错误,不需要处理
try、catch经常成对出现。一个try可以有多个catch块。
不论是否捕获到异常,都要执行finally后面的语句。
受检异常
程序执行期间发生的严重事件的后果,受检异常的所有类都是类Exception的子类。Exception是Throwable的后代。表示受检异常有:ClassNotFoundException\FileNotFoundException、IOException、NoSuchMethodException及WriteAbortedException.
运行时异常
通常是程序中逻辑错误的结果。运行时异常的所有类都是类RuntimeException的子类。它是Exception的后代。
ArithmeticException、ArrayIndexOutOfBoundsException、ClassCastException、EmptyStackException、IllegalArgumentException、IllegalStateException、IndexOutOfBoundsExxeption、NoSuchElementException、NullPointerException和UnsupportedOperationException.
公共异常
1. ArithmeticException
整数除法中,如果除数为0 ,则发生该类异常,如下面表达式将引发ArithmeticException异常。
int i = 12/0;
2. NullPointerException
如果一个对象还没有实例化,那么访问该对象或调用它的方法将导致NullPointerException异常。
3. NegativeArraySizeException
按常规,数组的元素个数应是一个大于等于0的整数。创建数组时,如果元素个数是负数 ,则会引发 NegativeArraySizeException 异常。
4. ArraylndexOutOfBoundsException
Java把数组看作是对象,并用length变量记录数组的大小。访问数组元素时,运行时环境根据length值检查下标的大小。如 果数组下标越界,则将导致ArraylndexOutOfBoundsException异常。
异常图
![](https://i-blog.csdnimg.cn/blog_migrate/c12458f012deff9d52c776e783d1378a.jpeg)
总结
try: 执行可能会出问题的语句。
catch:捕获异常try代码块中可能抛出的异常。
finally:无论是否有异常都要执行的代码。
throw:出现在方法体中,用于抛出异常。当方法在执行过程中遇到异常情况时,将异常信息封装为异常对象,然后throw。
throws:出现在方法的声明中,表示该方法可能会抛出的异常,允许throws后面跟着多个异常类型。
try、catch经常成对出现。一个try可以有多个catch块。
system.exit(0);参数0,表示虽然遇到了一个严重问题,但程序是正常结束的。
如果在保护代码内执行了System.exit()方法,将不执行finally后面的语句,这是不执行finally后面语句的唯一一种可能。