Java常见语法糖

语法糖定义

语法糖(英语:Syntactic sugar)是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。
语法糖是啥?语法糖没有一个官方的定义(或者说定义相当宽泛),更像是一种观念:任何让你写着爽、但是实际发生的和你看到的不一样的东西都可以“被认为”是语法糖。例如最常见的Integer和int的自动装拆箱操作背后就是语法糖。看上去你在写。
Java中很常见的Foreach就属于语法糖的一个例子。
Foreach语法常用语数组和容器,不必使用下标来访问其中的元素,foreach将自动产生每一项。

public class ForeachTest2
{
   
    public static void main(String[] args)
    {
   
        String arr[] = {
   "hello","world"};
        for(String s:arr)
        {
   
            System.out.println(s);
        }
    }
}

以上代码通过编译将会转化为:
public class ForeachTest2
{
   
    public ForeachTest2()
    {
   
		super();
    }
    public static void main(String[] args)
    {
   
        int arr[] = {
   1,2};
        int [] arr$ = arr;
        for(int len$ = arr$.length, i$ = 0; i$<len$; ++i$ )
        {
   
            int i = arr$[i$];
            {
   
                System.out.println(i);
            }
        }
    }
}
可以看得出通过编译,编译器将 for(String s:arr)语句转化为我们平时常用的
for(int len$ = arr$.length, i$ = 0; i$<len$; ++i$ )去访问数组数组元素。
但平时访问数组使用Foreach语句更为简洁,提供了跟for(;;)相似的功能。

*********简单来说就是使用简单的语法来表达复杂的功能。

除了能让程序员方便使用的功能,当然也有让程序复杂的语言特性。语法盐就是一个例子。
语法盐(英语:syntactic salt)指的是让写出坏代码更难的语法特性。这些特性强迫程序员做出一些基本不用于描述程序行为,而是用来证明他们知道自己在做什么的额外举动。

Java语法糖

语法糖虽然不会提供实质的功能改进,但是它能方便程序员的开发。语法糖只存在于编译器。在编译器讲 .java文件编译成.class文件时,会进行语法糖的转换操作,将语法糖还原成原来的基础语法结构,实现基于编译器的新语法。 总而言之,语法糖可以看做是编译器实现的一些小把戏,这些小把戏会使程序员更加简单地进行程序开发,使得程序更加简洁,更具有可读性。
对于语法糖更多的知识,Java更底层的东西,建议大家多看看JVM的知识,看完会让大家对于Java的理解更上一层。时间多的话一定要看《深入理解Java虚拟机》!

Java语法糖常见类型

常见的八个Java语法糖
说明:在作者进行反编译时使用的是IDEA自带的反编译器,即直接点击.class文件获得反编译后的文件。后面会写一期IDEA如何如何进行反编译。

字符串拼接

Java拼接字符串主要有“+”号操作符,StringBuilder, StringBuffer,String 类的 concat 方法, String 类的 join 方法。
使用"+“号去拼接多个字符串是我们平时用的最多的一种方法,没有之一。那么对于”+"号拼接字符串时,编译器是如何处理的呢?

public static void main(String[] args) {
   
        String s1 = "hello";
        String s2 = "world";
        String s3 = s1 + s2;
    }
经过反编译转化为
public class Model {
   
    public Model() {
   
    }
    public static void main(String[] args) {
   
        String s1 = "hello";
        String s2 = "world";
        (new StringBuilder()).append(s1).append(s2).toString();
    }
}
可以看得出,编译器将字符型拼接转化为一个StringBuilder对象使用append()方法进行拼接

Switch语句

switch语句中的case标签可以为:

  • 类型为char,
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java语法糖是指Java语言中为了更方便开发者使用而提供的一些特性,这些特性本质上并不会改变Java语言的运行机制,而是通过编译器或运行时库等方式将这些语法糖转换为Java语言本身能够识别的代码。这些语法糖的目的是为了简化代码的写法,让代码更易于理解和维护。 一些典型的Java语法糖包括: - 自动装箱与拆箱:可以在Java代码中直接使用基本数据类型,而无需手动创建对应的包装类对象。 - for-each循环:可以直接遍历数组或集合中的所有元素,而无需使用下标或迭代器。 - 可变参数列表:可以将一组参数封装为数组传递给方法,而无需手动创建数组。 - Lambda表达式:可以创建简单的匿名函数,而无需定义单独的函数对象。 这些语法糖都是在编译期间转换为Java语言本身的特性,因此不会对程序的性能造成影响。 ### 回答2: Java语法糖是指在Java编程语言中的一些语法上的改进和简化,它使得代码更加易读、简洁和易于理解。语法糖不是新增加的语言功能,而是对现有功能的语法上的改良。 一个常见Java语法糖是自动装箱和拆箱。在Java 1.5之前,基本类型(如int、float等)和它们对应的包装类(如Integer、Float等)之间不能直接进行赋值或比较操作,需要通过手动装箱和拆箱的方式。但通过语法糖的改进,现在可以直接在基本类型和对应的包装类之间进行自动转换,使得代码更加简洁和优雅。 另一个例子是增强的for循环。在Java 1.5之前,遍历数组或集合需要使用传统的for循环,并且需要手动获取和指定迭代器。而通过语法糖的改进,现在可以使用更加简洁的增强的for循环,将原始的方法调用、初始化和变量声明过程都隐藏在背后,使得代码更加易读和简洁。 还有一些其他的语法糖,如可变参数、枚举类型、Lambda表达式等,它们都是通过简化和优化语法上的表示方式,提高代码的可读性和可维护性。 需要注意的是,尽管语法糖使得代码更加简洁,但底层执行的逻辑并没有改变。编译器会将语法糖转换为等价的原始代码,然后再进行编译和执行。所以在阅读和理解代码时,还是需要了解底层的语言特性和实现细节。 ### 回答3: Java语法糖是一种语法的简化形式,它能够使得代码更加易读易写,并且不会增加程序的运行效率。 在Java语言中,有些常见的操作会使用较为繁琐的语法去实现,为了简化这些操作的写法,Java引入了语法糖语法糖并不是一种新的特性或者语法规则,而是一种编译器提供的功能,可以将一些常见的代码模式转化为更简洁的语法结构。 常见Java语法糖包括自动拆装箱、泛型、枚举类型、增强的for循环以及可变参数等。通过使用这些语法糖,可以使得代码更加简洁易读,并且减少了一些常见错误的发生。 比如,自动拆装箱允许我们在基本类型和包装类型之间进行自动的转换,不需要手动进行转换操作。使用泛型可以在编译时进行类型检查,避免了类型转换的错误。枚举类型提供了更好的可读性和类型安全性。增强的for循环可以简化对数组和集合的迭代操作。可变参数允许我们以更方便的方式传递不定数量的参数。 尽管语法糖提供了更加简洁的写法,但是在编译过程中,这些语法糖都会被转化为等价的标准Java代码,所以对于程序的运行效率没有实质的影响。 总的来说,Java语法糖使得代码更加易读易写,并且减少了一些常见错误的发生,提高了程序的可维护性和开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值