java学习笔记(随变写写)

java学习笔记(随变写写)

补充:
Java中内存机制存在两种内存,一种是栈内存,另一种是堆内存。基本类型的变量和对象的引用(即对象的名称)都是栈内存中分配。当在一段代码块定义一个变量时,java就在栈中为这个变量分配内存空间。当变量所在的代码块运行结束,java会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作他用。堆内存用来存放new创建的空间,而且一个堆内存空间可以同时被多个栈空间所指向。
即栈空间指向对应的堆内存空间。

(eclipse中类的名可以右键该类,refactor,rename更改。之后main的类名也会更改。)
字符串
Java提供了三个字符类串,分别是String、StringBuffer、StringBuilder,都定义在java.lang包中。String用于字符串常量,StringBuffer、StringBuilder用于字符串变量。如对字符串的添加、插入、修改等操作。
String str1=new String (“Hello ”)
String str2=new String (“Hello ”)
Str1.equals(str2)返回的结果是true,而不能用str1==str2,会返回flase。因为这里比较的是两个引用变量,str1和str2.他们分别存放不同的String地址。
equalsIgnoreCase()比较可以忽略大小写。
StringBuffer初始容量为16个字符。
StringBuffer支持多线程。在单线程编程中优先采用StringBulider类。
☆ StringBuffer不能用SufferBuffer s4=”Hello ”这样创建
☆ String类和StringBuffer类的转换:(因为在用String类操作的时候,比如两个字符串相加,系统都是先转换成StringBuffer类操作的,所以速度会慢很多)StringBuffer转换成String类可以用toString()方法。StringBuffer s1=new StringBuffer(“Hello”);
String s2=s1.toString();
若需要将String类的对象转换成StringBuffer类的对象,可以使用
StringBuffer s3=new StringBuffer(s2);
Vector类
Vector类用于描述向量,定义在java.util包中。
向量可以看做允许不同类型的元素共存的可变长数组。
Vector有三个属性:长度、容量、增量。Vector的初始容量为10,增量为0.
异常:
Java通过面向对象的方法来处理异常。一个异常是由一个对象来表示的,所有的异常都直接或间接的继承自Throwable接口。Java的所有异常对象都是一个继承Throwable接口的实例。Throwable接口是类库java.lang包中的一个类。它派生了两个子类:Error和Exception。
☆Error类:主要用来描述一些Java运行时刻系统内部版的错误或者资源枯竭导致的错误,普通的程序不能从这样的错误中恢复,此类型的错误不能抛出,而且出现的概率小。一般由系统进行处理,一般程序本身不需要捕获和处理。
☆Excrption类:
RuntimeException异常:程序缺陷异常。异常应该避免而不可捕获的异常
非RuntimeException异常:一般是程序外部问题引起的异常。(如果不处理异常会出现语法错误)异常必须捕获的异常

所有异常类都继承与Exception类。
(重载与覆写:若子类中的成员方法与父类相同,参数表不同,则属于同名方法的重载,而不是覆写,覆写是子类的方法的方法名、参数表、返回值与父类中被覆写的方法都相同,而方法体不同)
Integer.parseInt()方法将一个字符串转换成int型
Catch里面的异常类型:
NumberFormatEXception(数据格式错误)
ArrayIndexOutOfBoundsException(数组越界)
ClassNotFoundException(未找到相应的类)
FileNotFoundExcrption(未找到指定的文件或目录)
IOException(输入、输出错误)
NullPointException(引用空的尚无内存空间的对象)
ArithmeticException(算数错误)等
捕获异常的语句:e.printStackTrace();1、e是Throwable的实例异常对象,用在catch语句中,相当于一个形参,一旦try捕获到了异常,那么就将这个异常信息交给e,由e处理,printStackTrace()是异常类的一个方法。与它重载的方法还有printStackTrace(PrintStream s) 和printStackTrace(PrintWriter s)。
printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
Catch异常捕获规则:捕获异常范围小的异常必须放在捕获范围大的异常前面,否则容易出现变异错误。

Finally语句通常也可以进行资源的清除工作,如打开和关闭的文件和关闭数据流等。

用户自定义异常:如果是从RuntimeException及其子类继承而来时,程序可以不捕捉他,当自定义异常是从Ecception及其它的子类继承而来的时候,该自定义异常必须捕捉它。不仅要用try-catch-finally捕获,还要用自己定义和抛出。
(一个简单的异常例子(银行取钱,如果取得钱多于余额,抛出自定义异常))

package mytest;
class InsufficientFundsExcrption extends Exception{
	private Bank ecxepbank;
	private double excepAmount;
	InsufficientFundsExcrption(Bank ba,double dAmount){
		ecxepbank=ba;
		excepAmount=dAmount;
		System.out.println(this.excepMessage().toString());
	}
	public String excepMessage() {
		String str="The balance "+ecxepbank.getbalance()+"\n"+"The withdrawal was "+excepAmount;
		return str;
	}
}
class Bank{
	double balance;
	Bank(double bela){
		balance=bela;
	}
	public void deposite(double dAmount) {
		if(dAmount>0) balance+=dAmount;
	}
	public void withdrawal(double dAmount)throws InsufficientFundsExcrption{
		if(balance<dAmount) {
			throw new InsufficientFundsExcrption(this,dAmount);
		}
		balance=balance-dAmount;
	}
	public double getbalance() {
		return balance;
	}
}
public class demo {
	public static void main(String[] args) {
		try {
			Bank ba=new Bank(50);
			ba.withdrawal(100);
			System.out.println("withdrawal successful!");
		}
		catch(Exception e){
			System.out.println(e.toString());
		}
	}
}

异常总结:自定义异常一定要从Exception类中继承。可以在异常类中用try catch语句,也可以直接用if语句抛出异常。
(一个简单的程序,求两个数的商,第二个整数若为0,抛出异常)
package mytest;
import java.util.Scanner;
class divdemo{
	int a;
	int b;
	divdemo(int i,int j){
		a=i;
		b=j;
	}
	public int div() throws ArithmeticException{
		if(b==0) {
			ArithmeticException e=new ArithmeticException("j can't be zero");
			throw e;
		}
		return a/b;
	}
	
}
public class demo {
	public static void main(String[] args) {
		Scanner s=new Scanner(System.in);
		
		int l=0;
		System.out.println("please input two numbers:");
		int i=s.nextInt();
		int j=s.nextInt();
		divdemo d = new divdemo(i,j);
		try {
			l=d.div();
			System.out.println("the anwser is:"+l);
		}
		catch(Exception e){
			System.out.println(e.toString());
		}
		
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值