avatar
n*n
1
【 以下文字转载自 Fashion 讨论区 】
发信人: nightquietsn (nightquietsnow), 信区: Fashion
标 题: 绽放的心
发信站: BBS 未名空间站 (Thu Nov 10 02:57:45 2011, 美东)
刚刚做的吊坠,手边的石头不多,捡了一些配起来比较和谐的,做了一个以前一直不敢
尝试的Cluster,上面的小宝石是烟晶,白水晶,紫水晶,绿水晶,黄水晶,粉玉髓,
青堇石,一颗小swa,下面是swa的D2U Heart。这个吊坠也算白搭吧,本来冷色调暖色
调都有,一年四季都可以戴了。
avatar
w*h
2
立秋刚过,这天气越发的沉闷了,日头早被遮死了,天上那片雨云厚的竟似看不到底,
忽地狂风掠过,风后便是雨,细微而至淋漓,又至瓢泼,夹伴着闷雷轰鸣,疯了般扑向
人间,似要决绝的把这天地扫个干净。
今上不在帝都,朝廷的老爷们便也不用上朝,索性整日介到衙门点卯厮混,有这雨拦着
,想来也没人到府上寻门路办事,老爷们关了窗,闭了门,咒骂了两句,便搂着小妾快
活去了。帝都本来楼子极多,楼里的姑娘不绣花,做的却是绣花针的生意,所谓只要功
夫深,铁棒磨成针,想来这功夫还是不错的,只是前些年里六扇门不知道发了甚么疯,
把帝都楼子里的姑娘们都逐了出去,这大雨天里,小民们无处可去,只好躲在家中,想
到此事便暗地里的骂那朝廷里的狗官都是一水儿的王八,这吹皱一池春水,干卿屌事?
人家楼子里的姑娘们都是些正经人,舍了力气,赚的是辛苦银子,总强过狗官们浑不要
脸的闷声发大财。又想想这几年日子越发难熬,前些年这朝廷尚是金玉其外败絮其中,
现如今竟是里外都烂透了,不由的心生烦闷,遂扯过自家婆娘孩子,打个几巴掌解闷儿。
这北国的风雨未怎么扰了帝都,却苦了几百里外赶路的人。北戴河的官道上,行来一路
人马,赤衣赤甲赤鞍赤马,连那足下的官靴都是赤色的,当头一骑,手捧一杆大旗,本
是亮红色的,被雨浸透,颜色也渐渐的重了起来,瞧来却就黑了,左右侍卫持了镰刀铁
锤紧随其后,簇拥着一辆奢华官轿。那官轿内里别有洞天,虽不甚宽绰,却也雅致。桌
椅式样深沉稳重,花纹古雅静穆,木质颜色已然黑了,竟是番邦朝贡的黄花梨木。湖笔
徽墨宣纸端砚,文房四宝一应俱全,鱼儿龙里冲的是极品的大红袍,两人各置一边,瞧
那官服上的锦鸡,这二位竟是朝中的大员,一人长脸凤目,鹰视狼顾,一脸的飞扬跋扈
,正是西南薄督,另一人却圆脸阔鼻,满面谄媚,却是钦命东南总督、加大都督衔的俞
总督,此刻正满面堆笑,边饮边说:
“这十几日不见皇上,太师宰相六部尚书们也不在京,偏生朝廷的邸报里只字不提,百
姓们颇为好奇,有那不晓事的,便胡说甚么今上要废太子,却反被六部挟了太子逼宫,
又说丞相吓尿了裤子,哭的梨花带雨,还说甚么南粤的汪大都督心生不忿,欲进京勤王
……那酒肆茶馆,勾栏瓦市,处处皆议,沸沸扬扬,越发传的不堪了,倒也有那忠心的
奴才,对圣上好生惦念,有几个思之甚切,没了皇上竟不知该怎么活了,听了那流言登
时大怒,哭了几次,又自发的结社驳斥流言,听刑部的人说,帝都这阵子总有百姓为此
打架……”
“唔,风起于青萍之末,今上离开帝都久了,坊间自然会有些反应”,薄督不置可否,
伸手倒了杯茶,轻轻置于对方面前:“俞世兄怕是漏了句话:‘西南大都督薄久有不臣
之心,招兵买马,意图不轨’,是也不是?”
那俞督哈哈大笑:“果然瞒不得你!贤弟坐拥西南,遥祭太祖,红歌教主何等雄名!竟
把西南大都督的名声掩了,这满朝文武、亿兆百姓谁不侧目?只是……”他圆脸上闪过
一丝疑惑,“太祖文韬武略,天纵其才,却是个众叛亲离的独夫,穷兵黩武,好大喜功
,骄奢淫逸……凡此种种,自太宗朝便有定论,贤弟是聪明人,现下这朝中各路人马角
力,为兄知你惯是个不让人的主儿,所谋甚大,但借此凶行这般手段,你便有机会更上
一步?”。
薄督冷哼一声:“难道我不行这般手段,便有机会了吗?不过死马当活马医罢了,这三
十二省督抚领大都督衔的,算上你我在内,只有六人,这六人里面,你我份属同门,自
不必说,那姓汪的仗着是天子门生,一向傲慢,我在西南拔了他的旧部,这厮便一直怀
恨在心,一旦今上逊位,这厮便要入朝,这尚书的位子总免不了。今太上病危,皇上又
下了一步好棋,揪了赖大还朝,登时朝野震动,虽不至于鱼死网破,敲山震虎总是有的
,遍观太上皇旧部,因赖大之事,太子惶恐,不敢多言,太保太保,自身难保,吏部的
爷唯唯诺诺,刑部那位只知捞钱,那礼部的主子惯是个见风使舵的主,太师久居高位,
地位最是超然,出出主意还行,这浑水他是决计不肯趟的,这朝中竟无人可以指望。宰
相和这天下官员不同路,又是个惯会邀清名的烂好人,不提也罢。今番这小朝会便是到
了短兵相接的时候了,你我皆是太上皇一手栽培,这等旧臣,皆是今上眼里那结党营私
的乱臣贼子,纵使你我想罢手,那些对头肯吗?太上一旦殡天,树倒猢狲散,待得明年
大朝会,人为刀俎我为鱼肉,到得那时,俞世兄可有良策应对?我这确是旁门左道,但
这乱拳打死老师傅的事,嘿嘿,当今太上,不就成例在先?此番鹿死谁手,尚不可知”。
俞总督喟然长叹:“贤弟所言甚是,罢了罢了,你我两代的交情,我今日便是来讨个主
意的,这东南大都督也做的实在乏味,为官四载,朝野竟是骂声一片。就此一搏,或许
还有几年的尚书可做,明哲保身,怕是这个位子也没了,现如今你我便联手搅上一搅,
这水浑了兴许就能摸两条鱼”。
二人思及前程,皆默然不语,各自沉思,一行人马肃然前行,那雨下得正紧,却听见前
方一阵骚乱,有侍卫戟指怒喝:“乱枪开道,挑了这拦路的贼厮”。却听对方大笑:“
薄都督,数年不见,便是这番对待故人的吗?”
那薄督皱皱眉头,挺身下轿,早有侍卫举了高伞候着,定睛看去,只见数十人抬着一顶
金丝无顶小轿,只在上面覆了几丈的遮雨银缎,这般布置竟似是出门赏雨来了,轿上一
人安居其上,笑道:“非是愚兄不肯下来,实是不良于行,薄贤弟,别来无恙啊”。
那薄督却也笑了,一揖到底:“邓世兄别来无恙,真真想煞小弟了”。
avatar
f*g
3
ArrayList s = new ArrayList();
s.add("abcd");
s.get(0)应该返回reference of the String object, 为啥不能直接s.get(0) = “”
, 而是需要s.set(0,“”)
avatar
n*n
4
发现SWA这几个都适合跟小石头做Cluster
avatar
z*e
5
s是一个reference,存在stack里面
指向heap里面的一块
s.get的值存在stack里面
你让s.get(0) = ""
其实修改的是stack里面的值
=就是给stack里面的一个位置赋值
而你要修改的list对象体存在heap里面
包括第一个位置的reference值
修改stack有啥意义?
avatar
n*n
6
又来要包子啦~~~~
avatar
z*e
7
s.get(0)其实是一个内存地址
就是一个reference,不是一个变量
s.get(0) = ""毫无意义
reference value = another reference value?
avatar
k*y
8
发啦发啦, 做得很PP!!!
avatar
f*g
9
谢谢,但是还是confuse
s.get(0)返回的是指向heap中一个内存区块吧?存的是那个string object
avatar
n*n
10
谢谢版版^-^

【在 k*******y 的大作中提到】
: 发啦发啦, 做得很PP!!!
avatar
B*t
11


【在 z****e 的大作中提到】
: s是一个reference,存在stack里面
: 指向heap里面的一块
: s.get的值存在stack里面
: 你让s.get(0) = ""
: 其实修改的是stack里面的值
: =就是给stack里面的一个位置赋值
: 而你要修改的list对象体存在heap里面
: 包括第一个位置的reference值
: 修改stack有啥意义?

avatar
C*e
12
很漂亮阿!
mm SWA的小石头哪儿买的?
avatar
r*y
13
你这个问题其实跟ArrayList无关,这里的关键是,array[i]是一个variable,它可以
用来做lvalue,而s.get(i)是一个value,它不能用来做lvalue。所以你不能把s.get(i)
当作array[i]来看。

【在 f*****g 的大作中提到】
: 谢谢,但是还是confuse
: s.get(0)返回的是指向heap中一个内存区块吧?存的是那个string object

avatar
n*n
14
【 以下文字转载自 Fashion 讨论区 】
发信人: nightquietsn (nightquietsnow), 信区: Fashion
标 题: 绽放的心
发信站: BBS 未名空间站 (Thu Nov 10 02:57:45 2011, 美东)
刚刚做的吊坠,手边的石头不多,捡了一些配起来比较和谐的,做了一个以前一直不敢
尝试的Cluster,上面的小宝石是烟晶,白水晶,紫水晶,绿水晶,黄水晶,粉玉髓,
青堇石,一颗小swa,下面是swa的D2U Heart。这个吊坠也算白搭吧,本来冷色调暖色
调都有,一年四季都可以戴了。
avatar
g*g
15
You can do
s.get(0).setXXX if setXXX is availalbe for the object. String is immutable
and doesn't have such function.

【在 f*****g 的大作中提到】
: 谢谢,但是还是confuse
: s.get(0)返回的是指向heap中一个内存区块吧?存的是那个string object

avatar
n*n
16
发现SWA这几个都适合跟小石头做Cluster
avatar
f*g
17
s.get(i)返回的不是指向那个String object的reference吗?

(i)

【在 r****y 的大作中提到】
: 你这个问题其实跟ArrayList无关,这里的关键是,array[i]是一个variable,它可以
: 用来做lvalue,而s.get(i)是一个value,它不能用来做lvalue。所以你不能把s.get(i)
: 当作array[i]来看。

avatar
n*n
18
又来要包子啦~~~~
avatar
r*y
19
没错,返回的是一个reference,但关键问题是,这个reference是一个value,不是一个
variable,它不能拿来做assignment expression的左边来指向另一个值。它唯一的功能
是向你提供它指向的object的值。

【在 f*****g 的大作中提到】
: s.get(i)返回的不是指向那个String object的reference吗?
:
: (i)

avatar
k*y
20
发啦发啦, 做得很PP!!!
avatar
d*i
21
rodney说得是对的,get()返回的是rvalue,不能作为lvalue来赋值。而a[i]就不一样
了,既可以作rvalue,又可以做lvalue,你看一下C++的
const T& get() const;

T& get() const;
就知道不同之处了,Java的底层就是C++写的, 所以是同一个道理。

【在 f*****g 的大作中提到】
: ArrayList s = new ArrayList();
: s.add("abcd");
: s.get(0)应该返回reference of the String object, 为啥不能直接s.get(0) = “”
: , 而是需要s.set(0,“”)

avatar
n*n
22
谢谢版版^-^

【在 k*******y 的大作中提到】
: 发啦发啦, 做得很PP!!!
avatar
l*n
23
@Test
public void testAssign(){
class Foo{
private String bar;
public String getBar() {
return bar;
}
public void setBar(String bar) {
this.bar = bar;
}
}
Foo foo = new Foo();
foo.setBar("foobar");
// foo.getBar() = "foobarfoo"; IDE will complain lacking lvalue
String s = foo.getBar();
s = "foobarfoo";
Assert.assertTrue(!s.equals(foo.getBar()));
}
avatar
C*e
24
很漂亮阿!
mm SWA的小石头哪儿买的?
avatar
r*y
25
是这么回事。有意思的是,java里不讲lvalue和rvalue,用的是variable和value这两
个词。JLS里说variable指的是一个存储地址及其相关类型,或者叫编译类型。(4.12)
variable是用来hold一个value的。而return expression返回的一定是个value。(14.
17)

【在 d****i 的大作中提到】
: rodney说得是对的,get()返回的是rvalue,不能作为lvalue来赋值。而a[i]就不一样
: 了,既可以作rvalue,又可以做lvalue,你看一下C++的
: const T& get() const;
: 和
: T& get() const;
: 就知道不同之处了,Java的底层就是C++写的, 所以是同一个道理。

avatar
i*a
26
太美了!!!!!!!!!!
avatar
r*y
27
一般会报:required variable, found value

【在 l**********n 的大作中提到】
: @Test
: public void testAssign(){
: class Foo{
: private String bar;
: public String getBar() {
: return bar;
: }
: public void setBar(String bar) {
: this.bar = bar;
: }

avatar
n*n
28
那些小的不是swa,是真的半宝石,从etsy上买的,呵呵

【在 C*******e 的大作中提到】
: 很漂亮阿!
: mm SWA的小石头哪儿买的?

avatar
d*i
29
哈哈,不知道还有这个讲法,学习了。

【在 r****y 的大作中提到】
: 是这么回事。有意思的是,java里不讲lvalue和rvalue,用的是variable和value这两
: 个词。JLS里说variable指的是一个存储地址及其相关类型,或者叫编译类型。(4.12)
: variable是用来hold一个value的。而return expression返回的一定是个value。(14.
: 17)

avatar
g*z
30
问一下MM是用什么cord个体怎样把这些小石头串起来的呢?谢谢!

【在 n**********n 的大作中提到】
: 那些小的不是swa,是真的半宝石,从etsy上买的,呵呵
avatar
z*e
31
你把java的stack&heap好好看看
s.get(0)是一个reference value
这个reference value就是内存中的heap的一个地址
比如heap里面有一个内存块,地址是0xaabbcc88
那么这个值存在stack里面,对应着一个variable,比如s
当你要用这个s的时候,就从stack里面找到这个地址
然后根据这个地址去找heap的那个内存块,然后读取heap内存块里面的各种值
值得注意的是,这个heap块本身,也可能存放有其他heap块的地址
比如如果s里面存放各种变量的其实是一个array,array[0]就是一个variable
这个variable就有一个存放地址的部分,这个部分指向另外一个heap内存块
这个heap内存块是string也就可能是""
这里面array本身也是一个heap块
所以s.get(0)其实是先从stack中找到s在heap中的地址
然后从s在heap中的地址找到array在heap中的地址,然后再从array在heap中的地址中
找到第一个变量的地址,然后找到这个变量在heap中的位置,然后读取值
这里指针指来指去,很容易晕,而arraylist本身是抽象化后实现高级逻辑的结果
你问的问题涉及jvm和arraylist本身的实现,非常底层的问题
不是那么容易回答的

【在 f*****g 的大作中提到】
: 谢谢,但是还是confuse
: s.get(0)返回的是指向heap中一个内存区块吧?存的是那个string object

avatar
z*e
32
楼主先把
s = ""是怎么回事想明白
s.charAt(0)这个整个内存逻辑怎么实现想出来再说
arraylist的实现要在这个基础上复杂两层
avatar
c*h
33
String is immutable, so you can't use assignment operation to change the
value.
avatar
r*y
34
你这个例子举得不错,还可以更清楚一点,别用String,随便换一个自定义的class比如
二维平面点Point,那么问题就很明白,跟String无关,跟ArrayList无关。
换一句大白话说:
任何一个java method的返回结果都不是variable,而只有variable才能够作为
assignment等号的左边。

【在 l**********n 的大作中提到】
: @Test
: public void testAssign(){
: class Foo{
: private String bar;
: public String getBar() {
: return bar;
: }
: public void setBar(String bar) {
: this.bar = bar;
: }

avatar
z*e
35
上张图
avatar
z*e
36
avatar
f*g
37
ArrayList s = new ArrayList();
Point t = new Point();
t.x = 3;
t.y = 4;
s.add(t);
s.get(0).x = 4;
work, right?

比如

【在 r****y 的大作中提到】
: 你这个例子举得不错,还可以更清楚一点,别用String,随便换一个自定义的class比如
: 二维平面点Point,那么问题就很明白,跟String无关,跟ArrayList无关。
: 换一句大白话说:
: 任何一个java method的返回结果都不是variable,而只有variable才能够作为
: assignment等号的左边。

avatar
s*y
38

可以是可以 但是x和y在Point中一般是private的
所以还是需要get和set方法的
你这样的写法在Java里应该是不推荐的

【在 f*****g 的大作中提到】
: ArrayList s = new ArrayList();
: Point t = new Point();
: t.x = 3;
: t.y = 4;
: s.add(t);
: s.get(0).x = 4;
: work, right?
:
: 比如

avatar
z*3
39
.x就是一个变量
.x不是方法,你看它没有括号
方法的返回值一定不是一个变量,而是一个value或者说是reference
无脑的记忆方式就是,等号左边的最后一个东西,它不能以括号结尾
除非是==,单独的=,左边一定是一个变量,.x,x,.y,abc,i,t,point etc.
如果是point()=...这种,就是错的

【在 f*****g 的大作中提到】
: ArrayList s = new ArrayList();
: Point t = new Point();
: t.x = 3;
: t.y = 4;
: s.add(t);
: s.get(0).x = 4;
: work, right?
:
: 比如

avatar
r*y
40
不是一码事啊。
car != carpet

【在 f*****g 的大作中提到】
: ArrayList s = new ArrayList();
: Point t = new Point();
: t.x = 3;
: t.y = 4;
: s.add(t);
: s.get(0).x = 4;
: work, right?
:
: 比如

avatar
z*e
41
.的意思是先找到heap所在的内存块
然后取那个variable
t.x
t的值放在stack里面
.的话,系统就会定位到heap中去
然后t.x就定位到heap里面x这个variable
t.x = ***意思就是修改heap里面这个variable的值
t.get(0).x
也是类似的
t.get(0)返回一个reference,然后系统根据这个reference value
定位heap中的内存块,然后.x就是找到这个内存块中的x变量
.get(0)这个还涉及到去method区取方法体
楼主还是要先理解内存中的几个不同的区
stack, heap这些,不理解这些,怎么说都是虚的
相关阅读
logo
联系我们隐私协议©2024 redian.news
Redian新闻
Redian.news刊载任何文章,不代表同意其说法或描述,仅为提供更多信息,也不构成任何建议。文章信息的合法性及真实性由其作者负责,与Redian.news及其运营公司无关。欢迎投稿,如发现稿件侵权,或作者不愿在本网发表文章,请版权拥有者通知本网处理。