JavaSE学习知识点总结02

20.Math类的使用
1.java.lang包中的Math类提供了一些用于数学计算的方法。
2.Math.random()该方法用于产生一个0到1区间的double类型的随机数,但是不包括1。
int i = (int) (6 * Math.random()); //产生:[0,5]之间的随机整数

21. for循环
注意:
(1)约定:
只在for语句的控制表达式中写入与循环变量初始化,条件判断和迭代因子相关的表达式。
(2) 初始化部分、条件判断部分和迭代因子可以为空语句,但必须以“;”分开。
编译器将while(true)与for(;;)看作同一回事
,都指的是无限循环。

22. break语句和continue语句
(1)在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,不执行循环中剩余的语句。
(2)continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定。

23. 方法
(1) 基本定义:
方法用于定义该类或该类的实例的行为特征和功能实现。 方法是类和对象行为特征的抽象。方法很类似于面向过程中的函数。面向过程中,函数是最基本单位,整个程序由一个个函数调用组成。面向对象中,整个程序的基本单位是类,方法是从属于类和对象的。

(2) 方法的调用方式:
对象名.方法名(实参列表)
方法的详细说明
1. 形式参数:在方法声明时用于接收外界传入的数据。
2. 实参:调用方法时实际传给方法的数据。
3. 返回值:方法在执行完毕后返还给调用它的环境的数据。
4. 返回值类型:事先约定的返回值的数据类型,如无返回值,必须显示指定为为void。

(3)注意事项:
1. 实参的数目、数据类型和次序必须和所调用的方法声明的形式参数列表匹配。
2. return 语句终止方法的运行并指定要返回的数据。
3. Java中进行方法调用中传递参数时,遵循值传递的原则(传递的都是数据的副本):
4. 基本类型传递的是该数据值的copy值。
5. 引用类型传递的是该对象引用的copy值,但指向的是同一个对象。
6.定义static方法是为了避免main函数需要通过对象调用的繁琐步骤。通过static定义方法,就可以直接调用。

24. 方法的重载
方法的重载是指一个类中可以定义多个方法名相同,但参数不同的方法。 调用时,会根据不同的参数自动匹配对应的方法。

雷区
重载的方法,实际是完全不同的方法,只是名称相同而已!
构成方法重载的条件:
1.不同的含义:形参类型、形参个数、形参顺序不同
2.只有返回值不同不构成方法的重载
3.只有形参的名称不同,不构成方法的重载

25. 递归

(1) 递归是一种常见的解决问题的方法,即把问题逐渐简单化。递归的基本思想就是“自己调用自己”,一个使用递归技术的方法将会直接或者间接的调用自己。

(2) 递归结构包括两个部分:
1.定义递归头。解答:什么时候不调用自身方法。如果没有头,将陷入死循环,也就是递归的结束条件。
2.定义递归体。解答:什么时候需要调用自身方法

(3)递归的缺陷
简单的程序是递归的优点之一。但是递归调用会占用大量的系统堆栈,内存耗用多,在递归调用层次多时速度要比循环慢的多,所以在使用递归时要慎重。

(4)递归的注意事项:
任何能用递归解决的问题也能使用迭代解决。当递归方法可以更加自然地反映问题,并且易于理解和调试,并且不强调效率问题时,可以采用递归;
在要求高性能的情况下尽量避免使用递归,递归调用既花时间又耗内存。

26. 面向对象和面向过程&&类和对象
面向过程:面向过程思想思考问题时,我们首先思考“怎么按步骤实现?”并将步骤对应成方法,一步一步,最终完成。 这个适合简单任务,不需要过多协作的情况下。比如,如何开车?

面向对象:面向对象(Object)思想更契合人的思维模式。我们首先思考的是“怎么设计这个事物?” 比如思考造车,我们就会先思考“车怎么设计?”,而不是“怎么按步骤造车的问题”。

建议
1.面向对象具有三大特征:封装性、继承性和多态性,而面向过程没有继承性和多态性,并且面向过程的封装只是封装功能,而面向对象可以封装数据和功能。所以面向对象优势更明显。
2.一个经典的比喻:面向对象是盖浇饭、面向过程是蛋炒饭。盖浇饭的好处就是“菜”“饭”分离,从而提高了制作盖浇饭的灵活性。饭不满意就换饭,菜不满意换菜。用软件工程的专业术语就是“可维护性”比较好,“饭” 和“菜”的耦合度比较低。

总结:
面向对象可以帮助我们从宏观上把握、从整体上分析整个系统。 但是具体到实现部分的微观操作(就是一个个方法),仍然需要面向过程的思路去处理。

类和对象:
(1)类又叫抽象数据类型,可以看成一类对象的模板,定义一个类相当于定义了一种新的引用数据类型(Java中数据类型分两类:基本类型,引用类型),这个引用数据类型可以自定义属性和函数,即类的对象共同具有的属性、方法。
(2)对象又叫实例,可以看成该类的一个具体实例
(3)对于一个类来说,一般有三种常见的成员:属性field、方法method、构造器 constructor

•属性
属性用于定义该类或该类对象包含的数据或者说静态特征。属性作用范围是整个类体。
在定义成员变量时可以对其初始化,如果不对其初始化,Java使用默认的值对其初始化。

方法接口,确定了对某一特定对象所能发出的请求。
方法用于定义该类或该类实例的行为特征和功能实现。方法是类和对象行为特征的抽象。

27.面向对象的内存分析:
Java虚拟机的内存可以分为3个区域:栈stack 、堆heap、方法区method area

的特点:
(1)栈描述的是方法执行的内存模型。每个方法被调用都会创建一个栈帧(存储局部变量、操作数、方法出口等)
(2)JVM为每个线程创建一个栈,用于存放该线程执行方法的信息(实际参数,局部变量等)
(3)栈属于线程私有,不能实现线程间的共享。
(4)栈的存储特性是“先进后出,后进先出”。
(5)栈是由系统自动分配,速度快!栈是一个连续的内存空间!

的特点:
(1) 堆用于存储创建好的对象数组(数组也是对象)。
(2) JVM只有一个堆,被所有线程共享。
(3) 堆是一个不连续的内存空间,分配灵活,速度慢!

方法区(又叫静态区)特点如下:
(1)JVM只有一个方法区,被所有线程共享!
(2)方法区实际也是堆,只是用于存储
类、常量相关的信息!

(3)用来存放程序中永远是不变或唯一的内容。(类信息【class对象】、静态变量、字符串常量)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值