第四记 p397
跟着动力节点学 目前p397

sun公司开发 带头人: James gosling
特点
简单性 多线程 面向对象 可移植
jdk jre jvm
方法
方法只有程序员手动调用的时候 才会执行
方法不调用 是不会执行的。
方法定义在类体。
方法 method 是一段可以被重复利用的 完成特定功能 的代码片段;
C语言 被称为函数 在Java中叫做函数。
一般一个方法就是一个功能单元。
局部变量
方法结束后,局部变量占用的内存会自动释放
定义
形式参数列表 形参 局部变量 0—N个 有多个的话。用“,”隔开 形参的数据类型 起决定性作用 变量名随意。
public static void sumInt (int x)
{
}
方法的调用
方法必须调用才可以执行
类名.方法名 类名可以省略
跨类 调用 不能省略类名
break
break 终止循环 switch
return 终止一个方法;
public class method{
public flag = true;
if(flag){
return 1;
}
}
// 报错 缺少返回语句。
带else 可以保证一定会有个分支执行。
return 下面不能再编写代码。
jvm内存
栈数据结构 stack
栈数据结构特点 先进后出,后进先出。
jvm三块主要的内存 栈内存 堆内存 方法区
方法调用 叫压栈 分配空间 push
方法结束叫 弹栈 释放空间 pop
方法的重载
public static overload{
public static void main(String [] args)
{
int x =sumint(10,20);
system.out.println(x);
int y =sumlong(10,20);
system.out.println(y);
}
public static int sumint(int a,int b){
return a+b;
}
public static long sunlong (long a,long b){
return a+b;
}
}
}
功能相似 的可以让方法名重合 更易于以后的代码编写
方法名相同的情况下,编译器会通过方法的参数类型进行方法的区分。
有利于代码美观
方法重载和方法的“返回值类型”无关
方法重载和方法的”修饰符列表“无关 public static
方法递归
-
方法自己调用自己
-
必须要有结束条件
结束条件是对的 也可能发生内存溢出错误 因为递归的太深 ,栈内存不够了 一直在压栈
-
在实际开发中,不建议轻易使用递归,尽量使用循环来做 效率高,耗费内存少
递归使用不当 会导致jvm死掉
cmd
java-x 查看调整栈的大小
初始化 扩大栈的内存大小
面向对象
面向过程和面向对象有什么区别
C语言是面向过程 完全面向过程
c++半面向对象
Java完全面向对象的
-
面向过程:注重步骤 注重实现功能的因果关系
缺点:每一步与每一步的因果关系,一个问题 整个系统运转出错耦合度太高扩展力太差
优点:对于小型项目,效率高,不需要进行对象的提取,模型的建立,直接写代码
-
面向对象:更符合人类的思维方式 (面向对象成为主流的原因)
将现实世界分割成不同单元 然后每一个单元实现成对象,各个对象协作起来,形成系统
耦合度低。扩展力强。
OOA/OOD/OOP
面向对象分析ooa
面向对象设计ood
面向对象编程oop
实现一个软件过程
分析(A)-->设计(D)--->编程(P)
面向对象的三大特征
封装 继承 多态
任何一个面向对象的编程语言都包括这三个特性
python也有封装 继承 多态。
类和对象的概念
在Java语言中,要想得到“对象”必须先定义“类“,对象是通过”类“这个模板创造出来的
类就是一个模板,类中描述的是所有对象的共同特征,对象就是通过类创建出来的个体。
通过类创建对象的过程可以称为实例化;
通过对象到类的过程是抽象。
对象(实例)
类
类体=属性 +方法
属性 以变量 的形式存在
对象
对象的创建和使用
-
new 类名();
new 是一个运算符。
访问
-
类型 变量名 = new xuesheng();
xuesheng s1=new xuesheng();
Java中所有类都是引用数据类型
编译过程
-
javac XueSheng.java
javac XueShengTest.java
-
java XueShengTest.java
-
javac *.java
对象存储在堆内存中
对于成员变量来说 没有手动赋值 默认赋默认值
访问实例变量
引用.实例变量名
s1.name
标识符可以有中文
空指针异常、
出现空指针异常 的前提条件是 “空引用”访问实例对象相关的数据时,都会出现空指针异常
该对象没有引用指向他 ,Java中规堆内存 程序员是无权利直接操作的。等待垃圾回收器GC回收
GC会将这个垃圾对象释放掉
Java中的垃圾回收器GC 主要针对回收的是堆内存中的垃圾数据
没有任何引用指向该对象的时候 会被回收
方法调用时参数的传递问题
Java中规定 参数传递的时候 和类型无关,不管是基本数据类型还是引用数据类型
统一将盒子中保存的值复制一份 传递下去
局部变量 在方法体中有效 出来就释放了。
Java中变量赋值的原理
永远都是一个规律 将盒子中保存的那个值复制一份 传过去;
可能是数字 也可能是对象内存地址

浙公网安备 33010602011771号