String类中的成员变量offset可以直接访问吗?

问题描述

String类中的成员变量offset可以直接访问吗?
第一次提问~
今天在看String的字符串匹配实现,看到里面有个private的成员offset。

     /** The offset is the first index of the storage that is used. */    private final int offset;

完了之后再String的一个constructor中看到了这种访问

     /**     * Allocates a new string that contains the sequence of characters     * currently contained in the string buffer argument. The contents of the     * string buffer are copied; subsequent modification of the string buffer     * does not affect the newly created string.     *     * @param  buffer     *         A {@code StringBuffer}     */    public String(StringBuffer buffer) {        String result = buffer.toString();        this.value = result.value;        this.count = result.count;        this.offset = result.offset;    }

有点乱,是不是我忽略或者理解错了什么?求大家指导

解决方案

估计是为了优化subString一类的函数而设立的。但是一般没有必要去访问offset。反射或许可以访问到。

解决方案二:
http://blog.csdn.net/arkblue/article/details/9158541
http://www.2cto.com/kf/201103/86457.html

时间: 2024-12-31 21:21:57

String类中的成员变量offset可以直接访问吗?的相关文章

变量 属性-JAVA初始块中的变量与类中的成员变量区别

问题描述 JAVA初始块中的变量与类中的成员变量区别 class Demo{ { a = 4; } int a = 6; public static void main(String[] args){ System.out.println(new Demo().a); } } 两个a是同一个变量吗? 解决方案 是同一个变量. 初始化块中指定的变量a的初始值每次都会被定义时指定的变量a的值所覆盖,因为定义变量时指定的初始值和初始化块中指定的初始值的执行顺序,跟它们在源程序中的排列顺序相同. 详细可

visual studio 2010-VS2010 MFC一个自定义类如何调用一个对话框类中的成员变量

问题描述 VS2010 MFC一个自定义类如何调用一个对话框类中的成员变量 我从一个对话框定义了几个CString类型的edit控件,我现在写一个类想调用该对话框中的创建的edit控件变量.怎么办啊 解决方案 字符串: getdlgitem(id)->getwindowtext() 数字 getdlgitemid(id) 解决方案二: 把那个对话框的CString变量变成public的,然后就可以直接用了,当然你需要先知道你那个对话框的指针. 解决方案三: 黑马程序员---定义一个包含私有成员变

在C++中 怎么在派生类中使用基类中的成员变量 例如如下代码 怎样才能使其跑起来

问题描述 在C++中 怎么在派生类中使用基类中的成员变量 例如如下代码 怎样才能使其跑起来 #include using namespace std; class love{ public: char you() { int i=87, j=74 ,k=89; char a=char(i),b=char(j),c=char(k); return 0; } }; class Me:private love{ public: Me():l(a),u(b),n(c){} char const l,u,

c#-vs2010如何在监视窗口添加类中的成员变量?

问题描述 vs2010如何在监视窗口添加类中的成员变量? vs2010如何在监视窗口添加类中的成员变量?请指教咯......... 解决方案 直接输入变量名就行,debug运行情况,设断点停下来才能设置 解决方案二: 选中该成员变量,鼠标右键,添加监视不就行了

c++ 类和对象-【C++】写在构造函数里的变量能够被同一个类中其他成员访问吗?为什么?

问题描述 [C++]写在构造函数里的变量能够被同一个类中其他成员访问吗?为什么? class rational { private: long denom,den; //denom为分子,den为分母 double a; public: rational(int n, int m) { denom=n; den=m;a=(double)denom/(double)den; //比如这里构造函数里的a能被其他成员函数访问吗?为什么? } int operator<(rational r) cons

在WinForm窗体中增加成员变量,是否需要增加构造函数?

问题描述 在WinForm窗体中增加成员变量,是否需要增加构造函数? 在WinForm窗体中定义全局成员变量,是否需要增加构造函数? 如果需要,是加在public Form1() {InitializeComponent(); }当中吗? 还是另外定义一个类,在public Form1() {InitializeComponent(); }中用new初始化? 解决方案 我觉得可以不用增加 public Form1(string field = null) { InitializeComponen

封装-java中 关于成员变量public权限的意义

问题描述 java中 关于成员变量public权限的意义 类为了封装 应该都已经讲成员变量设为private权限了 那public的意义是什么 好像看过一本c++的书 说语言发明者仅仅是为了操作简单 但是一直比较纠结 问问各位大神 解决方案 field只是不建议public,如果要public,请用方法或者属性,如果是const或者readonly的你可以考虑public出来,因为这些是不可变的

c++-C++ 类内函数以引用作为返回值(例如返回类内私有成员变量)

问题描述 C++ 类内函数以引用作为返回值(例如返回类内私有成员变量) 主函数中用参数a接受这个返回值,那么对a的改变会引起私有成员变量的改变吗? 解决方案 返回了引用就可以修改它指向的变量.这种方式通过函数来达到修改内部变量的方式.从而改变封装的行为.不过一般要清楚这么做的目的 解决方案二: 作为引用的变量,相当于一个别名:原理上是指向同一块内存,因此对引用变量的修改就会导致原始变量跟着修改. 解决方案三: 同一个对象当然会改变.通过共有方法将私有成员传出来是很常见的做法,比如设计模式中的单例

cocos2d x-cocos2d-x中的成员变量与局部变量的选用

问题描述 cocos2d-x中的成员变量与局部变量的选用 当类中一个方法需要调用另外一个方法(比如init方法)中的CCObject(比如CCSprite)变量是为什么大都选用getChildByTag的方法来调用,而不是直接把这个变量定义为类的成员? 例: 常用的方法 class A { void init(); void func(); } void A::init() { CCSprite * spr = CCSprite::create("picture.png"); ...