Java入门小结(2)

Java内存

  1. 栈(Stack):存放的都是方法中的局部变量。方法的运行一定要在栈中。
  2. 堆(Heap):凡是new出来的东西,都在堆中。堆内存里面的东西都有一个地址值(16进制)。堆内存里面的数据都有默认值。整数(0),浮点数(0.0),字符(’\u0000’),布尔(false),引用类型(null)。
  3. 方法区(Method Area):存储.class相关信息,包含方法的信息。
  4. 本地方法栈(Native Method Stack):与操作系统相关。
  5. 寄存器(pc Register):与cpu相关。

小提示

  • 引用类型变量都可以赋null值,如果数组只是赋值了null,而没有进行new创建,那么会发生空指针异常NullPointException
  • 获取数组长度:数组名称.lenth。(数组一旦创建,程序运行期间,长度不可改变)
  • 索引=下标

数组

// 动态初始化(指定长度)| 可拆分
int[] arrayA =  new int[300];
/* <==>
 * int[] arrayA;
 * arrayA = new int[300];
*/
String[] arrayB = new String[5];
// 静态初始化(指定内容)| 可拆分为两个步骤(同上面一样)
int[] arraya = new int[] { 5, 15, 25 };
// 创建一个数组,来装字符串
String[] arryb = new String[] { "hello", "world", "java" };
// 省略格式 | 不可拆分为两个步骤
int[] arrayc = { 10, 20, 30 };
  • 数组可以作为方法的参数,当调用方法的时候,向方法的小括号进行传参,传递进去的是数组的地址值。

数组作为方法返回值

public static  int[] calculate(int a, int b, int c) {// 数组作为方法返回值
	int sum = a + b +c;
	int avg = sum / 3;
	int[] array = { sum, avg };
	return array;
}

类和对象

  • 概念:类=成员变量(属性)+成员方法(行为)
  • 重点:普通方法有static关键字(不需要对象就能调用),成员方法没有static关键字。
  • 成员变量直接定义在类当中,在方法外面。

对象的创建及使用

1.导包:
指出需要使用的类在什么位置。
import 包名称.类名称
例如:import cn.itcast.day06.demo01.Student;
2.创建
格式:类名称 对象名 = new 类名称();
例如:Student stu = new Student();
3.使用
对象名.成员变量名(如果没有进行赋值,那么将会有一个默认值,规则和数组一样)
对象名.成员方法名()

对象作为方法的返回值

例子:

public static Student getStudent() {
	Student stu1 = new Student();
	stu1.name = "小红";
	stu1.age = 18;
	return stu1;
}

加餐
成员变量和局部变量的区别(方法的参数也是局部变量)
1.定义的位置不一样【重点】
局部:在方法的内部。
成员:在方法的外部,直接写在类当中。
2.作用域【重点】
局部:只有方法当中才可以使用,出了方法就不能再用。
成员:整个类全都可以使用。
3.默认值【重点】
局部:没有默认值,如果要想使用,必须手动进行赋值。
成员:如果没有赋值,会有默认值,规则和数组一样。
4.内存位置不一样(了解)
局部:位于栈内存。
成员:位于堆内存。
5.生命周期不一样(了解)
局部:随着方法进栈而诞生,随着方法出栈而消失。
成员:随着对象创建而诞生,随着对象被垃圾回收而消失。

面向对象的三大特征之封装

封装在java中的体现:
1.方法就是一种封装。
例子:

    public static int getMax(int[] array) {
        int max = array[0];
        for (int i = 1; i < array.length; i++) {
            if(array[i] > max){
                max = array[i];
            }
        }
        return max;
    }

2.关键字private也是一种封装。(private关键字的作用及使用)
private int age;//使用private进行修饰,那么本类当中仍然可以随意访问,但是,超出本类范围之外就不能直接访问了。

private boolean male;
...
    public void setMale(boolean s) {
        male = s;
    }
    public boolean isMale() {//对于基本类型当中的boolean值,getter方法写成isXxx,而setXxx不变
        return male;
    }

敲黑板(this关键字的作用)

  • 当方法的局部变量和类的成员变量重名的时候,根据“就近原则”,优先使用局部变量。
  • 如果需要访问本类当中的成员变量,需要使用格式:this.成员变量名
    例子:
    public void sayHello(String name) {
        System.out.println(name + ",你好。我是:" + this.name);
    }
  • 解释:通过谁调用的方法,谁就是this(及当前对象)

构造方法

定义:专门用来创建对象的方法,当我们通过关键字new来创建对象时,其实就是在调用构造方法。
格式:

public 类名称(参数类型 参数名称) {
    方法体
}

注意事项:
1.构造方法的名称必须和所在的类名称完全一致,大小写也一样。
2.构造方法不写返回值,void也不写。
3.如果没有编写任何构造方法,那么编译器会默认赠送一个构造方法,没有参数,方法体什么也不做。
4.一旦编写了至少一个构造方法,那么编译器将不再赠送。
5.构造方法也是可以重载的。重载:方法名称相同,参数列表不同。

  • 小贴士
    一个标准的类通常要拥有下面四个组成部分:
    1.所有的成员变量都要使用private关键字修饰。
    2.为每一个成员变量编写一对Getter/Setter。
    3.编写一个无参数的构造方法。
    4.编写一个全参数的构造方法。
    这样标准的类也叫Java Bean。
    ------------------------------------------华丽的分割线-----------------------------------------
    在IDEA中:
  • 自动生成Getter/Setter代码(Code->Generate->Getter and Setter,成员变量都选择)
  • 自动生成构造方法代码(Code->Generate->Constructor,Select None:无参构造方法;都选是全参构造方法)

API的概述和使用步骤(程序员随手使用的字典)

Scanner类(功能:可以实现键盘输入数据,到程序当中)

引用类型的一般使用步骤:
1.导包(直接创建就会有提示,如果未导包的话,会变红,将光标放在变红的类上,按alt+enter即可)
格式:import 包路径.类名称
提示
如果需要使用的目标类,和当前类位于同一个包下,则可以省略导包语句不写。
只有java.lang包下的内容不需要导包,其他的包都需要import语句。
2.创建
类名称 对象名 = new 类名称();
3.使用
对象名.成员方法名()

匿名对象

创建对象的标准格式:类名称 对象名 = new 列名称();

  • 匿名对象就是只有右边的对象,没有左边的名字和赋值运算符。
new Person().name = "热巴";

注意事项:匿名对象只能使用唯一的一次,下次再用不得不再创建一个对象。
使用建议:如果确定有一个对象只需要使用唯一的一次,就可以用匿名对象。

匿名对象作为方法的参数和返回值

1.作为返回参数

methodParam(new Scanner(System.in));//调用方法
...
    public static void methodParam(Scanner sc) {//方法
        int num = sc.nextInt();
        System.out.println("输入的是:" + num);
    }

2.作为返回值

    public static Scanner methodReturn() {
        return new Scanner(System.in);
    }

Random类(用来生成随机数字)

步骤:
1.导包
import java.util.Random;
2.创建
Random r = new Random();//小括号留空即可
3.使用

  • 获取一个随机的int数字(范围是int所有范围,有正负两种):int num = r.nextInt();
  • 获取一个随机的int数字(参数代表了范围,左闭右开区间):int num = r.nextInt(3);
  • 实际上代表的含义是:[0,3),也就是0~2。
    例子:
        //输出100个在0~9之间的随机数字
        Random r = new Random();
        for (int i = 0; i < 100; i++) {
            int num = r.nextInt(10);// 实际范围0~9
            System.out.println(num);
        }

补充
对象数组(定义一个数组,用来储存对象)
例子:

// 首先创建一个长度为3的数组,用来存放Person类型的对象
Person[] array = new Person[3];

Person one = new Person("小明",16);
Person two = new Person("小红",17);
Person three = new Person("小刚",15);

// 将one,two,three中的地址值赋值到数组的0,1,2号元素位置
array[0] = one;
array[1] = two;
array[2] = three;

System.out.println(array[0].getName());

输出结果:小明

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值