语法糖(Syntactic sugar)
是由英国计算机科学家彼得·约翰·兰达(Peter J. Landin)发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程序代码出错的机会。
功能和传统的fori相似
代码样例
public class Test {
public static void main(String[] args) {
int[] num = new int[10];
for (int i = 0; i < 10; i++) {
num[i] = i;
}
//旧版本
for (int i = 0; i < num.length; i++) {
System.out.print(num[i]+" ");
}
System.out.println();
//新版本
for (int i:num) {
System.out.print(num[i]+" ");
}
}
}
输出对比
0 1 2 3 4 5 6 7 8 9
0 1 2 3 4 5 6 7 8 9
特性
变量的取值只在一个有限的集合里面
代码样例
public class Test {
public static void main(String[] args) {
enum Size{
SMALL,MEDIUM,LARGE;
}
Size s1 = Size.SMALL;
Size s2 = Size.MEDIUM;
Size s3 = Size.LARGE;
Size s4 = Size.SMALL;
System.out.println(s1==s4);
System.out.println(s3==s4);
}
}
输出样例
true
false
特性
普通函数的形参列表是固定个数/类型/顺序
JDK5.0提供了不定项参数(可变参数)功能
代码样例
public class Test {
public static void main(String[] args) {
test("aaa");
test("aaa","bbb","ccc");
}
public static void test(String... args){
System.out.println(args.length);
for (String arg:args) {
System.out.println(arg);
}
}
}
输出样例
1
aaa
3
aaa
bbb
ccc
特性
import导入程序所需要的类
import static导入一个类的静态方法和静态常量(JDK5.0引入)
代码样例
import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
import static java.lang.System.out;
public class Test {
public static void main(String[] args) {
int a=3,b=4,c=0;
//静态引入
c = (int) sqrt(pow(a,2)+pow(b,2));
//原本用法
c = (int) Math.sqrt(Math.pow(a,2)+Math.pow(b,2));
//静态引入
out.println(c);
//原本用法
System.out.println(c);
}
}
输出样例
5
5
特性
在java中,基本类型放在栈里面,对象则是在堆里开辟了内存空间,把对象的引用存入栈里面,基本类型可以包含在对象里面,所以形象的形容为装箱
从JDK5.0开始引入,简化了基本类型和对象转化的写法
基本类型:boolean/byte/char/int/short/long/float/double
对象:Boolean/Byte/Character/Integer/Short/Long/Float/Double
代码样例
public class Test {
public static void main(String[] args) {
//自动装箱
Integer obj1 = 5;
//原始用法
Integer obj2 = Integer.valueOf(5);
//自动拆箱
int a1 = obj1;
//原始用法
int a2 = obj2.intValue();
System.out.println(obj1);
System.out.println(a1);
System.out.println(obj2);
System.out.println(a2);
}
}
输出样例
5
5
5
5
特性
多个异常并列在一个catch中
从JDK7.0Y引入,简化写法
代码样例
import java.io.IOException;
import java.sql.SQLException;
public class Test {
public static void main(String[] args) {
//旧版本
try {
test();
}
catch (IOException ex){
//异常处理
}
catch (SQLException ex){
//异常处理
}
//新版本
try {
test();
}
catch (IOException | SQLException ex){
//异常处理
}
}
private static void test() {
}
}
特性
从JDK7.0开始引入
整数类型可以用二进制进行赋值
代码样例
public class Test {
public static void main(String[] args) {
byte a1 = (byte) 0b00100001;
short a2 = (short) 0b10101010101;
int a3 = 0b101;
long a4 = 0b101010101011011011010101011L;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
}
}
输出样例
33
1365
5
89503403
特性
从JDK7.0开始引入
在数字字面量中使用下划线
代码样例
public class Test {
public static void main(String[] args) {
//二进制,0b开头
int a1 = 0b0100_1011_0001;
//八进制,0开头
int a2 = 02_014;
int a3 = 123__45;
//十六进制,0x开头
int a4 = 0x7_567;
float a5 = 3.56_78f;
System.out.println(a1);
System.out.println(a2);
System.out.println(a3);
System.out.println(a4);
System.out.println(a5);
}
}
输出样例
1201
1036
12345
30055
3.5678
特性
java最初的设计中,接口的方法都是没有实现的公开的
JDK8.0推出接口的默认方法/静态方法(都带实现的),为Lambda表达式提供支持
代码样例
public class Test {
public interface Animal{
public void move();
}
public interface NewAnimal{
public default void move(){
System.out.println("I can move");
};
}
}
特性
JDK8.0推出带实现的静态方法
代码样例
public class Test {
public interface StaticAnimal{
public static void move(){
System.out.println("I can move");
}
}
public interface StaticLandAnimal extends StaticAnimal{
//继承不到StaticAnimal的move方法
}
public static void main(String[] args) {
//正确引用
StaticAnimal.move();
//错误引用
StaticLandAnimal.move();
new StaticAnimal().move();
}
}
特性
JDK9.0推出接口的私有方法
代码样例
public class Test {
public interface StaticAnimal{
private void move(){
System.out.println("I can move");
}
}
public interface StaticLandAnimal extends StaticAnimal{
//继承不到StaticAnimal的move方法
}
public static void main(String[] args) {
//错误引用
StaticAnimal.move();
StaticLandAnimal.move();
new StaticAnimal().move();
}
}
特性
程序如果打开外部资源,那么使用后必须正确关闭
考虑异常因素,java提供try-catch-finally进行保证
JDK7.0提供try-with-resour,比try-catch-finally更加方便
代码样例
public class Test implements AutoCloseable {
private int age = 18;
@Override
public void close() throws Exception {
System.out.println("关闭成功");
}
public static void main(String[] args) {
try(Test11 OpenResource = new Test()){
System.out.println(OpenResource.age);
} catch (Exception e) {
e.printStackTrace();
}
}
}
输出样例
18
关闭成功
特性
JDK8及以前,ResourceBundle默认以ISO-8859-1方式加载文件
JDK9及以后,ResourceBundle默认以UTF-8方式加载文件
java以前一直是一种强类型的语言
每个变量在定义时候就确定了类型
JDK10推出了var:局部变量推断
代码样例
public class Test {
public static void main(String[] args) {
var a1 = 5;
var a2 = 0.025f;
var a3 = "abc";
int b1 = 5;
float b2 = 0.025f;
String b3 = "abc";
System.out.println(a1==b1);
System.out.println(a2==b2);
System.out.println(a3==b3);
}
}
输出样例
true
true
true
特性
JDK12推出
代码样例
public class Test {
public static void main(String[] args) {
String month = null;
int result;
switch (month){
case "Jan","Mar","July","Aug","Oct","Dec" -> result = 31;
case "Apr","June","Sep","Nov" -> result = 30;
case "Feb" -> result = 28;
default -> result = -1;
}
}
}
https://www.cnblogs.com/lenmom/p/9138827.html
rap2-javabean1.使用方式注意:引入该插件后,将集成lombok,接口参数校验,需要先安装lombok插件.在resource目录下配置rap.properties###### cooikekoa.sid=EljUmooFFMzg1y9tnSWa45gbXydNAPZ-koa.sid.sig=9TBKH7eQiHZluN38jCjsbjHEww0###### 要生成文件的相对包路径pa...
I cannot access some of https resources. Please help to make https calls reliable. Examples I put here tested from Firefox browser, to ensure they are works properly.$ java -versionopenjdk version "1....
文章目录一、引言二、整体结构三、版本和名称四、查找相关包五、catkin_package()六、添加头文件路径和库路径6.1 头文件路径6.2 库路径七、 指定目标及其源文件7.1 构建可执行文件作为目标7.2 构建库作为目标八、 添加依赖关系九、设置install一、引言ROS使用cmake来编译代码,cmake首先会一步一步处理CMakeLists.txt的内容,然后生成一个MakeFil...
1.1 系统架构一个Tair集群主要包括3个必选模块:configserver、dataserver和client,一个可选模块:invalidserver。通常情况下,一个集群中包含2台configserver及多台dataServer。两台configserver互为主备并通过维护和dataserver之间的心跳获知集群中存活可用的dataser...
点击新增行按钮前:点击新增行按钮后:前端实现代码:<button class="layui-btn layui-btn-sm" data-type="reload" onclick="addFunctionModule()" lay-event="addFunctionModule">新增行</button>/** * 新增行*/addFunctionModule = function ...
Docker Engine - Enterprise enables native Docker containers on Windows Server. Windows Server 2016 and later versions are supported. The Docker Engine - Enterprise installation pa...
一、基本概念Oracle可以将联机日志文件保存到多个不同的位置,将联机日志转换为归档日志的过程称之为归档。相应的日志被称为归档日志。只有在归档的模式下才能触发归档操作。其实理解归档日志很简单,redo log file会把所有的操作全部记下来,但是日志组会覆盖(循环),那么我们把redo log file全部保存下来,换句话说就是归档。就有了归档日志。当然这里就要启用归档模
Windows 8.1之系统镜像备份功能(2)2、 系统恢复 说明:系统恢复可以通过进入系统进行恢复或者使用系统引导光盘启动进行恢复。 (1)进入系统恢复方法:1) 打开控制面板---文件历史记录,选择恢复2) 选择开始系统还原 3) 下一步 4) 选择还原点 5) 点击完成。注意:进入系统后进行系统还原,系统保护中保护功能必须打开。 进行系统还原尽量关闭杀毒软件...
vue3 使用 vue.config.js 配置使用scss全局变量记录学习和开发中遇到的问题或难题刚开始我在网上查找了许多资料,都是需要什么安装安装 sass-resources-loader 和配置什么乱七八糟的,我没有尝试过,因为我觉得根本不需要这么麻烦通过查阅资料和尝试,我发现只要在 vue.config.js 配置一下就可以了,我配置的环境是 vue3,但是我觉得 vue2 也应该适用,废话不多说,配置如下:module.exports = { css: { requ
1、CS与BS 软件使用方式上两种划分 C/S架构 Client/ServerPC客户端、服务器架构 特点: 在服务器当中就主要是一个数据库,把所有的业务逻辑以及界面都交给客户端...
摘要白嫖好用的新浪微博头条自动外推发帖引蜘蛛工具软件下载地址http://www.bytepan.com/BSiR0VIQaZR软件截图软件说明【需要新浪微博账号,授权号大部分没有发布的权限,不可使用】【如果是cookie登陆,需要纯Cookie格式,不带账号密码】【账号格式转换工具:http://tool.haooyou.com/str/zh】【账号登陆需要代理或宽带换IP,cookie登陆不需要】【收录时间和文章很关键,好的文章,收录会更多,更稳定】【在发头条不收录的时