JAVA基础_从psvm说起

JAVA基础

初识字符串

大多数人学习java的人第一个程序一个就是打印Hello World吧
其中最令新手头疼的就是主方法的那段代码: public static void main(String[] args){}
这段代码曾让许多人疑惑不解,为什么每个java代码的执行都要写这段代码呢?实际上这段代码的信息量 很大:

  • 1.首先它是一个主方法,所以程序执行的入口,它的方法名是不可变化的,因为JVM是通过main()这个方法名来寻找程序的入口的.
  • 2其次,这个方法是一个使用static关键字修饰的静态方法,因为程序刚开始的时候没办法先创建对象,然后在利用对象调用里面的方法,所以只能使用静态方法通过类名.方法名来调用主方法.
  • 3访问权限使用public关键字修饰主要是为了确保主方法能够被其他包下面的文件访问到.
  • 4.再看参数列表是一个String 类型名称为args的字符串数组,那个这个字符串数组是干什么用的呢?百度查询说是通过cmd命令提示符编写java程序时,在执行阶段用来接收用户从键盘录入的信息.
public class test {
	public static void main(String[] args) {
System.out.println("This a java program!");
System.out.println("arg is"+args[0]+" "+args[1]+" "+args[2]);
	}
}
C:\>javac test.java
C:\>java test a b c
This a java program!
arg isa b c
  • 在打完人生的第一个java代码后,相信很多人对String这个数据类型特别熟悉了,毕竟每个程序中都能看到它的身影.需要注意的是:String是引用数据类型,并不是基础数据类型.它的底层实现是char类型的数组,但是在jdk9之后优化为byte数组实现.
  • String类型的数据具有三大特性:
    1.不变性
    2.常量池优化
    3.final
  • 其中,在底层的String类里面,我们可以看到String是被final关键字所修饰的,所以,它具有不变性,而且不能被其他类所继承.String的不变性具体体现在引用内存地址的不可改变,当我们对一个String的类型数据进行重新赋值,并不是改变它原来的内存地址,而是将它指向另外一个内存地址.
public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];
  • 由于String的特性,频繁创建新的字符串会导致程序执行效率低下,所以,字符串常量池出现了,所以通过双引号直接赋值的字符串都会先通过String类的intern()方法判断该字符串对象的内存地址是否存在于常量池中,如果存在则返回该字符串的引用,如果不存在则将该对象添加到常量池中,并返回该对象的引用.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值