您好,登錄后才能下訂單哦!
本篇文章為大家展示了Java中怎么自動填充SQL語句的公共字段,內容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細介紹希望你能有所收獲。
比如下面這些:
1、使用對比
接下來我們就使用對比的方式,來體會一下 var 的作用。
場景一:定義字符串
舊寫法:
String str = "Hello, Java.";
新寫法:
var s = "Hello, Java.";
PS:這里的舊寫法指的是 JDK 10 之前的版本,而新寫法指的是 JDK 10 以后(包含 JDK 10)的版本。
場景二:數值相加
舊寫法:
int num1 = 111; double num2 = 555.666d; double num3 = num1 + num2; System.out.println(num3);
PS:當遇到不同類型相加時(int+ double)會發生數據類型向上轉型,因此 num3 就會升級為 double 類型。
新寫法:
var n1 = 111L; var n2 = 555.666; var n3 = n1 + n2; System.out.println(n3);
場景三:集合
舊寫法:
List<Object> list = new ArrayList<>(); list.add("Hello"); list.add("Java");
新寫法:
var list = new ArrayList<>(); list.add("Hello"); list.add("Java");
場景四:循環
舊寫法:
for (Object item : list) { System.out.println("item:" + item); } for (int i = 0; i < 10; i++) { // do something... }
新寫法:
for (var item : list) { System.out.println("item:" + item); } for (var i = 0; i < 10; i++) { // do something... }
場景五:配合 Lambda 使用
舊寫法:
List<Object> flist = list.stream().filter(v -> v.equals("Java")).collect(Collectors.toList()); System.out.println(flist);
新寫法:
var flist = list.stream().filter(v -> v.equals("Java")).collect(Collectors.toList()); System.out.println(flist);
2、優點分析
通過上面的示例我們可以看出, var 具備兩個明顯的優點:提高了代碼的可讀性和命名對齊。
① 提高了可讀性
我們在沒有使用 var 之前,如果類型的名稱很長就會出現下面的這種情況:
InternationalCustomerOrderProcessor<AnonymousCustomer, SimpleOrder<Book>> orderProcessor = createInternationalOrderProcessor(customer, order);
當限定每行不能超過 150 個字符的話,變量名就會被推到下一行顯示,這樣整個代碼的可讀性就變得很低。但當我們使用了 var 之后,代碼就變成了這樣:
var orderProcessor = createInternationalOrderProcessor(customer, order);
從上述的代碼可以看出,當類型越長時,var(可讀性)的價值就越大。
② 命名對齊
在不使用 var 時,當遇到下面這種情況,代碼就是這樣的:
// 顯式類型 No no = new No(); AmountIncrease<BigDecimal> more = new BigDecimalAmountIncrease(); HorizontalConnection<LinePosition, LinePosition> jumping = new HorizontalLinePositionConnection(); Variable variable = new Constant(6); List<String> names = List.of("Java", "中文社群");
在使用了 var 之后,代碼是這樣的:
var no = new No(); var more = new BigDecimalAmountIncrease(); var jumping = new HorizontalLinePositionConnection(); var variable = new Constant(6); var names = List.of("Java", "中文社群");
從上述代碼可以看出使用了 var 之后,命名對齊了,整個代碼也變得更優雅了。
3、使用規則 & 反例
var 的實現來自于 JEP 286 (改善提議 286),詳情地址 :http://openjdk.java.net/jeps/286
從 JEP 286 的標題“局部變量類型推斷”可以看出,var 只能用于局部變量聲明,也就是說 var 必須滿足以下條件:
它只能用于局部變量上;
聲明時必須初始化;
不能用作方法參數和全局變量(類變量)。
PS:因為 var 的實現必須根據等會右邊的代碼進行類型推斷,因此它不能被賦值 null 或不被初始化。
反例一:未初始化和賦值 null
反例二:中途類型更改
反例三:全局變量
反例四:作為返回值
4、原理分析
經過前面的使用我們對 var 已經有了初步的認識,但 var 的實現原理是什么呢?
為了搞清楚它的原理,我們對下面的代碼進行了編譯(使用命令 javac MainTest.java):
然后我們再用反編譯工具打開被編譯的類發現:var 竟然被替換成一個個確定的數據類型了,如下圖所示:
由此我們可以得出結論:var 關鍵字的實現和它的名字密切相關, var 只是局部類型推斷,它只會在 Java 編碼期和編譯期有效,當類被編譯為 class 文件時,var 就會變成一個個確定的數據類型(通過推斷得出)。 所以我們可以把 var 通俗的理解為 Java 的語法糖,使用它可以讓我們快速優雅的實現業務代碼,但 var 在字節碼層面是不存在的。
上述內容就是Java中怎么自動填充SQL語句的公共字段,你們學到知識或技能了嗎?如果還想學到更多技能或者豐富自己的知識儲備,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。