大家好,如果您还对Java入门教程系列(十):深入基础学习不太了解,没有关系,今天就由本站为大家分享Java入门教程系列(十):深入基础学习的知识,包括的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!
异常是Java程序中出现的异常情况。
错误
它是Throwable 的子类,用于指示合理的应用程序不应尝试捕获的严重问题。也就是说,对于程序Error的情况,Java程序本身是无能为力的。例如硬件层面的问题、内存不足等。
例外
是Throwable 的一种形式,它指出合理的应用程序想要捕获的条件。也就是说,我们需要对程序中出现的Exception情况进行处理。
运行时异常
是Java虚拟机正常运行期间可能抛出的异常的超类。
异常分类
运行时异常:如果编译时没有处理,程序运行时就会出现问题,需要我们回来修改代码。编译时异常:问题必须在编译时处理,否则程序无法编译,更谈不上执行。代码示例
公共类MyExceptionDemo {
公共静态无效主(字符串[] args){
方法();
}
公共静态无效方法(){
整数a=10;
整数b=0;
System.out.println(a/b);
}
}假设我们把这个例子中的分母改为0,就会报错。控制台会输出:
20200521081143然后
java.lang.ArithmeticException:/by zero //这就是错误的原因
at MyException.MyExceptionDemo.method(MyExceptionDemo.java:13) //错误的代码位置
所以如果出现Exception,Java虚拟机会引导我们一步步找到问题所在。纠正一些相关的异常情况。
异常处理
尝试.抓住
公共静态无效主(字符串[] args){
System.out.println("程序开始执行");
方法();
System.out.println("程序结束执行");
}
公共静态无效方法(){
尝试{
整数a=10;
整数b=0;
System.out.println(a/b);
}catch (ArithmeticException e){
e.printStackTrace();
}
}
}
Throws
编译时异常
公共静态无效方法1()抛出ParseException {
字符串s="2099-09-09";
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd");
日期d=sdf.parse(s);
System.out.println(d);
}注意如果抛出异常,调用时必须捕获
尝试{
方法1();
} catch (ParseException e){
e.printStackTrace();
}
File
File是文件和目录路径的抽象表示,这意味着File可以封装成对象。
下面的f1、f2、f4是创建File对象的构造方法。
构造方法
//第一个结构体
文件f1=new File("/Users/caoxiaozhu/Java/javaDemo/javaDemo.imln");
//第二个结构体
File f2=new File("/Users/caoxiaozhu/Java/javaDemo/","javaDemo.iml");
//第三次构造
File f3=new File("/Users/caoxiaozhu/Java/javaDemo/");
文件f4=new File(f3,"javaDemo.iml");
创建功能
createNewFile() 创建一个文件
mkdir() 创建一个文件夹
创建目录(mac下)
String home=System.getProperty("user.home");
文件f2=new File(home + File.separator + "桌面" + File.separator + "Java");
System.out.println(f2.mkdir()); (在胜利下)
//在d盘下创建dd文件夹
文件f2=new File("d:\dd");
System.out.println(f2.mkdir());ps: 如果不指定路径,则默认在项目路径中创建。
删除功能
删除()
String home=System.getProperty("user.home");
文件f2=new File(home + File.separator + "桌面" + File.separator + "Java");
System.out.println(f2.delete());
判断功能
文件f1=新文件("aaa");
f1.createNewFile(); //f1.mkdir() 创建一个文件夹
System.out.println("是文件夹:"+f1.isDirectory());
System.out.println("是文件:吗"+f1.isFile());
System.out.println(":是否存在"+f1.exists());
//打印
是文件夹吗:false
是一个文件吗:true
:true存在吗?
获取功能
//获取绝对路径
System.out.println(f1.getAbsolutePath());
//获取相对路径
System.out.println(f1.getPath());
//获取文件名
System.out.println(f1.getName());
字节流
创建字节输出流
公共静态无效主(字符串[] args)抛出FileNotFoundException {
//创建字节输出流
FileOutputStream fos=new FileOutputStream("aa.txt");
}创建字节输出流实际上做了三件事:
调用系统函数,创建文件,创建字节输出流对象,fos对象指向文件aa.txt。完整代码
公共静态无效主(字符串[] args)抛出IOException {
//创建字节输出流
FileOutputStream fos=new FileOutputStream("aa.txt");
//写
fos.write(66);
fos.close();
}
写入字符串字节流
写
fos.write("hello".getBytes());
换行符
fos.write("rn".getBytes());
追加写入
FileOutputStream fos=new FileOutputStream("aa.txt",true);
异常处理
//异常处理
文件输出流fos=null;
尝试{
//创建并写入
fos=new FileOutputStream("aa.txt");
fos.write("hello world".getBytes());
}catch(IOException e){
//异常
System.out.println(e);
e.printStackTrace();
}最后{
//发布
如果(fos!=null){
尝试{
fos.close();
}catch(IOException e){
e.printStackTrace();
}
}
}ps: 因为这种异常处理写起来太麻烦,所以现在主要以抛出异常为主。
读取字节流
读取单个字节流
公共静态无效主(字符串[] args)抛出IOException {
//创建读取字节流对象
FileInputStream fim=new FileInputStream("aa.txt");
//读取数据的方法
整数由;
while((by=fim.read()) !=-1){
System.out.print((char)by);
}
fim.close();
}读取字节数组
FileInputStream fim=new FileInputStream("aa.txt");
字节[] bys=新字节[1024];
int 长度;
while((len=fim.read(bys))!=-1){
System.out.println(new String(bys,0,len));
}
fim.close();
字节缓冲区流
字节流一次读写一个数组比一次读写一个字节快得多。这就是添加数组等缓冲区的效果。 Java本身设计时,就考虑到了这种设计思想,提供了字节缓冲流。
字节缓冲区输出流BufferdOutputStream 字节缓冲区输入流BufferedInputStream 字节缓冲区输出流
公共静态无效主(字符串[] args)抛出IOException {
BufferedOutputStream bos=new BufferedOutputStream(new FileOutputStream("aa.txt"));
bos.write("你好莱昂世界".getBytes());
bos.close();
}字节缓冲输入流
BufferedInputStream bis=new BufferedInputStream(new FileInputStream("aa.txt"));
整数由;
while((by=bis.read())!=-1){
System.out.print((char)by);
}
bis.close();
编码解码
//编码
字符串s="你好";
//byte[] bys=s.getBytes(); //默认GBK
byte[] bys=s.getBytes("UTF-8"); //指定UTF-8编码
System.out.println(Arrays.toString(bys));
//解码
String ss=new String(bys,"UTF-8");
System.out.println(ss);
编码输出流
OutputStreamWriter osw=new OutputStreamWriter(new FileOutputStream("demo.txt"),"UTF-8");
osw.write("你好");
osw.close();
编码输入流
InputStreamReader isr=新
InputStreamReader(new FileInputStream("demo.txt"),"UTF-8");
char[] chs=新的char[1024];
int 长度;
while ((len=isr.read(chs))!=-1){
System.out.println(new String(chs,0,len));
}
osw.close();
isr.close();
FileReader FileWritter (改进版)
public static void main(String[] args) 抛出IOException {
FileReader fileReader=new FileReader("demo.txt");
FileWriter fileWriter=new FileWriter("demo1.txt");
//首先读取
//int ch;
//while ((ch=fileReader.read())!=-1){
//fileWriter.write(ch);
//}
//第二种读取
char[] chars=new char[1024];
int 长度;
while ((len=fileReader.read(chars))!=-1){
fileWriter.write(chars,0,len);
}
fileReader.close();
fileWriter.close();
}
BufferedWriter BufferedReader
public static void bufferedSteam() 抛出IOException {
BufferedReader bufferedReader=new BufferedReader(new FileReader("demo.txt"));
BufferedWriter bufferedWriter=new BufferedWriter(new FileWriter("demo1.txt"));
//写入数据
bufferedWriter.write("你好");
//第一种类型
//int ch;
//while ((ch=bufferedReader.read())!=-1){
//System.out.print((char)ch);
//}
//第二种类型
char[] chars=new char[1024];
int 长度;
while ((len=bufferedReader.read(chars))!=-1){
System.out.println(new String(chars,0,len));
}
bufferedReader.close();
bufferedWriter.close();
特殊功能
fileWriter.newLine() 开始新行
fileWriter.flush() 刷新
示例:将集合中的元素逐行输入到文本中
公共静态无效newCharacter() 抛出IOException {
Collection集合=new ArrayList();
集合.add("你好");
集合.add("世界");
collection.add("你好");
BufferedWriter fileWriter=new BufferedWriter(new FileWriter("demo2.txt"));
//遍历
for (String s : 集合){
fileWriter.write(s);
fileWriter.newLine();
fileWriter.flush();
}
【Java入门教程系列(十):深入基础学习】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
Java真是个好用的语言!
有5位网友表示赞同!
终于开始学习Java基础了,感觉很有挑战性。
有8位网友表示赞同!
看了很多Java教程,还是想要深入理解它的基础知识。
有16位网友表示赞同!
希望这篇文章能让我更好地掌握Java的基本语法。
有6位网友表示赞同!
学习Java基础就像打打游戏,一步一个脚印慢慢来吧。
有8位网友表示赞同!
开始研究Java了,听说应用场景很宽泛.
有18位网友表示赞同!
Java的代码看起来还是蛮清晰易懂的。
有18位网友表示赞同!
之前接触过一些Java项目,现在打算好好学一下基础知识。
有19位网友表示赞同!
感觉学习Java需要积累很多经验。
有7位网友表示赞同!
期待这篇文章能讲解一些常用的Java数据类型.
有11位网友表示赞同!
了解Java基础可以帮助我更好地学习更高阶的知识。
有7位网友表示赞同!
我已经开始练习写简单的Java代码了!
有15位网友表示赞同!
感觉学习算法和数据结构的时候,掌握Java基础很重要。
有10位网友表示赞同!
这篇文章一定很有用参考价值!
有20位网友表示赞同!
学习编程是件很有意思的事情,期待能通过学习Java入门到更专业的领域!
有14位网友表示赞同!
希望这篇关于Java的基础学习能够讲解的详细一点。
有6位网友表示赞同!
从入门到精通,一步一个脚印慢慢地学吧。
有19位网友表示赞同!
这个标题看起来很有吸引力,期待读完它!
有6位网友表示赞同!
终于找到一篇讲解Java基础的文章!
有15位网友表示赞同!
学习Java可以开拓我的职业发展道路!
有14位网友表示赞同!