1. API的使用:
Myeclipse环境下,按住Ctrl键,左双击方法名,可跳转至JDK库。
2. 数组对象:
对象名称:Arrays ,所在包:java.util.Arrays;
3.数组常见异常:
下标越界。ArrayIndexOutOfBoundsException
空指针异常。NullPointerException
4.对象的内存解析;
对象名:存在栈里面。
对象的属性:存在堆里面。
5.累的成员变量与局部变量的比较:
1.相同点:
变量声明的格式相同:数据类型 变量名 = 变量值。
先声明,后使用。
独有一定的作用域。
2.不同点:
声明的位置:成员变量:声明在类的内部。
局部变量:声明在方法内,构造器内,代码块内,方法形参等位置。
成员变量可以权限修饰符,而局部变量没有权限修饰符。
局部变量在使用前,一定要初始化,没有默认初始值;属性有默认初始化值。
在内存中的分配的位置不同:属性:在堆空间中;局部变量:在栈空间中。
总结:
变量的分类:
按照数据类型分:分为基本数据类型与引用数据类型。
按照类中声明的位置的不同:分为成员变量与局部变量。
说明:属性 = 成员变量 = field = 域。
简单的家庭财务系统:
工具类:
package com.dd.acount;
import java.util.Scanner;
/**
* 用户获取用户从键盘输入的数据。
*
*/
public class Utility {
private static Scanner scanner = new Scanner(System.in);
/**
* 要求用户必须从1-4中选择一个数字
* @return
*/
public static char readMenuSelection(){
char c ;
for(; ;){
String str = readKeyBoard(1);
c = str.charAt(0);
if(c != '1' && c != '2' && c != '3' && c != '4'){
System.out.println("选择错误,请重新输入:");
}
else
break;
}
return c;
}
/**
* 针对收入或支出的金额的输入
* @return
*/
public static int readNumber(){
int n ;
for(; ;){
String str = readKeyBoard(4);
try{
n = Integer.parseInt(str);
break;
}catch(NumberFormatException e){
System.out.println("数字输入错误,请重新输入:");
}
}
return n;
}
/**
* 针对收入或支出的说明
* @return
*/
public static String readString(){
String str = readKeyBoard(8);
return str;
}
/**
* 要求用户从y或n中选择一个
* @return
*/
public static char readConfirmSelection(){
char c;
for(; ;){
String str = readKeyBoard(1).toUpperCase();
c = str.charAt(0);
if(c == 'Y' || c == 'N'){
break;
}else{
System.out.println("选择错误,请重新输入:");
}
}
return c;
}
/**
* 从键盘获取指定长度限制的字符串数据
* @param i
* @return
*/
private static String readKeyBoard(int limit) {
String line = "";
while(scanner.hasNext()){
line = scanner.nextLine();
if(line.length() < 1 || line.length() >limit){
System.out.println("输入长度(不大于"+limit+",错误,请重新输入!)");
continue;
}
break;
}
return line;
}
}
主类:
package com.dd.acount;
public class FamilyAccount {
public static void main(String[] args){
String details = "收支\t账户金额\t收支金额\t说 明\n";
int balance = 10000;
boolean isFlag = true;
do{
System.out.println("\n---------------家庭收支记账软件-----------\n");
System.out.println(" 1 收支明细");
System.out.println(" 2 登记收入");
System.out.println(" 3 登记支出");
System.out.println(" 4 退 出\n");
System.out.print(" 请选择(1-4):\n");
char menu = Utility.readMenuSelection();
System.out.println();
switch(menu){
case '1':
System.out.println("\n---------------当前收支明细记录-----------\n");
System.out.println(details);
System.out.println("\n-------------------------------------\n");
break;
case '2':
System.out.println("本次收入金额:");
int money = Utility.readNumber();
balance += money;
System.out.println("本次收入说明:");
String info = Utility.readString();
details += "收入\t"+balance+"\t"+money+"\t"+info+"\n";
break;
case '3':
System.out.println("本次支出金额:");
int money1 = Utility.readNumber();
balance -= money1;
System.out.println("本次支出说明:");
String info1 = Utility.readString();
details += "支出\t"+balance+"\t"+money1+"\t"+info1+"\n";
break;
case '4':
System.out.print("退出:");
System.out.println("是否确认退出(Y/N):");
char isExit = Utility.readConfirmSelection();
if(isExit == 'Y'){
isFlag = false;
}
break;
}
}while(isFlag);
}
}