正文之前
顺利接到Dad,急匆匆赶回来,看下一章吧!!异常处理个人感觉后面不会用到很多,默认的那些报错的内容就够我学的了。还是抓紧把Java的flag砍翻吧。
正文
第一点:String是不变的!!
第二点:意外收获:Java不允许重载
之前我还一直奇怪,作为Java的经典书籍《Java编程思想》居然没有重载这一节??soga,估计是为了安全考虑
第三点: String+的实质:
可以把String看做是一个字符元素char的数组,或者是基于容器的序列。
第四点:我最期待的格式化字符串
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();
}
}
第五点:正则表达式
这个不消多说,以前就有说明的:
【计算机本科补全计划】Java学习笔记(十) Java 正则表达式
而且菜鸟教程的后面也有很多的!!
正文之后
不写了,不写了!!我自己能够吸收的东西真的不多。而且很多东西记下来过几天就忘了,也没什么用。干脆就懒得看了,写的话也不写了,要用的时候再直接翻吧。也请大家我要用那种死记硬背的方式来学这个。看过一遍之后大概懂一下就行了。现在那么多编辑器那么多生产环境IDLE,不要强行让自己的大脑来负担那么大的记忆量对不?