我因为对Java这种语言比较感兴趣,所以决定自学JAVA,不过在初期就遇到了两个问题:第一个是代码点和代码单元的问题。UTF-16编码算法的介绍看得我是晕晕乎乎的,只知道基本的多语言级别是用一个代码单元表示,辅助字符是用一对代码单元表示……举一段具体的代码当例子吧~
String greeting ="Hello";
int index = greeting.offsetByCodecPoints(0,1);
char cp = greeting.charAt(index);//char cp = e, and int cp = 101①String类的offsetByCodePoints方法是做什么用的?API文档中的解释我看不太明白,谁可以帮我具体解释一下吗?
②cp变量,声明char类型就是一个字母【e】 但是声明int类型就是101…… ASCII码?代码点还有代码单元不都是UTF-16的么?第二个问题就是“文件的输入与输出”。首先我不明白为什么要读取文件以及读取文件的作用是什么,其次我也不清楚如何自己确定输出文件中的内容。自己写的下面的这段代码只能够输出一个0KB的指定文件名文件……import java.io.*;
import java.util.*;
public class FileOpt
{
public static void main(String[] args) throws FileNotFoundException
{
PrintWriter out = new PrintWriter("test.txt");
String ChineseDate = String.format("%1$s%5$tY%2$s%5$tm%3$s%5$td%4$s %5$tA","今天是","年","月","日", new Date());
String ChineseTime = String.format("%1$s%2$tT","现在时刻 北京时间", new Date());
out.println(ChineseDate);
out.println(ChineseTime);
out.println("abc");
}
}
上面这段代码(不要说我闲大了没事用一大串printf来试验,只是因为我之前写了几个printf的,而且都已成功编译运行 - -)会输出一个空白的test.txt,我想问的是,PrintWriter这个命令到底是干什么用的?最下面那几行out...那些用得对吗?我几乎没有编程经验,在编程这方面是一个十足的菜鸟,还请各位大虾耐心解答赐教哈~^_^
String greeting ="Hello";
int index = greeting.offsetByCodecPoints(0,1);
char cp = greeting.charAt(index);//char cp = e, and int cp = 101①String类的offsetByCodePoints方法是做什么用的?API文档中的解释我看不太明白,谁可以帮我具体解释一下吗?
②cp变量,声明char类型就是一个字母【e】 但是声明int类型就是101…… ASCII码?代码点还有代码单元不都是UTF-16的么?第二个问题就是“文件的输入与输出”。首先我不明白为什么要读取文件以及读取文件的作用是什么,其次我也不清楚如何自己确定输出文件中的内容。自己写的下面的这段代码只能够输出一个0KB的指定文件名文件……import java.io.*;
import java.util.*;
public class FileOpt
{
public static void main(String[] args) throws FileNotFoundException
{
PrintWriter out = new PrintWriter("test.txt");
String ChineseDate = String.format("%1$s%5$tY%2$s%5$tm%3$s%5$td%4$s %5$tA","今天是","年","月","日", new Date());
String ChineseTime = String.format("%1$s%2$tT","现在时刻 北京时间", new Date());
out.println(ChineseDate);
out.println(ChineseTime);
out.println("abc");
}
}
上面这段代码(不要说我闲大了没事用一大串printf来试验,只是因为我之前写了几个printf的,而且都已成功编译运行 - -)会输出一个空白的test.txt,我想问的是,PrintWriter这个命令到底是干什么用的?最下面那几行out...那些用得对吗?我几乎没有编程经验,在编程这方面是一个十足的菜鸟,还请各位大虾耐心解答赐教哈~^_^
常用的字(不是char)是落在一個范圍內的,不常用的就是由這個范圍以外的兩個unicode組成,也就是兩個char,看明白了這個再去翻書。printwriter嘛,你問的問題也蠻奇怪的,讀取文件名,當然是要確定存儲介質的位置了,不然你到底是要存入內存還是文件還是管道還是哪?省下的我就真不知道咋回答你了。okb文件在哪里?最后嘛,要檢驗你的內容是否正確,你單獨打印一下不就知道了。
如果是個空白的,又沒報錯,你是不是應該考慮把字符流給關閉下下呢?或者刷新刷新?
小同志,api要適當的計,如果沒記住,那就是理解得不夠了。。
out.close();//关闭
Java是纯面向对象的,new一个对象以后,会有一堆方法让你调用,这个都是API封装好的
当然,你可以自己设计自己的class和方法,不过都是从Object类继承而来
书上有char类型的介绍,感觉那里面说的有点模糊,反正晕晕的okb文件是什么意思?那些内容都是之前打印过的~~确实只是输出了一个空白的文件也没出现错误。。
public int offsetByCodePoints(int index,
int codePointOffset)返回此 String 中从给定的 index 处偏移 codePointOffset 个代码点的索引。注意上面的代码点,可以理解为一个完整的Unicode.
java中的String是utf-16实现的.utf-16只是Unicode实现中的一种
而在java中,int是32,char是16,可以理解为offsetByCodePoints(起始,偏移)是把
固定的的字符由16转向32
可以参考Unicode4或更高版本.
满足下面3中情况,你的txt里能有文字
1).Buffer满了,就输出
2).启用自动提交(找不好的词了)..
3).flush
import java.io.*;
import java.util.*;
public class FileOpt
{
public static void main(String[] args) throws FileNotFoundException
{
PrintWriter out = new PrintWriter("test.txt");
String ChineseDate = String.format("%1$s%5$tY%2$s%5$tm%3$s%5$td%4$s %5$tA","今天是","年","月","日", new Date());
String ChineseTime = String.format("%1$s%2$tT","现在时刻 北京时间", new Date());
out.println(ChineseDate);
out.println(ChineseTime);
out.println("abc");
out.flush();
}
}我在后面加了一个out.flush(); 输出地就不是空白的啦~谢谢各位^_^再问一下,为什么int cp = greeting.charAt(index);,打印出来的cp值是101?
cp取出来是'e',ascii码值表示是101