学习Java(15)_兔子繁殖算法(斐波那契数列)

著名的兔子繁殖问题,也就是斐波那契数列。要求撰写程序,可让用户输入想计算的斐波那契数列的个数,有程序全部显示出来。如:

请输入个数:10
0 1 1 2 3 5 7 12 21 34
阅读全部

学习Java(14)_一个小程序的四种算法以及效率比较

接上一篇Java字符串连接符“+”的作用,写一个关于“+”号的小程序,重点在于比较每个算法在效能上的优劣。
题目:要求输出从1加到100这样的一个字符串。效果:输出“1+2+3+4+5+...+100”这段字符串。
阅读全部

学习Java(13)_Java字符串连接符“+”的作用

使用“+”来连接字符串,就会变成建立java.lang.StringBuilder对象,使用append()方法来进行+左右两边字符串拼接,最后再转换为toString()返回。
简单的说,每次使用一个+来连接字符串,就会产生一个新的String对象。但需要特别注意的是,不要把+用在重复性的连接场合,比如在循环中或者在递归中使用+来连接字符串,因为这会因为频繁产生新的对象,造成效能上的负担。
阅读全部

学习Java(12)_浅层复制和深层复制的区别

修改了c1[0]的颜色为黄色,c2[0]的颜色同样变成了黄色。说明,c1[0]和c2[0]是同一个对象,这个行为被称为浅层复制(Shallow Copy)。浅层复制实际上并没有为数组元素开辟新的内存空间,只是将原数组地址复制到了另一个数组而已。
事实上,无论是System.arraycopy()还是Array.copyOf(),用在成员元素是对象的数组时,都是浅层复制。如果真的要连同对象一同复制,需要自己亲自操作。
阅读全部

学习Java(11)_equals()方法的用法和重写

Object中的public boolean equals(Object obj);是用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指内存中同一块存储单元。如果this和obj指向的是同一块内存,则返回true,反之false。
需要注意的是,即便是内容完全相等的两块不同的内存对象,也会返回false。但是在有些时候,我们并不需要去比较两块内存单元是否相同,而我们关心的仅仅是两个对象内部的某些属性是否相等,这个时候,我们就需要重写父类的equals方法。
阅读全部

学习Java(10)_关键字static的注意事项

关键字static的注意事项:
1,static 成员是多个对象共用,其中一个对象修改,其他对象也跟着修改
2,static 属性和方法虽然属于类本身,虽然可以通过类名的方式访问,但是,static属性和方法也属于类对象,当然也可以使用对象访问。
3,只有非private的static成员才可以通过类名的方式访问,但是否可以通过类名访问,还必须满足一个条件:该成员必须是非private
阅读全部

学习Java(9)_关键字this的含义

使用面向对象的时候免不了会使用到this,而一般简单的解释都是this代表的是本对象,那么问题来了,this究竟是如何代表了本对象呢,本文将给您一个初步的了解。
先来一段伪代码感受下,内容都写在注释里头,看完这个案例,基本上就能够明白this在程序内部是如何操作了。
阅读全部

学习Java(8)_如何实现对象实例化

知道了对象和类的概念,那么程序内部是如何实例化对象呢?
学习过C语言的朋友都知道结构体的用法,而Java中的对象实例化和C语言中的结构体有异曲同工之妙。首先按照这个类的类型在堆中开辟一块空间存储,然后再把这段空间的首地址,交给栈中的一个指针变量来保存,这时候这个指针变量就指向了堆中的一段存储空间。
阅读全部

学习Java(7)_面向对象中的类和对象实例化

虽然说C语言是面向过程的,而Java是面向对象的,但是c语言和Java语言还是有很多异曲同工之妙,毕竟Java是从C/C++发展而来。C语言中的结构体和Java中的类非常的相似,Java中的类比结构体多了成员方法;而对于结构体和类的使用,在运行原理上来说基本也是一致的。
阅读全部

学习Java(6)_浮点型数值的运算和比较

    在Java的五种基本数据类型之中,要特别的注意一下浮点型的运算和比较。

    Java语言(包括其他语言),遵守IEEE754浮点数运算规范,使用分数和指数来表示浮点数。对于某些浮点数值,无法做到精确表示,因而会造成运算上的误差。特别要注意的是不能使用“==”直接比较浮点数运算结果。

阅读全部