Java新人,关于String类中,private final char value[],到底是数组本身不可变还是数组中的值不可变

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java新人,关于String类中,private final char value[],到底是数组本身不可变还是数组中的值不可变相关的知识,希望对你有一定的参考价值。

/** The value is used for character storage. */
private final char value[];

你这个是在读jdk的源码吧?
String类在底层就是靠char数组来存储实现的,char数组,就是一个数组他是不变的,当你对一个字符串(String)操作的时候,比如:“a”+"b"实际上是两个char数组分别存储a和b,然后一个数组存储结果ab。String是不可改变的,任何时候出现新的String一定是重新创建的。同时,string会放到常量区,而且只会存在一个实例。可以多个引用指向他
参考技术A value这个数组的引用不可变 参考技术B 数组中的内容可变追问

那为啥String是不可变的

追答

所有修改方法都返回一个新的String

关于java编程的问题:一个类调用另一个类中构造方法中所定义的参数。

参考技术A 关于java编程的问题:一个类调用另一个类中构造方法中所定义的参数。 类中构造方法中所定义的参数一般是属于类的属性,都是定义为private的,所以无法直接获取或者操作类的属性,但是可以通过类的get和set方法,间接获取和操作类的属性。以下为set和get方法示范:<pre t="code" l="java">public int getA()
return a;

public void setA(int a)
this.a = a;

C#中结构中构造方法定义的问题
共同点:
都是实例化对象,初始化数据的
默认构造是说所有的类都从祖先object那继承了空参的构造方法,你不写与写空参构造都存在,而有参数的构造一般是自己写的,写就有不写就没有,它的作用和空参的一样,只是它里面可以有参数,给你个例子来说明吧
有一个类Monitor它有属性String height;String
width
public Monitor()
public Monitor(String height,String width)
有一个空参的一个有参的构造的方法
在main方法里我做初始化动作
Monitor monitor=new Monitor();
这个构造只是把显示器这个对象创造出来了,它的属性就没有值,也可以再手动给它赋上值
如:monitor.height=100;
monitor.width=200;
用有参的就不一样了,少很多事
Monitor monitor2=new Monitor("100","200");
在这里我只要把想放进去的参数直接放进去就能给我的属性赋上值,是不是省了很多事?
这就是它的优势!
回答完结!
构造函数 是一种特殊的方法 主要用来在创建对象时初始化对象 即为对象成员变量赋初始值
总与new运算符一起使用在创建对象的语句中 特别的一个类可以有多个构造函数 可根据其参数个数的不同或参数类型的不同来区分它们 即构造函数的重载
构造函数与其他方法的区别
1.构造函数的命名必须和类名完全相同;而一般方法则不能和类名相同.
2.构造函数的功能主要用于在类的对象创建时定义初始化的状态.它没有返回值,也不能用void来修饰.这就保证了它不仅什么也不用自动返回,而且根本不能有任何选择.而其他方法都有返回值.即使是void返回值,尽管方法体本身不会自动返回什么,但仍然可以让它返回一些东西,而这些东西可能是不安全的.
3.构造函数不能被直接调用,必须通过new运算符在创建对象时才会自动调用,一般方法在程序执行到它的时候被调用.
4.当定义一个类的时候,通常情况下都会显示该类的构造函数,并在函数中指定初始化的工作也可省略不去Java编译器会提供一个默认的构造函数.此默认构造函数是不带参数的.而一般方法不存在这一特点
简单的来说构造函数就是用来创建对象用的,说的专业些叫实例化对象。
定义:
class A

public A()

使用:
A a=new A();在这里,A()就是就是构造函数。
需要注意的一点是,如果类里面没有定义构造函数,编译器也会自动生产一个空构造函数,类的各个成员都赋上默认值。
但是如果在类里面只定义了一个私有的构造函数的时候,那么这个类将不能被实例化。
class A

string a;
private A() 这个类不能被实例化

如果我们定义了带参数的构造函数,而没有定义不带参数的构造函数,那么在实例化这个类的对象的时候必须提供参数。
class A

string a;
public A(string str) a=str;

不能这么实例化对象 A a=new A(); 构造函数分为动态构造函数和静态构造函数。
动态构造函数是类或结构实例化时,为其分配内存空间,完成类或结构当中成员变量的初始化工作。动态构造函数可以重载,即相同构造函数名称拥有不同类型和数目的多个构造函数。带参数的构造函数和不带参数的构造函数没有本质区别,带参数的构造函数可以通过传入的变量控制或者直接初始化其中的成员变量,在构造函数中可以为成员变量初始化默认值。
静态构造函数不允许携带参数,即一个类中只允许有一个静态构造函数。它在第一次访问静态成员或者第一次实例化动态该类的对象之前调用。
关于Java中构造方法的问题
可以,一般都用,单例用private
java中一个类想调用另一个类中定义的面板怎么调用
将主面板传递给一个类,在这个类中将主面板上的将你想要的面板一层一层剥下来,并获得它,然后在你想要的面板上做操作。
注意:主面板上放的是一个ponent数组
在类中的构造方法修改一变量,怎样在另一个类构造方法中调用这个变量的值java
public class Test

int a = 0;
public Test()

a = 1;


public class Test1

Test t;
public Test1()

t = new Test();
System.out.println(t.a);

public static void main(String args[])

new Test1();



急!Java编程:定义一个类用main方法和构造方法怎么写?
public class Dog
String color;
Dog(String color)
this.color=color;

public String toString()
return "yellow dog";

public static void main()
Dog d=new Dog("yellow");
System.out.println(d);


Java中构造方法何时被调用
新建一个对象时被调用。也就是new的时候;
如:
public class A
int i;
String c;
public A() 无参构造方法
public A(int i,String c)

this.i = i;
this.c = c;
两参构造方法
public static void main(String[] args)
A a = new A() ;调用了无参构造方法;

A a1 = new A(5,"vieri");调用了两参构造方法


java 一个类中怎么调用另一个类方法中 变量
方法变量是局部变量,没办法访问,但是传出来!
public class 局部变量 public static void main(String[] args) System.out.println("\n\t\t==========局部变量==========\n"); init(); 初始化! private static void init() int a=new A().show(); System.out.println(a);结果是10 测试类!class A int show() int a=10; return a;

java类中构造方法可以私有化吗
您好,构造方法私有化,也就是说,这个类的构造方法是私有的。比如:
public class Person
private String name;
Private Person(String Name) 私有的构造方法
this.name = name;


我们不能在外部实例化这个Person对象的类!
比如:
Public Class TestPerson
public static void main(String args[])
Person per = new Person(); 此步是错误的!因为你已经将person类的构造方法设置为
private 了


如果我们想在Person类的外部使用Person类的对象,只能在person类的内部实例化一个Person类的对象,然后调用这个对象,而不能再外部实例化新的对象。
public class Person
private String name;
Private Person newPerson; Person类唯一的实例化对象
Private Person(String Name) 私有的构造方法
this.name = name;

newperson = new Person("百度知道");
Public Person getInstance() 将newperson返回给外部调用处!
return newperson;


外部的Person类的所有对象只能是对Person内部newperson对象的引用。
外部一千一万个对象也都只能是对Person内部newperson对象的引用。
因为外部定义的Person类对象没有实例化能力。这就是单例设计模式,从头至尾只有一个对象的实例(单例)

以上是关于Java新人,关于String类中,private final char value[],到底是数组本身不可变还是数组中的值不可变的主要内容,如果未能解决你的问题,请参考以下文章

JAVa类中默认的成员变量的访问权问题

java类中的get,set属性的作用

关于Java中四种修饰符

java面试 - 关于String

关于Java中内省的总结

关于java编程的问题:一个类调用另一个类中构造方法中所定义的参数。