JAVA学习日记---Thinking in Java学习笔记,1-4章总结

来源:互联网 发布:中国地质大学北京知乎 编辑:程序博客网 时间:2024/06/14 10:19

JAVA学习日记---Thinking in Java学习笔记,1-4章总结

第一章:对象导论

在这一章介绍了JAVA所覆盖的只是包括:

1.1抽象过程:万物皆对象

1.2每个对象都有一个接口:对象的创建new

1.3每个对象都提供服务

1.4被隐藏的具体实现:使用关键字public, private,protected,以及无修饰来实现封装,注意protected与无修饰即default的区别(default的方法不能被其他包中的类调用即使他们有继承关系,protected与default相同,但是其他包中如果有继承关系的类也是可以用protected方法的这里是不同)

1.5复用具体实现

1.6继承

1.7多态

1.8单根继承

1.9容器(包括泛型)

1.10对象的生命周期

1.11异常处理

1.12并发编程:在程序中,彼此独立运行的部分称之为现成

1.13JAVA与internet(包括服务器编程)


第二章:一切都是对象

2.1用引用操作对象:一切都看成对象,但是被操作的是对象的引用即地址

2.2对象的存储:对象存放在堆内存中,引用则在堆栈中,基本类型也会存放在堆栈中,常量放在位于堆内存的常量池中

2.3永远不需要销毁的对象:提出了作用域的概念,对象的引用会在超出作用域范围后销毁,但是对象在需要的情况下会一直存在于内存中

2.4创建新的数据类型:类,使用类来创建新的数据类型,即引用类型

2.5方法,参数和返回值:本节介绍了如何创建方法,方法会有带有返回值的和不带返回值的

2.6static关键字的作用,static关键字修饰的方法和域不会与包含它的那个类的任何对象实例关联,直接可以用类名调用static修饰的域或方法。

static修饰的域属于类,不论这个类的几个对象调用,都是同一个域

2.7在这一节中,有一个遗留问题,main()方法中的String []args数组是用来存储命令行参数的,什么是命令行参数?有什么用处?


第三章:操作符

3.1在第一节中提到了static关键字的另一个作用:静态导入

3.2操作符+,-,*,/,=

3.3优先级

3.4赋值:本节需要注意的是对象的赋值与基本数据类型的赋值不同,对一个对象进行操作时,我们只是操作的对象的引用,即地址,所以如果将一个对象赋值给另一个对象只是将地址从一个地方复制到另一个地方,即这两个对象的引用指向的是同一个对象

另一个要注意的是别名引用

3.5算术操作符:+,-,*,/,%(取余)

3.6自增和自减:i++,++i,i--,--i

对于前缀操作是先执行运算,再生成值;对于后缀操作是先生成值,再执行运算,如:

int i =1;

print(i++)//output:1

print(++i)//output:3

3.7关系操作符:>,<,>=,<=,==,!=

3.8逻辑操作符:与(&&),或(||),非(!)

本节提到短路现象:

与(&&)操作,如果有一个表达式是false,false表达式后面的表达式不再运行,整个表达式为false

或(||)操作,如果有一个表达式是true,则true表达式后面的表达式不再运行,整个表达式为true

3.9直接常量:如pi

3.10按位操作符:按位与(&),按位或(|),异或(^),非(~)提到Integer类中的toBinaryString()方法

按位与(&):两位都是1,才会输出1

按位或(|):两位都是0,才会输出0

异或(^):两位有一位是1,但是两位不能都是1,则输出1

3.11移位操作符:>>右移,>>>无符号右移,<<左移

3.12三元操作符:boolean-exp?value0:value1,如果表达式-exp为true则表达式的值为value0,否则为value1

3.13字符串操作符:+和+=,如果表达式以一个字符串起头,那么后续所有操作数都将是字符串型常用的方法System.out.println(""+x)://output: x

3.14使用操作符时常犯的错误:相当“==”用成赋值“=”,逻辑与,逻辑或,用成“&”,“|”

3.15类型转换,需要记住的是:

截尾,29.7f转化为int型是29,并非30

提升,char,byte,short->int,float->double,int->long

当类型转换成一种小的类型时,必须留意“窄化转换”,会丢失精度


第四章:控制执行流程

4.1true false

4.2if else

4.3while, do whilel, for

需要注意的是:

do while需要运行一次do下面的语句

for语句执行顺序,先执行初始化如:int i = 0(此处仅初始化执行一次),然后进行条件判断如:i<100,然后执行for中的语句,最后进行“步进”如:i++

4.4增强for循环主要用于数组,或者是返回值为数组的方法

4.5return:作用1,指定方法返回的值,2结束程序

4.6break和continue

break:用于强行退出循环,不执行循环中剩余的语句

continue:停止执行当前迭代,退回到循环起始处,进行下一次迭代

4.7标签:与break和continue配合使用,主要用来跳出循环

4.8switch

swith(c){

case 1:

break;

case 2:

break;

}


今天的TopCoder:SRM 195 DIV 2 250

Problem Statement

 

Most of the time when rounding a given number, it is customary to round to some multiple of a power of 10. However, there is no reason why we cannot use another multiple to do our rounding to. For example, you could round to the nearest multiple of 7, or the nearest multiple of 3.

Given an int n and an int b, round n to the nearest value which is a multiple ofb. If n is exactly halfway between two multiples ofb, return the larger value.

Definition

 Class:RounderMethod:roundParameters:int, intReturns:intMethod signature:int round(int n, int b)(be sure your method is public)

我的算法如下:

public class Rounder {

public int round (int n ,int b){
int result = (n/b)*b;
if(n-result<result+b-n){
result = result;
}else{
result = result+b;
}
return result;
}

}

原创粉丝点击