java学习日志(3)递归、面向对象的思想、API、Scanner、类及方法、栈、堆

来源:互联网 发布:photoshop2017 mac 编辑:程序博客网 时间:2024/05/21 04:41

递归,简单的说就是自己调用自己。以算阶乘为例:

package cn.bjsxt.test;
/**
 * 测试递归算法,并算了个阶乘
 * @author xiaofeng
 * @version 1.0
 */
//测试递归
public class TestRecursion {
/**
* 计算阶乘,阶乘是5!
* @param m 阶乘的最大数
* @return 阶乘的结果
*/
public static long Jiec(int m){
if(m==1){
return 1;
}else{
return m*Jiec(m-1);
}
}
public static void main(String[] args){
long result = Jiec(5);
System.out.println(result);
}
}

这里也包含了封装?包的内容。/**


关于Scanner,用户输入:

import java.util.Scanner;//Scanner在另外的库里,需要声明
public class TestScanner {
public static void test01(){
Scanner s = new Scanner(System.in);
int a = s.nextInt();
int b = s.nextInt();
int sum = a + b;
System.out.println(sum);

}
public static void main(String[] args){
test01();
}
}


包(package)是用来管理类(class)的,java.lang包含一些核心的类,如String Math Integer System Thread, 可以直接引用。另外java.awt jaca.net java.io java.util也是常用的包。

API:Application Programming Interface 应用程序编程接口。

面向对象的思想:以类的方式组织代码,以对象的方式组织(封装)数据。


内存分析:

栈:自动分配连续的空间,后进后出

堆:不连续,放置new出的对象。方法区:包含在堆里面,存放类的信息(代码),static变量、常量池。

代码:

package cn.bjsxt.oop;


public class Student {
//静态的数据
String name;
int id;  //学号
int age;
String gender;
int weight;
//动态的行为
public void study(){
System.out.println(name+"在学习");
}

public void sayhello(String sname){
System.out.println(name+"向"+sname+"说你好");
}

public static void main(String[] args){
Student s1 = new Student();//s1创建的时候,存在默认值除了8种数字类型,都是null,数字类型默认为0。局部变量则没有默认值
//通过类加载器Class Loader加载Student类。加载后在方法区中就有了Student类的信息。这里加载的是.class文件
s1.name = "mm";
s1.study();
s1.sayhello("ning");

Student s2 = new Student();
s2.name = "zxf";

}
}

参见16.8.1P2class31笔记。

0 0