美文网首页计算机杂谈程序员大数据
【寒假学Java】String来了!!!

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

作者: 张照博 | 来源:发表于2018-02-03 22:33 被阅读205次

    正文之前

    顺利接到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来了!!!

        本文链接:https://www.haomeiwen.com/subject/ogouzxtx.html