发表于: 2017-12-07 21:30:01
2 880
1. printStackTrace()方法的意思是:在命令行打印异常信息在程序中出错的位置及原因。
2.假如要将服务发布到远程然后还能保证本地能访问到,需要配置两个东西.
++在启动类里指定远程服务ip地址
++pom.xml文件里配置utf-8编码
1.首先了解file.encoding 和 sun.jnu.encoding两个属性的值
// 获取file.encoding的值
System.out.println("file.encoding:"+System.getProperty("file.encoding"));
// 获取sun.jnu.encoding的值
System.out.println("sun.jnu.encoding:"+System.getProperty("sun.jnu.encoding"));
2.验证
编码格式utf-8正常
编码格式GBK,乱码
这样就判断为默认编码是utf8
Ctrl+Alt+s文件编码
用记事本打开.java文件,然后另存为,可以看到文件的编码
Domain.java文件是utf-8格式的
Domain.class文件通过命令行编译是GBK的,然后通过-Dfile.encoding=utf-8修改属性后变成了utf-8格式的.
也就是说,一个java文件是以二进制的形式存储在硬盘中的,我们一开始用utf8的编码存储它,然后手动javac编译,因为我们没有指定编码,编译之前提取文件解析文件系统不知道我们是以什么编码存的,所以只能采用windows系统默认的编码,也就是GBK(如下查看)
963表示默认编码GBK
3.虎头蛇尾吧,项目跑出问题了
++大概就是我在idea里写的源文件存到本地是以utf-8的编码存的,我假如直接在命令行里打包的话,源文件没有指定编码格式,那么机器不知道以什么编码取,那么它就会以默认的本机系统默认的编码来解码,windows就是GBK,那么源文件里原来用utf-8存的中文就会成乱码.所以假如在命令行里编译java文件,要指定编码的话用
而且当java运行的时候也要进行编码指定
java -Dfile.encoding=utf-8 Domain1
然后才能正确输出中文;
++我们要在pom.xml文件中配置一下编码
<properties>
<!--文件拷贝时的编码-->
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<!--编译时的编码-->
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
</properties>
把这三个配置一下应该就没什么问题了.不深究了.搞了一晚上
三.System.in,输入输出流
知识点
1.缓存流
缓存流的思想,首先BurrerReader是为其他Reader提供缓冲功能.创建BufferReader时一般会通过它的构造函数指定我们是为哪个Reader缓冲.BufferReader会将该Reader的数据分批存取,每次读取一部分存到BufferReader的对象中,操作完缓冲中的这部分数据之后,再从Reader中读取下一批数据.
为什么要缓冲,缓冲的数据一般是存在内存里,而原始数据可能保存在硬盘里,内存数据读取一般不硬盘读取快10倍以上
问题:为什么不一次性把数据全部存储在缓冲,原因:1.读取全部数据的时间会很长2.内存价格很贵
2.输入流
暂时了解不深入??
3.扫描控制台
java.util.Scanner是java5的功能,主要是为了简化文本扫描,最实用的时候是获取控制台输入.
通过new Scanner创建一个Scanner实例,控制台会一直等待输入,直到按回车键结束,把所输入的内容传给Scanner对象,作为扫描对象,只要对对象执行scanner.nextLine();方法即可;
Scanner可以存入字符串,输入流,文件.有了Scanner可以逐段扫描整个文本,并对扫描后的 结果进行操作
public class TestScanner(){
public static void main (String [] args){
Scanner scanner=new Scanner();
System.out.print("请输入字符串:");
//true条件循环表示程序运行过程中一直循环判断控制台输入
while(true){
String ss=scanner.nextLine();
if(ss.equals("exit")){
//System.exit(0);表示结束当前正在运行的虚拟机.0表示正常结束.非0表示异常结束.也就是整个程序终止了;
//break;表示跳出当前循环.但是程序还是真正运行的;
System.exit(0);
System.out.println("安全退出成功");
}}}}
明天计划完成的事情:明天搞tuscany
评论