【寒假学Java】String来了!!!

正文之前

顺利接到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,不要强行让自己的大脑来负担那么大的记忆量对不?

你可能感兴趣的:(【寒假学Java】String来了!!!)