学习日记2

经过与同事的探讨,和自己的检查。就昨天的日记,有几个错误地方,做出叙述,如下:
首先是字面叙述。前文所叙述的文档注释符格式应为(/*注释符/.)
之后在运行Javadoc时,eclipse导出javadoc,今天没有出现了错误。我上网查了一下。并没有什么第三方注释。@see@version等注释也只是eclipse里自带的注释方式。
昨天有位同事跟我说。IDE可以直接导出doc注释。首先我以为这是一种开发工具。后来经过查找相关资料。IDE只是对所有编程开发工具的统称。学名叫集合开发系统。前文介绍的第二种方法就是基于eclipse这种样式的开发工具。包括myeclipse,sts等。都可以这样子导出。
现在开始今天的学习情况记录:
移位操作符<<和>>
左移位操作符<<能按操作符右侧指定的位数将操作符左侧的操作数向左移动(在低位补0)。
右移位操作符>>能按操作符右侧指定的位数将操作符左侧的操作数向右移动(在低位补0)。”有符号”右移位操作符使用”符号扩展”。若符号为正,则在高位插入0,若符号为负,则在高位插入1。java中增加了一种”无符号”右移位操作符<<<,
它使用”零扩展”,无论正负,都在高位插入0。这是C或C++中所没有的。
“移位”可与”等号”(<<=或>>=或>>>=)组合使用,此时,操作符左边的值会移动由右边的值指定的位数,再将得到的结果赋值给左边的变量。
Math.round(1.0) =1
Math.round(1.4) =1
Math.round(1.5) =2
Math.round(1.6)=2
Math.round()的原理是对传入的参数+0.5之后,再向下取整得到的数就是返回的结果,返回值为long型。这里的向下取整是说取比它小的第一个整数或者和它相等的整数。
Math.round(-1.0) =-1
Math.round(-1.4) =-1
Math.round(-1.5) =-1
Math.round(-1.6)=-2
“向下取整”实际上就是Math.floor()方法,注意Math.floor()返回的值为double类型的。
Math.floor(1.0) == 1.0
Math.floor(1.4) == 1.0
Math.floor(1.5) == 1.0
Math.floor(1.6) == 1.0
Math.floor(-1.0) == -1.0
Math.floor(-1.4) == -2.0
Math.floor(-1.5) == -2.0
Math.floor(-1.6) == -2.0
Math.ceil()方法,表示“向上取整”,得到的结果是比参数大的第一个整数或者和参数相等的数,返回值也是double类型的。
Math.ceil(1.0) == 1.0
Math.ceil(1.4) == 2.0
Math.ceil(1.5) == 2.0
Math.ceil(1.6) == 2.0
Math.ceil(-1.0) == -1.0
Math.ceil(-1.4) == -1.0
Math.ceil(-1.5) == -1.0
Math.ceil(-1.6) == -1.0

以上Math方法数据的取值来自于转载。

逗号操作符
使用逗号操作符可以在for语句内定义多个变量,但是他们具有相同的类型
For(int i=1,j=i+1;i<5;i++,j=i+2){
System.out.print(“i=”+i);
System.out.print(“j=”+j);
}
输出结果为
i=1,j=2
I=2,j=4
I=3,j=5
I=4,j=6
Goto源码跳转。Java中没有goto。Java使用break,continue实现代码跳转。
构造器:java中有几点需要注意的地方。若有了有参构造,系统则不会再默认帮你创建无参构造。有了自带的有参构造后,再使用无参构造的方法来创建对象是会出现报错的,这是很多程序员容易忽略的问题。
第二点。关于方法和构造器的重载。重载指的是方法名相同,方法参数不同。有些同学喜欢来凭借返回值来定义方法的重载。但是这里却有个识别的问题。比如一个f()方法。你能知道他的返回值是什么吗?怎么确定他的重载方法呢。除了这一点,还有一些同学喜欢取巧。把参数顺序对换,以此实现方法的重载。这种方法在实现业务时,不管是对自己和他人, 都会很容易产生很大的混淆,最终导致程序的报错,再来自己查找。可以说是效率贼差。所以在编码中一点不要取巧。可能就有错误等着你去实现,可能实现其他功能时就存在你没有想到的漏洞。
今天下午花了很多时间,在学习java垃圾回收机制。因为看了一天了,眼睛有点花了,人也有点困了,容易走神,所以效率并不高。
我了解到了java垃圾回收机制的几个特点。java回收机制什么时候回启动呢。分为两种情况:
第一种:java垃圾回收机制是在优先级最低的线程中进行,所以应用很忙时,GC机制就不会被触发。没有线程在运行时,GC机制就会背调用。
第二种,内存资源不足时,GC会自动启动,并且会停止所有java应用,清理内存。如果清理过一次内容,内存依然不足,就会继续清理第二次。第二次时,依然不够。就会出现out of memory的报错。
java的垃圾回收机制是自动运行的,就jvm而言,它触发GC的次数是很多的,但是它的消耗很低,所以这种触发不计入触发GC机制。所以也可以说,java时刻都在进行着GC回收机制。
它的底层实现是根据对象的引用来判断这个对象是否是存活的。如果引用被回收,那么这个对象就会被回收。对象的引用也就是变量,常常存在于栈区,但是它也可以存在于堆区。如果将引用放在静态区保存,则对象不会不回收。这就会导致java内存的泄露。相比于C,C++,java的GC机制时刻会运行,很少会出现大量内存泄露,导致系统崩溃的事件。
除了这一点java内存的泄露还可以是java导入了别的编程语言,创建了对象、而GC只能识别java的对象,所以导致内存泄露。也有可能是对象的引入被回收,但是对象的实例对象呗添加到了其他对象中,仍在使用。大量这样的实例对象被创建也会产生内存泄露。
虽然看起来是有很多问题。但是java是一门十分优秀,成熟的语言,基本不会出现内存崩溃的情况,C的工程师就是因为C语音没有很好的垃圾回收机制,变量必须定义在开头等等诸多限制才转行成了java工程师。我为自己学的是java而感到幸运。
关于如何解决垃圾爆满,内存崩溃的问题,会是我下次学习的重点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值