Java复习第一天------基础夯实之路(Java基础)

Java基础复习第一天

写在前面:我是一名大三的老学长,一直喜欢编程,但性格总是太急,总是想学这个想学那个,学过的东西基础都不牢固。今天才意识到,作为一个开发者,计算机基础是多么重要。所以,从今天起,我开始复习Java基础,尽量每天将自己复习的内容和自己的感悟写在CSDN上,和大家一起交流进步。

复习材料:Java编程思想(第四版)

好啦,不多说了。直接开始复习。

第二章 (一切都是对象)

1.基本类型具有的包装器类型,使得可以在堆中创建一个非基本对象,用来表示对应的基本类型。
例如
char c ='x';
Character ch = new Character (c);
Character ch = new Character ('x');
JavaSE5自动包装机制,可以自动地将基本类型转化成包装器类型,反向转换也可以。
例如:
Character ch = 'x';
char c=ch;
2.Java提供了两个高精度计算的类BigInteger和BigDecimal,虽然他们大体上属于包装器类的范畴,但是他们没有对应的基本类型。必须使用方法来取代运算符来实现。
BigDecimal支持任意精度的整数。
BIgDecimal支持任意精度的定点数,可用于货币计算。
3.Java确保数组会被初始化。这种范围检查是需要消耗少量的内存及运行时的下标检查为代价的,但由此带来的安全性和效率的提高,这种代价是值得的。当创建一个数组对象时,实际上是创建了一个引用数组,每个引用会被初始化为null,在使用任何一个引用前,必须为其指定一个对象。创建基本类型的数组,会把这种数组所占的内存全部置零。
4.Java是一种自由格式的语言,所以空格、制表符、换行符都不会影响程序的执行结果。
5.在C和C++中,将一个较大作用域的变量隐藏起来。但下面的代码在Java中是不被允许的,因为Java的设计者认为这样可能会造成编程混乱。

	{
		int x = 12;
		{
			int x = 96;
		}
	}

6.Java对象不具备基本类型一样的生命周期,当new一个对象时,它可以存活于作用于之外,而Java虚拟机负责这个对象的销毁。例如,下面这段代码,引用s在作用域终点就消失了,但它指向的那个String对象仍继续占用内存。

	{
		String s = new String("a string");
	}

7.可以在类中设置两种类型的元素,一个是字段,另一个是方法。字段可以是任何类型的对象,也可以是基本类型。如果字段是对某个对象的引用,那么必须初始化该引用。
8.当变量作为类成员的时候,Java会保证给定其默认值,但程序员最好对其进行初始化。
上述确保初始化的特性并不适用于在方法里定义的局部变量,如果不对它进行初始化,那么它的值就可以是任意值。
9.方法的方法名和方法参数(它们合起来被称为方法签名),可以唯一地标识一个方法。Java中的方法必须作为类的一部分来创建,方法只能通过对象的引用来调用。但static方法,它是针对于类调用的,并不依赖于对象而存在。
10.若方法的返回值是void,return关键字的作用仅仅是用来退出方法。
11.为了解决类名冲突的问题,C++引入了名字空间的概念,而Java希望程序员采用域名倒写的方式来确保类名的唯一性。包名现在统一为小写。
12.当声明一个事物是static的时候,就表示这个域或者方法不会与任何该类的实例关联起来,这个域或者方法属于类,即使从未创建过该类的对象,也可以使用这个域或者方法。一个static字段对于每个类对象来说,都只有一份存储空间。而非static字段,对每个对象都有其自己的一份存储空间。
13.如果你想创建一个独立运行的类,那么该文件中必须包含一个和该文件的名字相同的类,并且该类必须包含一个主方法,main方法是一切程序的入口。main方法的参数args用来存储命令行参数。
14.JDK(Java Developer‘s Kit,Java开发人员工具包)。
15.Java代码编程风格。类名字首字母要大写、驼峰表示法,对于方法的驼峰表示法,我们将方法名的首字母小写。

第三章(操作符)

1.JavaSE5新增加了一个静态导入的概念,就是static import ,但是在实际开发中我们一般是不会用的,因为这样会导致代码很混乱。
2.几乎所有的操作符都只能操作基本类型,但是“=”,“==”,“!=”,可以操作所有的对象。除此之外,Sting类支持“+”和“+=”的操作。
3.当一个String后面跟着一个非String时候,Java编译器就会尝试着将他转化成一个String,对于对象而言就是调用它的toString方法。
4.对于基本类型的赋值,是很简单的,基本类型存储了实际的数值,所以在为其赋值时,是直接讲一个地方的内容复制到另一个地方。
5.对一个对象进行操作的时候,我们作用的是这个对象的引用,也就是说,当我们把一个对象赋值给另一个对象的时候,就是把该对象的引用赋值给另一个对象,这个时候,这两个对象指向的是同一块内存空间,他们两个中任意一个对这个内存空间进行了改变,都会影响到另一个变量的值。我们称这种现象为“别名现象”。因此,直接操作对象里面的域容易导致混乱,并且违背了良好的面向对象程序设计的原则。
6.整数除法会直接除去结果中的小数位,而不是四舍五入。
7.自动递减和自动递增。对于前置递增和前置递减,++a,会先执行运算,再生成值。对于后置,a++会先生成值,再进行运算。
8.对于“!=”和"= =",比较的是两个对象的引用,所以,要想比较对象的内容是否相同,我们必须使用equals方法,而对于基本类型,没有这样的方法,直接使用“= =”和“!=”。当你创建了自己的类的时候,你需要覆盖equals方法,才能出现你想要的比较结果。
9.“与”、“或”、“非”操作只可用于布尔值,在Java中,不可以将非布尔变量当做布尔值在逻辑表达式中使用。
10.直接常量。大小写的L,表示long类型;大小写的F,表示float类型;大小写的D,表示double类型。十六进制数适用于所有的整数数据类型,以0x开头,后面跟着0-9或小写的a-f。八进制以0开头,后面跟着0-7来表示。
11.按位操作符来自于C语言面向底层的操作。我们将布尔类型作为一种单比特值对待,但不能对他执行按位“非”,对于布尔值,按位操作符和逻辑操作符有相同的效果,只是前者不会短路。
12.对于移位操作符,只能作用于整数类型。对于char、byte、short类型,在移位前会转换成int。
13.Java允许我们将任何的基本数据类型转换成另一种基本数据类型,但是布尔类型除外,他不允许进行任何的类型转换处理,对于类类型来说,只能转化成该类缩数的家族类型。
14.算术运算或者按位运算,只要类型比int小,在进行运算前都会转换成int类型。
15.Java中没有sizeof。

第四章(控制执行流程)

1.在控制表达式的初始化和步进控制部分,可以使用一系列由逗号分开的语句,这些语句都会独立执行。通过逗号操作符,可以在for语句内定义多个变量,但他们必须有相同的类型。
2.JavaSE5引入了foreach语法,适用于数组和容器。这种语法实际上是一种语法糖,底层还是是用for循环来执行。还适用于任何Iterable对象。
3.break和continue可以和label标签一起使用,break和continue都会跳过for循环的递增表达式。
4.switch语句。default语句没有break;switch选择因子必须是int或者char类型。JavaSE5之后,它可以和枚举类型配合使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值