1,javase代码实战——基础语法(一)
2018-02-24 21:30
344 查看
1输出错误信息及调试信息
2从控制台接受输入
重定向输出流实现程序日志
自动类型转换与强制类型转换
在程序开发中,我们要为了要知道程序运行中的一些情况,就需要在程序代码中插入一些输出语句,甚至程序出现严重的错误时,也要给出警告提示。
代码实现:
效果
总结:out和err是system类中的final static的类变量,它们两个都是PrintStream类的实例对象。所以,在不创建system类对象的情况下,就可以使用。但是,out最好用于输出调试信息,在ec’li’pse的控制台中字体颜色是黑色的。err最好用于输出错误信息,在ec’li’pse的控制台中字体颜色是红色的。
扩展:
浅析system类:
1,System类是final static 定义的,所以他不能被继承,也不用进行实例化。
2,作用:System是一个工具类,有标准输入、标准输出和错误输出流;获得系统属性,返回毫秒数,拷贝数组,获得系统属性,运行垃圾回收器,退出虚拟机等等。
3,我们只看标准输出和标准错误输出流。即:
public final static PrintStream out = nullPrintStream();
public final static PrintStream err = nullPrintStream();
提出一个面试题:
out或 err 是一个变量还是一个内部类呢?
答:out或err是一个PrintStream的类变量,不是一个内部类。
浅析printStream类:
1,OutputStream是一个抽象类,FilterOutputStream是它的子类。PrintStream又是它的子类。
OutputStream此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器(控制台,磁盘等)。 需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。
FilterOutputStream 类本身只是简单地重写那些将所有请求传递给所包含输出流的 OutputStream 的所有方法。FilterOutputStream 的子类可进一步地重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
注:FilterOutputStream只能输出byte类型。
2,作用:可以输出任意类型的数据类型,不在仅限与byte类型;可输出格式化的数据;可以追加字符到输出流。还有覆盖父类的一些write等方法并实现了输出。
3,随便看一个输出类型的源代码:
可以发现,PrintStream的两个write的方法中只有char和string类型,所以其他类型先借助String类转为String类型在做输出操作。
用户需要输入密码,怎么从控制台接受输入的密码?
代码实现:
总结:in也是system中的一个输入流类变量,Scanner是扫描工具类。Scanner中封装了输入流对象,所以可以从控制台读取数据。
扩展:
1,public final static InputStream in = nullInputStream();
in和err,out都是system中的类变量。
2, inputStream输入流是以字节为单位读取数据的,要经过复杂的判断和创建缓冲数组,而且还会出现乱码的情况。所以对于字符数据的获取,应该使用Scanner扫描类对输入流,文件等进行封装,在获取字符串类型的数据,是一个很好的方法。
3,浅析Scanner类
(1)是一个简单的文本扫描器,使用正则表达式来解析基本类型和字符串。
(2)查看构造方法,可以从文件,输入流,信道,字符串等进行扫描。
(3)查看方法,可以扫描int,double等各种类型的数据,可以自己设置正则表达式扫描数据,返回扫描器的语言环境等等
问题分析:system是一个工具类,有标准的输入输出的功能。它封装了输出流对象,即out变量是java的标准输出流,但是用final所定义,所以无法进行修改。继续查看system的api可以发现java提供了public static void setOut(PrintStream out)等方法
可见,只要创建好相应的输入输出流对象,就可可以实现向制定的位置输出日志信息。
代码实现:
总结:我们在使用System类的标准输入、标准输出和错误输出流的功能时,默认的是向控制台输出信息,如果我们要向制定的位置输出,只需要自己创建指定的输入输出流,调用setOut()方法,这样我们在使用System中的输出方法,就输出到我们指定的位置了。
扩展:
1,实现输出信息的方式有很多中,这里我们使用了System类,我们也可以只使用java中的输出流。也可以直接使用PrintStream类。
他们最后都是调用的源代码:
java基本数据类型之间存在着两种自动类型转换:自动类型转换和强制类型转换。
2从控制台接受输入
重定向输出流实现程序日志
自动类型转换与强制类型转换
1,输出错误信息及调试信息
问题介绍:在程序开发中,我们要为了要知道程序运行中的一些情况,就需要在程序代码中插入一些输出语句,甚至程序出现严重的错误时,也要给出警告提示。
代码实现:
public static void main(String[] args) { System.out.println("我是一个输出的信息"); System.err.println("我是一个警告的信息"); }
效果
总结:out和err是system类中的final static的类变量,它们两个都是PrintStream类的实例对象。所以,在不创建system类对象的情况下,就可以使用。但是,out最好用于输出调试信息,在ec’li’pse的控制台中字体颜色是黑色的。err最好用于输出错误信息,在ec’li’pse的控制台中字体颜色是红色的。
扩展:
浅析system类:
1,System类是final static 定义的,所以他不能被继承,也不用进行实例化。
2,作用:System是一个工具类,有标准输入、标准输出和错误输出流;获得系统属性,返回毫秒数,拷贝数组,获得系统属性,运行垃圾回收器,退出虚拟机等等。
3,我们只看标准输出和标准错误输出流。即:
public final static PrintStream out = nullPrintStream();
public final static PrintStream err = nullPrintStream();
提出一个面试题:
out或 err 是一个变量还是一个内部类呢?
答:out或err是一个PrintStream的类变量,不是一个内部类。
浅析printStream类:
1,OutputStream是一个抽象类,FilterOutputStream是它的子类。PrintStream又是它的子类。
OutputStream此抽象类是表示输出字节流的所有类的超类。输出流接受输出字节并将这些字节发送到某个接收器(控制台,磁盘等)。 需要定义 OutputStream 子类的应用程序必须始终提供至少一种可写入一个输出字节的方法。
FilterOutputStream 类本身只是简单地重写那些将所有请求传递给所包含输出流的 OutputStream 的所有方法。FilterOutputStream 的子类可进一步地重写这些方法中的一些方法,并且还可以提供一些额外的方法和字段。
注:FilterOutputStream只能输出byte类型。
2,作用:可以输出任意类型的数据类型,不在仅限与byte类型;可输出格式化的数据;可以追加字符到输出流。还有覆盖父类的一些write等方法并实现了输出。
3,随便看一个输出类型的源代码:
public void print(int i) { write(String.valueOf(i)); } private void write(String s) { try { synchronized (this) { ensureOpen(); textOut.write(s); textOut.flushBuffer(); charOut.flushBuffer(); if (autoFlush && (s.indexOf('\n') >= 0)) out.flush(); } } catch (InterruptedIOException x) { Thread.currentThread().interrupt(); } catch (IOException x) { trouble = true; } }
可以发现,PrintStream的两个write的方法中只有char和string类型,所以其他类型先借助String类转为String类型在做输出操作。
2,从控制台接受输入
问题介绍:用户需要输入密码,怎么从控制台接受输入的密码?
代码实现:
public static void main(String[] args) { System.out.println("请输入密码"); Scanner s =new Scanner(System.in); String psd =s.nextLine();//接受一行文本输入 if(psd.equals("123456")) System.out.println("密码正确"); else System.err.println("密码错误"); }
总结:in也是system中的一个输入流类变量,Scanner是扫描工具类。Scanner中封装了输入流对象,所以可以从控制台读取数据。
扩展:
1,public final static InputStream in = nullInputStream();
in和err,out都是system中的类变量。
2, inputStream输入流是以字节为单位读取数据的,要经过复杂的判断和创建缓冲数组,而且还会出现乱码的情况。所以对于字符数据的获取,应该使用Scanner扫描类对输入流,文件等进行封装,在获取字符串类型的数据,是一个很好的方法。
3,浅析Scanner类
(1)是一个简单的文本扫描器,使用正则表达式来解析基本类型和字符串。
(2)查看构造方法,可以从文件,输入流,信道,字符串等进行扫描。
(3)查看方法,可以扫描int,double等各种类型的数据,可以自己设置正则表达式扫描数据,返回扫描器的语言环境等等
重定向输出流实现程序日志
问题介绍:假如我想向一个文件中输出程序中的日志信息怎么办?问题分析:system是一个工具类,有标准的输入输出的功能。它封装了输出流对象,即out变量是java的标准输出流,但是用final所定义,所以无法进行修改。继续查看system的api可以发现java提供了public static void setOut(PrintStream out)等方法
可见,只要创建好相应的输入输出流对象,就可可以实现向制定的位置输出日志信息。
代码实现:
/** * 1,先保留原有的输出流,如果还要在用到的话。 * 2,创建新的指定的流对象,调用system的setXXX()方法传入。 * 3,使用system的输出方法即可,即实现了向指定的位置输出信息。 * */ PrintStream pout =System.out; PrintStream p =null; try { p =new PrintStream("G:\\txt.txt"); System.setOut(p); System.out.println("程序正常运行"); System.setOut(pout); System.out.print("输出日志成功"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); }
总结:我们在使用System类的标准输入、标准输出和错误输出流的功能时,默认的是向控制台输出信息,如果我们要向制定的位置输出,只需要自己创建指定的输入输出流,调用setOut()方法,这样我们在使用System中的输出方法,就输出到我们指定的位置了。
扩展:
1,实现输出信息的方式有很多中,这里我们使用了System类,我们也可以只使用java中的输出流。也可以直接使用PrintStream类。
PrintStream p =null; try { p =new PrintStream("G:\\txt.txt"); p.println("我是程序的日志文件"); p.println("程序运行正常"); } catch (FileNotFoundException e) { // TODO Auto-generated catch block p.print("程序运行异常"); e.printStackTrace(); }
他们最后都是调用的源代码:
public void println(String x) { synchronized (this) { print(x); newLine(); } }
自动类型转换与强制类型转换
问题介绍:java基本数据类型之间存在着两种自动类型转换:自动类型转换和强制类型转换。
byte b =127; short s =23561; int i =12345; long l =12334455L; char c ='w'; float f =1.1f; double d =123.123; //自动转换 System.out.println("byte+int 首先byte转int在做加法 结果"+(b+i)); //强制类型转换 System.out.println("double转int 结果 "+(int)d);
相关文章推荐
- Swift2.0 基础语法&实战代码演示(初稿)
- 代码干货 | Javascript基础学习之基本语法
- JavaScript基础语法测试代码,覆盖JavaScript五大对象和function!
- javase基础之if语法实例
- 4,javase代码实战-运算符——左移右移实现乘除(三)
- JavaSE语法基础
- webpack3实战(3)打包有es6、es7语法的js代码
- JavaSE----基础语法(方法)
- 第三十四讲 LINQ 基础语法(一) 补充实例代码
- JavaSE入门学习5:Java基础语法之运算符和语句(上)
- JavaSE入门学习8:Java基础语法之数组
- 黑马程序员——javase基础语法
- JavaSE复习之一 基础知识:Java的基础语法
- JavaSE复习之一 基础知识:Java的基础语法 补充(3)
- JavaSE基础第二部分:Java基础语法之常量与变量
- 小静的心路历程--javase基础语法第一章--方法的参数是基本数据类型和引用类型
- JavaScript基础语法测试代码,覆盖JavaScript五大对象和function!
- JavaSE语法基础总结
- JavaSE入门学习8:Java基础语法(四)
- JavaSE基础语法中的运算符