通过System.out.println() 理解static关键字

每学习一门语言的都是都是打印输出一句Hello World,当然Java也不例外。

public static void main(String[] args) {
    System.out.println("Hello World!");
}

进入正题吧!怎么理解static关键字。

static:如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。(截取百度百科的一句话)

在学习过程中,想要使用一个类中的方法或属性,一般都需要通过new关键字来实例化这个类。那不一般的情况就是使用static关键字定义这个类中的方法或属性。
例如在JDK源码中的System类中有个静态常量out,如下图:
System类源码

public final static PrintStream out = null;

这也就是说我们为什么可以写成:

System.out

因为,out被static修饰,调用时无需通过new关键字创建对象,而可以直接使用类名调用。
那后面println等等的方法是怎么回事呢?
那是因为out常量的类型是PrintStream类型,out是PrintStream的一个对象,自然可以调用其自身的方法。
相当于

System.out.print();         System.out.print();
       ||                          ||
东海龙王任务.降水.下雨();      东海龙王任务.降水.下雪();

如有错误,请指正。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这段代码有一些语法错误,应该是这样的: ``` public class Test { public static void main(String[] args) { String s1 = "ab12"; String s2 = "ab" + "12"; String s3 = "ab12"; String s4 = new String("ab") + "12"; s3 = s3 + "c"; System.out.println(s1 == s2); System.out.println(s2 == s3); System.out.println(s1 == s4); System.out.println(s3 == s4); } } ``` 这段代码主要是对字符串的比较和连接进行测试。其中 `s1`、`s2`、`s3`、`s4` 都表示字符串,它们的值分别为 `"ab12"`、`"ab12"`、`"ab12c"`、`"ab12"`。这里有一些需要注意的点: 1. 在 Java 中,字符串的比较不能使用 `==`,应该使用 `equals` 方法。因为 `==` 比较的是对象的引用,而不是对象的值。所以,`s1 == s2` 和 `s1 == s4` 的结果都是 false,因为 `s2` 和 `s4` 是通过 new 关键字创建的新的 String 对象,而 `s1` 是直接赋值的字符串常量。而 `s2 == s3` 和 `s3 == s4` 的结果都是 false,因为 `s3` 和 `s4` 是通过字符串连接得到的新的字符串对象,而不是同一个对象。 2. 字符串是不可变的,即一旦创建了一个字符串对象,它的值就不能被改变。所以,对字符串进行连接操作时,实际上是创建了一个新的字符串对象。 3. `new String("ab")` 和 `"ab"` 都是表示字符串 `"ab"` 的方式,但是它们的区别在于,前者会创建一个新的 String 对象,而后者会使用字符串常量池中已经存在的对象。一般来说,应该尽量使用字符串常量,而不是通过 new 关键字创建新的对象。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值