当前位置:首页 » 存储配置 » javastring存储

javastring存储

发布时间: 2022-08-22 23:11:24

java中string使用什么来存储字符串

java中输入的字符串主要是使用scanner类来接收用户从键盘输入的数值

㈡ Java:在Java中String是以Unicode保存的吗

字符串在java内存中总是按unicode编码存储的。比如"中文",正常情况下(即没有错误的时候)存储为"4e2d 6587",如果charset为"gbk",则被编码为"d6d0 cec4",然后返回字节"d6 d0 ce c4".如果charset为"utf8"则最后是"e4 b8 ad e6 96 87".如果是"iso8859-1",则由于无法编码,最后返回 "3f 3f"(两个问号)。

java虚拟机采用UCS2(通用字符集)标准保存字符,所有的字符在内存中都是2个字节,这样虚拟机处理字符串的截取、长度和判断都非常容易。其他语言如PHP、Python也是,在运行时采用固定长度存储字符。
相对应编译后的class,java规定采用UTF-8保存,因为大部分是英文字符,只有一个字节,可以大量节省存储空间。

㈢ java 中如何保存String的值

首先 你要把这些信息保存到哪里?如果只是保存到一个txt文件中,非常简单
import java.io.*;
import java.util.*;

import com.ufoo.portal.utils.IDMaker;
public class Information
{
private Properties setting;
private File file;
private String userName ="admin"; //默认属性 用户名和密码
private String passwd="123456";
public Information()
{

setting = new Properties();
try
{
file = new File("D:\\sims_log\\","log.txt"); //创建文件log.txt 自己在D盘把sims_log 文件夹建好
if(!file.exists()) //若文件不存在
{
File parentDir=new File(file.getParent());
if(!parentDir.exists())
{
parentDir.mkdirs();
}
file.createNewFile(); //新建
}
setting.load(new FileInputStream(file)); //载入文件
}
catch(Exception e)
{
}
setInformation(userName,passwd); //调用存储属性方法
}
public void setInformation(String UserName,String passwd)
{
try{

setting.setProperty("user name", UserName); //存储用户名 每个属性对应一个键 例如用户名的键就是 user name
setting.setProperty("password", passwd); //存储密码
setting.store(new FileOutputStream(file), ""); //保存到文件 "log.txt"
}
catch(Exception e)
{
e.printStackTrace();
}
}
public String getInformation(String UserNameKey)
{
return setting.getProperty(UserNameKey); //获得用户名
}
public static void main(String args[])
{
Information info=new Information();

info.setInformation("123123","12345"); //设置用户名和密码
System.out.println("the user name is:"+info.getInformation("user name"));//这里user name是键名,打印出用户名
info.setInformation("lisi","12345"); //设置用户名和密码
System.out.println("the user name is:"+info.getInformation("user name"));//这里user name是键名,打印出用户名
}
}

㈣ Java中String字符串的存储大小也就是容量是多少呢能存多少字符。

String str="abc...";这样定义的字符串是存在字符串池中的
String str=new String("abc...")这样定义的字符串是在堆内存中的,然后被栈内存的对象str引用
所以字符串是对象,是在内存中存储的,不像基本数据类型有各自的长度,字符串应该是只要是内存不满,是没有长度限制的

㈤ Java有没有安全的string存储

有的,StringBuffer 就是线程安全的

㈥ java中String类型存储位置

一、new String都是在堆上创建字符串对象。
当调用 intern() 方法时,
编译器会将字符串添加到常量池中(stringTable维护),
并返回指向该常量的引用。

二、通过字面量赋值创建字符串(如:String str=”twm”)时,
会先在常量池中查找是否存在相同的字符串,若存在,
则将栈中的引用直接指向该字符串;若不存在,则在常量池中生成一个字符串,
再将栈中的引用指向该字符串。

三、常量字符串的“+”操作,
编译阶段直接会合成为一个字符串。
如string str=”JA”+”VA”,
在编译阶段会直接合并成语句String str=”JAVA”,
于是会去常量池中查找是否存在”JAVA”,从而进行创建或引用。

四、对于final字段,编译期直接进行了常量替换(而对于非final字段则是在运行期进行赋值处理的)。
final String str1=”ja”;
final String str2=”va”;
String str3=str1+str2;
在编译时,直接替换成了String str3=”ja”+”va”,根据第三条规则,
再次替换成String str3=”JAVA”

五、常量字符串和变量拼接时(如:String str3=baseStr + “01”;)
会调用stringBuilder.append()在堆上创建新的对象。

六、JDK 1.7后,intern方法还是会先去查询常量池中是否有已经存在,
如果存在,则返回常量池中的引用,这一点与之前没有区别,
区别在于,如果在常量池找不到对应的字符串,则不会再将字符串拷贝到常量池,
而只是在常量池中生成一个对原字符串的引用。简单的说,就是往常量池放的东西变了
原来在常量池中找不到时,复制一个副本放到常量池,1.7后则是将在堆上的地址引用复制到常量池。

举例说明:

String str2 = new String(“str”)+new String(“01”);
str2.intern();
String str1 = “str01”;
System.out.println(str2==str1);

在JDK 1.7下,当执行str2.intern();时,
因为常量池中没有“str01”这个字符串,所以会在常量池中生成一个对堆中的“str01”的引用
(注意这里是引用 ,就是这个区别于JDK 1.6的地方。在JDK1.6下是生成原字符串的拷贝),
而在进行String str1 = “str01”;字面量赋值的时候,常量池中已经存在一个引用,
所以直接返回了该引用,因此str1和str2都指向堆中的同一个字符串,返回true。

String str2 = new String(“str”)+new String(“01”);
String str1 = “str01”;
str2.intern();
System.out.println(str2==str1);

将中间两行调换位置以后,因为在进行字面量赋值(String str1 = “str01″)的时候,
常量池中不存在,所以str1指向的常量池中的位置,而str2指向的是堆中的对象,
再进行intern方法时,对str1和str2已经没有影响了,所以返回false。

㈦ java中String类型的数据分配多少字节

Java中无论是汉字还是英文字母都是用Unicode编码来表示的,一个Unicode码是16位,每字节是8位,所以一个Unicode码占两字节。但是英文字母比较特殊,源自于8位(1字节)的ASCII吗,于是在Unicode码仅使用了低8位(1字节)就可以表示,高8位的话不使用也无所谓。所以
char
c='a';
System.out.println(c.getBytes().lenth()),得到的是1(字节)
但汉字就完整地使用了16位(2字节)的Unicode,所以
char
c='中';
System.out.println(c.getBytes().lenth()),得到的是2(字节)
综上,c='a'在内存中确实只占1字节,但这不意味着String
s="abc"在内存中只占3字节。应该这么说,String
s="abc"至少在内存中占3字节。这是因为char是基本数据类型,而String确是对象类型。

㈧ java的String存储中文的时候 存的是什么,是按照什么编码方式存储的

String在内存中是以UCS-2编码或者叫UTF-16的早期版本存储。

当写入文件可以用其他指定的编码,比如GB2312,GBK,BIG5等。

㈨ java中的String常量是存放在栈中还是堆中

系统内存一般情况来说分为四个
heap 堆 放 对象 也就是new 出来的东西
stack 栈 放局部变量
static segment 静态区 用来放 静态变量 和字符串常量
data segement 代码区 用来放代码的

如果 一个字符串是 String s = "abc";它放在栈里
如果一个字符串 用创建对象的方式 String s = new String("abc");
那它是放在了 堆里 而如果单纯的 一个 "abc" 这个输入字符串常量 是放在static segement里

热点内容
明日之后目前适用于什么配置 发布:2024-12-23 14:56:09 浏览:50
php全角半角 发布:2024-12-23 14:55:17 浏览:825
手机上传助手 发布:2024-12-23 14:55:14 浏览:729
什么样的主机配置吃鸡开全效 发布:2024-12-23 14:55:13 浏览:827
安卓我的世界114版本有什么 发布:2024-12-23 14:42:17 浏览:707
vbox源码 发布:2024-12-23 14:41:32 浏览:274
诗经是怎么存储 发布:2024-12-23 14:41:29 浏览:656
屏蔽视频广告脚本 发布:2024-12-23 14:41:24 浏览:416
php解析pdf 发布:2024-12-23 14:40:01 浏览:815
多看阅读上传 发布:2024-12-23 14:34:05 浏览:176