笔记分享第07期——Java基础语法Part6

Java 基础语法 Part6

Ayo大家好我是Tomatooo,这是我的Java学习笔记第7期,话不多说直插主题——

在有关我笔记分享的博文中,我都会将MD笔记文件另外发布,方便朋友们下载学习。本期笔记文件下载地址:https://download.csdn.net/download/lbwnbnbnbn/15406191
不想去CSDN下载的朋友也可以看我独立博客中Milestone里发布的百度网盘下载地址

字符和字符串

字符类型char

字符类型char是基本数据类型之一,是character的缩写。

一个char保存一个Unicode字符。

Java在内存中总是使用Unicode表示字符,一个英文字符和一个中文字符都用一个char类型表示,它们都占用两个字节。

如果要显示一个字符的Unicode编码,只需将char类型直接赋值给int类型即可。

示例:

int c1 = 'A'//字母“A”的Unicodde编码是65

int c2 = '中'// 汉字“中”的Unicode编码是20013

还可以直接用转义字符\u+Unicode编码来表示一个字符:(“这里注意Unicode编码是16进制”)

char c3 = '\u0041'; // 'A',因为十六进制0041 = 十进制65
char c4 = '\u4e2d'; // '中',因为十六进制4e2d = 十进制20013

字符串类型

字符串类型String不是基本数据类型而是引用类型,用双引号表示字符串。一个字符串可以存储任意个字符。

注意:Java是大小写敏感的,StringS一定要大写

那么如何将含有双引号的字符赋值给String类型呢?

String s = "Java is" the best language."//这里会报错,因为编译器不知道双引号从那里结束

这时候就要用到转义字符\

String s = "Java is \" the best language."

这样就不会报错了。

常见的转移字符有:

  • \" 表示字符"
  • \' 表示字符'
  • \\ 表示字符\
  • \n 表示换行符
  • \r 表示回车符
  • \t 表示Tab
  • \u#### 表示一个Unicode编码的字符

那么如何连接字符串呢?

Java的编译器对字符串做了特殊照顾,可以使用+连接任意字符串和其他数据类型

如果用+连接字符串和其他数据类型,会将其他数据类型先自动转型为字符串,再连接

public class Main {
    public static void main(String[] args) {
        int age = 25;
        String s = "age is " + age;
        System.out.println(s);
    }
}

怎样表示多行字符串呢?

如果我们要表示多行字符串,使用+号连接会非常不方便,从Java 13开始,字符串可以用""" """表示多行字符串(Text Blocks)了

示例:

public class Main {
    public static void main(String[] args) {
        String s = """
                    Java
                    Is
                    The
                    Best
                    Language
                   """;
        System.out.println(s);
    }
}

上述多行字符串实际上是6行,

如果我们不想多这一行,就需要把后面的"""与上面代码中的"Language"放在同一行。

还需要注意到,多行字符串前面共同的空格会被去掉。如果多行字符串的排版不规则,那么总是以最短的行首空格为基准。

字符串的不可变特性

Java的字符串除了是一个引用类型外,还有个重要特点,就是字符串不可变。

public class Main {
    public static void main(String[] args) {
        String s = "hello";
        System.out.println(s); // 显示 hello
        s = "world";
        System.out.println(s); // 显示 world
    }
}

s这个变量看似是变了,对不对?实则不然,是变量s的指向变了。

执行String s = "hello";时,JVM虚拟机先创建字符串"hello",然后,把字符串变量s指向它:

      s
      │
      ▼
┌───┬───────────┬───┐
│   │  "hello"  │   │
└───┴───────────┴───┘

紧接着,执行s = "world";时,JVM虚拟机先创建字符串"world",然后,把字符串变量s指向它:

      s ──────────────┐
                      │
                      ▼
┌───┬───────────┬───┬───────────┬───┐
│   │  "hello"  │   │  "world"  │   │
└───┴───────────┴───┴───────────┴───┘

原来的字符串"hello"其实还在,只是我们无法通过变量s访问它而已。因此,字符串的不可变是指字符串内容不可变。

空值

引用类型的变量可以指向一个空值null,它表示不存在,即该变量不指向任何对象。

注意要区分空值null和空字符串"",空字符串是一个有效的字符串对象,它不等于null

看都看到这儿了,不去Github给我个Star嘛(~ ̄▽ ̄)~

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值