正文之前
顺利接到 Dad, 急匆匆赶回来, 看下一章吧!! 异常处理个人感觉后面不会用到很多, 默认的那些报错的内容就够我学的了. 还是抓紧把 Java 的 flag 砍翻吧.
我个人觉得封面还是得好好对待的
正文
第一点: String 是不变的!!
我是淫荡的分割线!~ mmp 这话从哪儿学来的来着?
第二点: 意外收获: Java 不允许重载
之前我还一直奇怪, 作为 Java 的经典书籍 Java 编程思想居然没有重载这一节??soga, 估计是为了安全考虑
我是淫荡的分割线!~ mmp 这话从哪儿学来的来着?
第三点: String + 的实质:
可以把 String 看做是一个字符元素 char 的数组, 或者是基于容器的序列.
我是淫荡的分割线!~ mmp 这话从哪儿学来的来着?
第四点: 我最期待的格式化字符串
Java 通过格式化类 Formatter 来进行字符串的格式化输出. 这是我在这一个章节里面最期待的东西. 因为原生的字符串输出实在是太难控制了. 尤其是当输出的格式不唯一的时候. 当位数会影响到格式, 简直就是灾难.
import java.util.Formatter;
public class TestFormat {
/**
* %[argument_index$][flags][width][.precision]conversion
* 具体的参数解释, 可以查看对应的 API
*/
private static double total = 0 ;
private static Formatter formatter = new Formatter(System.out);
public static void printTitle(){
formatter.format("%-15s %-5s %-10s\n", "Item","Qty","Price");
formatter.format("%-15s %-5s %-10s\n", "-----","---","----");
}
public static void print(String name,int qty,double price){
formatter.format("%-15s %-5d %-10.2f\n", name,qty,price);
total += price ;
}
public static void printTotal(){
formatter.format("%-15s %-5s %-10.2f\n", "Tex","",total*0.6);
formatter.format("%-15s %-5s %-10s\n", "","","-----");
formatter.format("%-15s %-5s %-10.2f\n", "Total","",total*1.6);
}
public static void main(String[] args) {
printTitle();
print("apple", 3, 2.5);
print("orange", 1, 1.2);
print("banana", 10, 0.5);
printTotal();
// 任何类型都可以 b(布尔类型) 进行转换, 只有为 null 的时候返回 false
formatter.format("%b\n", 0);
formatter.format("%b\n", "");
formatter.format("%b\n", null);
// 如果只是简单的字符串格式化, 可以使用 String.format
// 其内部实现 new Formmatter 对象
System.out.println(String.format("%-15s %-5s %-10s", "我可以","做","一样的事情"));
}
}
The Result :
/Users/zhangzhaobo/program/java/TestFormat.java:35: 警告: 最后一个参数使用了不准确的变量类型的 varargs 方法的非 varargs 调用;
formatter.format("%b\n", null);
^
对于 varargs 调用, 应使用 Object
对于非 varargs 调用, 应使用 Object[], 这样也可以抑制此警告
1 个警告
Item Qty Price
----- --- ----
apple 3 2.50
orange 1 1.20
banana 10 0.50
Tex 2.52
-----
Total 6.72
true
true
false
我可以 做 一样的事情
[Finished in 1.7s]
在我看来. 不甚成功, 因为后面汉字简直失败好么??? 我的也是啊!!
欢迎颜雨薇同学光临我们的 Shop System
1. Sign in the Shop System!
2. Sign up the Shop System!
3. Exit The Shop System!
Please Input Your Action: 1
欢迎颜雨薇同学光临我们的 Shop System
1. Please Input Your Account : none
2. Please Input Your Password : none
ID NAME PRICE DISC NUM=0?
1 猪肉 10 1.0 还有货!
2 牛肉 20 1.0 还有货!
3 羊肉 15 1.0 还有货!
4 水饺 8 1.0 还有货!
5 大蒜 2 1.0 还有货!
6 肉丸子 20 1.0 还有货!
输入商品数字, 即可购买, 翻页输入 0, 上页 - 1, 退出输入 1000:
娘的, 偏的好严重啊, 但是我明明算是很规范了.
public static void Show_Goods_List(int Start_id,int Stop_id){
try {
mysql.Connect();
Statement statement=mysql.getStatement();
if(Start_id>Stop_id){
int tmp=Start_id;
Start_id=Stop_id;
Stop_id=tmp;
}
String sql = "select good_id,good_name,price,discount,Is_Empty from Goods where good_id<="+Stop_id+"and good_id>="+Start_id+" ";
ResultSet rs;
rs = statement.executeQuery(sql);
String good_name="";
int good_id=0,price=0;
float discount;
String Is_Empty=" ";
Formatter f=new Formatter(System.out);
f.format("%10s %10s %10s %10s %10s\n","ID","NAME","PRICE","DISC","NUM=0?");
while(rs.next()) {
good_id=rs.getInt("good_id");
price=rs.getInt("price");
good_name=rs.getString("good_name");
if(rs.getBoolean("Is_Empty")){
Is_Empty="! 卖断了!";
}
else{
Is_Empty="还有货!";
}
discount=rs.getFloat("discount");
f.format("%10d %10s %10d %10.1f %10s\n",good_id,good_name,price,discount,Is_Empty);
}
rs.close();
mysql.Dis_Connect();
} catch (SQLException e) {
e.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
}
}
我是淫荡的分割线!~ mmp 这话从哪儿学来的来着?
第五点: 正则表达式
这个不消多说, 以前就有说明的:
[计算机本科补全计划] Java 学习笔记 (十) Java 正则表达式
而且菜鸟教程的后面也有很多的!!
正文之后
不写了, 不写了!! 我自己能够吸收的东西真的不多. 而且很多东西记下来过几天就忘了, 也没什么用. 干脆就懒得看了, 写的话也不写了, 要用的时候再直接翻吧. 也请大家我要用那种死记硬背的方式来学这个. 看过一遍之后大概懂一下就行了. 现在那么多编辑器那么多生产环境 IDLE, 不要强行让自己的大脑来负担那么大的记忆量对不?
来源: http://www.jianshu.com/p/ef25bc4fc66f