Java初学者常见问题_字符串序列化_可变不可变_传递(值,引用)

序列化,

把对象转换成二进制(字节序列)存到文件中就是序列化

反序列化,

把文件中的二进制(字节序列)对象恢复到类中就是反序列化



◆注;在序列化时一般需要提供一个序列化编码,确保在恢复是,仍然是指向同一个内存区域


序列化的作用

使得对象永久的存储在到Disk中。


可变序列化;

在对象创建了出来之后,依然可以改变位于对象中的内容,如StringBuffre


不可变序列化;

在创建对象了之后,内存中的内容是不可变的,如String


什么是可变类,和不可变类?

可变类;创建出这个类的实例时,是可以改变这个类实例的内容的

不可变类;创建出这个类的实例时,是不可以改变的。



值传递;(方法形参是,基本数据类型)当传递一个实际的值给这个形参时,是用来初始化这个形参的,

而形参的值发生改变时,

  ★是不会改变传递过来的这个实际的值★

因为2个位于内存空间,地址也不一样,而且当调用这个

方法时是不会影响(改变)实际的值的。

值传递的类型时基本数据类型。

是一个值拷贝的过程。


结论;没有改变了传进来的位于内存中的值。




引用传递;(是对象,引用类型)当调用某个方法是,参数是对象 或者数组 ,而这个对象调用某个方法时实

际上指向同一个地址值中的。而当实际使用这个方法就是使用

内存中的地址值空间实际的参数进行操作的。

而当这个方法结束时,

★这些操作(修改)了的★

属性会被保留下来,并且会进行一个

对位于内存中的实例空间的

参数会进行修改。

引用传递,是引用类型的,在传递时是传递地址值。


结论;改变了传过来的位于内存中的对象的值。



什么是可变字符,和不可变字符?

字符串的不可变字符序列,和可变字符序列。


不可变字符序列(String);String的值是存到内存的方法区中的常量池,并且String这个类是使用

final修饰的,而且这个类底层存储是使用数组的存储,并且其数组是

使用final修饰的。使得其在内存中是不可以改变的。

所以创建新的字符串时是会在内存中创建出新的一个

新的字符串,即便是使用了 + 连接符,因为

final是不可修改的而且每次做完一次

连接在内存中都是再次创建。


并且;当2个字符的内容是一样的,会指向同一块内存空间,

而不会在此为此字符串在常量池在再次创建一个。

也是一个节约内存的机制。


可变字符序列(StringBuilder and StringBuffer);

当使用append()方法时是将append的值存到数组中当调用了toStirng时会将数组的

值拷贝到StringBuiler的对象中(引用传递),从而实现一个追加的功能


◆注;String,StringBuilder,StringBuffer

 String;是位于常量池

 StringBuilder,在底层存储时是使用数组来存储的,默认空参的构造器数组是16。当超出数组长度

  时,则*2+2.

 StringBuffer,在底层存储时是使用数组来存储的,默认空参的构造器数组是16。当超出数组长度

  时,则*2+2.





为什么不同包下的类继承Object的?

因为Object是一个超类,使得语言更加灵活,可以在扩展类库是使得其可以兼容所有类库的类。




接口有没有父类?

没有,没有构造器而且是用于顶层设计,````而且也没有``继承Object

除非是接口继承接口





当内部类重写了 toString方法了怎么获取地址


classpath变量在JAVAEE的使用  百度



下载Oracle  sql





重写hashCode equals comparator toString等方法的作用

hashCode就是一个散列码用于帮助快速的查找,hashCode是计算出每一个实例化的对象实例的内存地址


实验;〓 当做类型自动提升是否为-1


◆注;(String类是使用它的value值作为参数然后进行运算得出hashcode的

换句话说, 只要值相同的String不管是不是一个对象,hash值全部相等

因为底层存储和指向机制)。


集合为什么要重写equals方法

因为contains是通过equals方法,如果是自定义类是调用

自定义类的equals方法。



getClass()得到当前对象的类





当在做Scanner输入是,如果是要抛出异常,并且再次输入要使用while并且在异常处理要在加一个next()将输

入的错误的抛出的异常抛给这个  空的 位于异常处理的位置next()

但是;如果是引用类型就不用,因为引用类型会自动做equal

而基本数据类型不会,所以要再次加上空的next()

       意义;会将其发生异常的值,抛出给这个空的next();



当指定了泛型后,在使用匿名类进行重写还要给匿名类进行一个指定泛型。



为什么使用Set要同时重写HASHCODE和EUQuals方法?

因为底层存储是根据HASHCODE散列计算的值来进行存储的,EQUALS就是当2个HASHCODE值一样是用于判断

内容是否相同,相同则不加入,不相同则加入。

如果2个值的HASHCODE值相同,EQUALS不相同则会在其元素位置,后面在开辟一个空

间出来。用于同时存储2个元素。



泛型的限定;

(List)<? extends类A> 表示类A是下的子类,而?是List

能存放本类以及本类下的

子类


(Collection)<? super 类A> 表示?是类A的

父类

只能存放本类以及父类





泛型方法是可以用静态的









SERIALIZEBLE

serializeble是一个序列化接口,实现这个接口的是可以序列化的,并且实现了接口给实现类添加了一个序列

号之后可以保证在将文件读出时,不会出现丢失等,而且实现了这个接口可以存储

到这个类对象的状态。





为什么COMPARATOR不用重写EQUALS

2个实体EQUALS为TRUE那么2个实体的HASHCODE必须是相同的(自己写的那就没意义了!)

而重写COMPARATOR或者COMPARE时,建议重写EQUALS方法,因为避免2个值一样则后一个是无法

加进来的,所以建议同时重写EQUALS方法,与HASHCODE方法,HASHCODE是确定2个值

在内存中的位置。






二分法的代码

public static int search(int[]arr, int key) {

    //记录数组的第一个位置

int start = 0;

       //记录数组的最后一个位置

int end =arr.length - 1;

while (start<= end) {

           //从中间开始找

int middle = (start + end) / 2;

           //如果输进来的元素是小于中间的元素则

if(key < arr[middle]) {

           //取出以中间元素为开始的前面的元素

end = middle - 1;

           //如果输进来的元素时大于中间元素则

}else if (key > arr[middle]) {

           //取出与中间元素为开始的,最后一个元素为结束

start = middle + 1;

}else {

           //否则返回中间元素

return middle;

}

}

return -1;

}

}


给一个字符串赋值那么这个字符也是一个对象,因为这个字符串是存在内存方法区中的常量池的。而这个

字符串是有一个地址值的。


数组转集合的方法。        

        集合转数组

Array.adList(arr); toArray();


递归;不断传递,直到末尾

可以使用方法达到递归的效果



\r\n的作用

\r是换行,一般是空行

\n是回车并且换行,一行是一行的尾部


java中的switch语言支持什么类型的值



byte short int char

·注;在JDK7.0之后增加对字符串的String的支持


写集合遍历方法到总结中


类.class的和this的作用

正在运行的类


注意;当使用Thread而不是使用Runable时要,并且是使用同步方法的形式时,

如果变量是static 方法也要是static不然synchronized则不起作用

因为默认同步方法调用的是this,而静态调用的是类.class



组播是强制,广播是非强制


declare

i number(30) := 0;

begin

loop

exit when i > 999999


insert into emp(empno,ename)values(i,'XX');


i := i+1;

dbms_output.put_line(i);

end loop;

end;

/

exception

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • 一、基础知识:1、JVM、JRE和JDK的区别:JVM(Java Virtual Machine):java虚拟机...
    杀小贼阅读 2,362评论 0 4
  • 四、集合框架 1:String类:字符串(重点) (1)多个字符组成的一个序列,叫字符串。生活中很多数据的描述都采...
    佘大将军阅读 732评论 0 2
  • 注:都是在百度搜索整理的答案,如有侵权和错误,希告知更改。 一、哪些情况下的对象会被垃圾回收机制处理掉  当对象对...
    Jenchar阅读 3,205评论 3 2
  • Java 语言支持的类型分为两类:基本类型和引用类型。整型(byte 1, short 2, int 4, lon...
    xiaogmail阅读 1,342评论 0 10
  • 会不会有一天一个人,一个人起床,一个人发呆,一个人刷手机,一个人穿衣洗漱,一个人在厕所阅读,一个人下楼,一个人吃饭...
    笔端v阅读 110评论 0 0