java中各种类型所占内存空间大小

这篇具有很好参考价值的文章主要介绍了java中各种类型所占内存空间大小。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一.常用类型占用内存大小

java中常用类型所占内存大小,以下值以实测为准。

类型

数量

大小

备注

byte

1

1B

byte

1024

1KB

int

1

4B

int

1024

4KB

boolean

1

1B

boolean

1024

1KB

double

1

8B

double

1024

8KB

long

1

8B

long

1024

8KB

float

1

4B

float

1024

4KB

char

2

2B

char

1024

2KB

Object

1

4B

对象内存地址

Object

1024

4KB

Object

1

16B

对象头

String

1

2B

在java内存中

二.String占用内存大小

接下来,我们介绍下String在 java中的内存分配的情况。

先说一下下面的几个小题目的设计用义。

首先,长度设置为64*1024,因为小于44*1024时,字符串对象不会放入堆空间,会让我们不方便统计。

其次,直接写到代码中,而不是从文件中读取,也是考虑到避免内存干扰的原因。

题目1:String在java中的内存大小

首先,我们先出这样的一题目:

public void testMemory() {
    String s = "这只一个很长的字符串,有1024长度...";//1024长度的字符串,这里就不真的打到1024长度了。
    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < 64; i++) {
        builder.append(s);
    }
}

上面的这段代码,在java内存中会申请多大的内存空间?PS:java中默认使用的是UTF-8格式。

你的第一直觉是不是1024*64*3=192KB,因为UTF-8占用三个字节嘛,但是这个答案其实是错的。

标准答案其实是128KB。java默认确实是UTF-8的格式,但是什么格式其实和在java内存中是没有关系的,java内存中String的实现是char,char占2B,所以1024*1024长度的字符串,所占的内存空间是1024*64*2B=128KB。

而UTF-8编码的作用,是在这个字符串转换成byte[]的时候生效,所以下面代码中的byte1数组所占的内存空间大小是3KB,而如果使用gbk格式转换成byte2数组,那么这个数组所占空间大小为2KB。

String s = "这只一个很长的字符串,有1024长度...";//1024长度的字符串,这里就不真的打到1024长度了。
byte[] bytes1 = s.getBytes();//默认UTF-8格式,UTF-8中种问字符或标点2B,英文符号或标点1B
byte[] bytes2 = s.getBytes("gbk");//如果使用gbk格式,中文字符或标点2B,英文符号或标点1B

题目2:String对象的实现结构

我们再出一道题,下面代码中,所占用的内存空间大小为多少?

public void testMemory() {
        String s = "这只一个很长的字符串,有1024长度...";//1024长度的字符串,这里就不真的打到1024长度了。
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < 128; i++) {
            builder.append(s);
        }
        builder.toString();
 }

你的答案是不是256KB,刚才刚刚才讲过嘛。但是这里的答案是512KB,原因是因为多了一个builder.toString()。这时候,其实等于生成一个新的String对象,这个对象中包含一个128*1024长度的char数组,所占用空间为128KB,加上原来所占用的256KB,自然就是512KB了。

我们看下相关的实现代码:

//StringBuilder类
@Override
public String toString() {
    // Create a copy, don't share the array
    return new String(value, 0, count);
}

//String类
public String(char value[], int offset, int count) {
    ...
    //下面代码完成了char数组的拷贝
    this.value = Arrays.copyOfRange(value, offset, offset+count);
}

toString的时候,新生成了一个对象,并且完成了char数组的拷贝。

题目3:扩容

最后,我们再出一道题,我们把下面的长度从128改成129,会怎样呢。答案会是2B*1024*129=258KB吗,这时候,你也许学聪明了,按照经验应该肯定不是258KB了,那应该是多少呢?

public void testMemory() {
        String s = "这只一个很长的字符串,有1024长度...";//1024长度的字符串,这里就不真的打到1024长度了。
        StringBuilder builder = new StringBuilder();
        for (int i = 0; i < 128; i++) {
            builder.append(s);
        }
}

这时候的答案其实是512KB。更精准一点的话,应该是当前builder对象中value数组的长度*2+2。

因为在我们写代码的时候,肯定做不到需要多少长度就申请多少长度。所以,StringBuilder中会有一个扩容策略,无参构造时,默认长度为16。每次扩容时,新的数组长度为oldLenght*2+2,相关如下。

//AbstractStringBuilder类中
public AbstractStringBuilder append(String str) {
    if (str == null)
        return appendNull();
    int len = str.length();
    ensureCapacityInternal(count + len);
    str.getChars(0, len, value, count);
    count += len;
    return this;
}

private void ensureCapacityInternal(int minimumCapacity) {
    // overflow-conscious code
    if (minimumCapacity - value.length > 0) {
        value = Arrays.copyOf(value,
                newCapacity(minimumCapacity));
    }
}

private int newCapacity(int minCapacity) {
    // overflow-conscious code
    int newCapacity = (value.length << 1) + 2;
    if (newCapacity - minCapacity < 0) {
        newCapacity = minCapacity;
    }
    return (newCapacity <= 0 || MAX_ARRAY_SIZE - newCapacity < 0)
        ? hugeCapacity(minCapacity)
        : newCapacity;
}

三.验证

我上面的结论,或者你不是很信服,谁知道是不是你个糟老头子来坑骗我的。又或者你就是想了解下,String在JVM中内存的真实分配情况,所以,我们就真的来做几个实验一一验证。

验证1:String占用内存=长度*2B

首先,我们配置一下虚拟机参数-XX:+PrintGCDetails,让程序运行结束时打印内存状态。

分别验证0*1024,64*1024和128*1024长度两种情况:

public void testMemory() {
    //这个字符串,长度真的是1024
    String s = "赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣";
    StringBuilder builder = new StringBuilder();
    int length = 64;//修改这里的length长度即可
    for (int i = 0; i < 64; i++) {
        builder.append(s);
    }
    //这里很关键
    System.gc();
}

这里讲一下我们为什么要主动触发一次GC。因为数组是不断扩容的,并且虚拟机也有可能在过程中产生一些临时对象,通过full GC释放掉这些临时对象的内存,强制存活对象进入老年代,避免了过程中对象内存的干扰。下同。

结果如下:

长度

ParOldGen大小(单位KB)

增长空间(单位KB)

占用空间(KB)

字符串长度

单个大小

0

381

64

509

128

128

64*1024

2B

128

641

132

256

128*1024

2B

这里381KB的内存空间为初始空间,这块空间被程序中其它的对象所占用的,我们可以看成一个常量基本不会变的。

相关运行后的内存截图:

java字符串占用的存储空间,java基础,jvm,数据结构,java,String

 

验证2:String对象的实现就是char[]

分别验证有无builder.toString()这行代码的两种场景即可。

public void testMemory() {
    //这个字符串,长度真的是1024
    String s = "赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣";
    StringBuilder builder = new StringBuilder();
    int length = 128;//修改这里的length长度即可
    for (int i = 0; i < length; i++) {
        builder.append(s);
    }
    //分别验证有没有下面这句代码两种情况
    String ss = builder.toString();//一定要加方法内对象ss,否则会被编译器优化掉不执行
    System.gc();
}

结果列表如下:

场景

ParOldGen大小(单位KB)

增长空间(单位KB)

占用空间(KB)

无builder.toString();

641

256

有builder.toString();

897

256

512

有这行代码时的内存状态:

java字符串占用的存储空间,java基础,jvm,数据结构,java,String

 

验证3:扩容

分别验证128*1024和129*1024长度两种情况即可。

public void testMemory() {
    //这个字符串,长度真的是1024
    String s = "赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣赣";
    StringBuilder builder = new StringBuilder();
    int length = 128;//修改这里的length长度即可
    for (int i = 0; i < length; i++) {
        builder.append(s);
    }
    System.gc();
}

结果如下:

长度

ParOldGen大小(单位KB)

增长空间(单位KB)

占用空间(KB)

字符串长度

128

641

256

128*1024

129

897

256

512

129*1024

所以,证明了是字符串翻倍扩容的。文章来源地址https://www.toymoban.com/news/detail-537594.html

到了这里,关于java中各种类型所占内存空间大小的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MySQL查询数据库、表以及表行数所占内存大小

    在开发中我们想知道某个数据库,或者某个数据表的内存大小,那么怎么查询呢?下面通过简单示例一一介绍,希望对您有所帮助。

    2024年02月16日
    浏览(68)
  • JVM的内存分配及各种常量池的区别(静态常量池、运行时常量池、字符串常量池)

    先了解下JVM中的内存分配,此处以hotspot vm为例(官方jdk采用的vm) 堆内存是各个线程共享的区域 它用于存储已经被虚拟机加载的类信息、常量、静态变量、即编译器编译后的代码等数据。静态变量、常量在方法区,所有方法,包括静态和非静态的,也在方法区 这里解释一下方法

    2023年04月14日
    浏览(54)
  • 结构体类型的定义及所占内存的字节数

    C 语言允许用户自定义数据类型,典型的代表就是结构体,结构体类型和数组一样,都属于构造数据类型。它们之间的不同点就在于,数组是将相同类型的数据单独放在一起来存储,而结构体允许逻辑上相关,但类型不同的数据放在一起来存储。 #include  stdio.h struct datatype

    2024年02月02日
    浏览(44)
  • Java 字符串截取方法大全,助你轻松应对各种场景

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 在 Java 开发中,经常会涉及到对字符串进行截取操作。字符串截取是一种常见且重要的字符串处理技巧,可以根据

    2024年02月16日
    浏览(46)
  • java中字母、字符串,输入小写输出大写,输入大写输出小写、大小写转换

    思路: 1、利用“大小写字母之间正好相差32”这一特点                                                       2、用  toLowerCase()、toUpperCase() 字符串自带的方法  提示: Java中没有.nextChar()。 所以要读取char,我们使用  .next().charAt(0)  1、 输入小写输

    2024年02月07日
    浏览(100)
  • Java字符串和数字类型的转换

    在Java中,数字和字符之间的转换可以通过类型转换或字符串转换实现。 一、类型转换 在Java中,数字类型可以转换为字符类型,也可以将字符类型转换为数字类型。数字类型可以使用强制类型转换将其转换为字符类型,例如: 1.数字转字符 上面的代码中,我们将数字65强制转

    2024年02月16日
    浏览(55)
  • java怎么把字符串转换成日期类型

    1、java怎么把字符串转换成日期类型 2、Java如何将指定字符串转化为指定日期格式 3、求JAVA高手解答!有关于字符串类型转换成日期型! 4、Java中怎么把字符串转换成日期格式啊 5、java中怎样将字符串转换成日期形式存入数据库 定义一个字符串类型的时间 java字符串转日期 ;创

    2024年02月06日
    浏览(52)
  • Java中如何获取一个字符串是什么类型

    在Java中,您可以使用一些方法来确定一个字符串的类型。下面是一些常用的方法: 使用正则表达式:您可以使用正则表达式来匹配字符串是否符合特定的模式或格式,以确定其类型。例如,使用matches()方法可以检查字符串是否匹配某个特定的正则表达式模式。 使用内置方法

    2024年02月09日
    浏览(42)
  • Java中字符串和日期类型的相互转换

    当在Java中进行字符串和日期类型之间的相互转换时,可以使用 SimpleDateFormat 类来实现。下面是一个详细的代码示例,展示了如何将字符串转换为日期类型,以及如何将日期类型转换为字符串。 首先,我们来看字符串转换为日期类型的示例代码: 在上述代码中,我们首先定义

    2024年02月14日
    浏览(65)
  • [正式学习java③]——字符串在内存中的存储方式、为什么字符串不可变、字符串的拼接原理,键盘录入的小细节。

    🌈键盘敲烂,年薪30万🌈 目录 一、字符串 1.字符串在内存中的存储方式 2.创建字符串对象的两种方式 3.两种创建方式的区别 4.字符串对象一旦创建不可改变 - 为什么??? 5.字符串的拼接 6.字符串的拼接原理 二、键盘录入 三、总结 🔥在java中,内存中有两个地方可以存储

    2024年02月08日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包