我的周记2

获取数组中的数据:数组名 [索引]
获取并赋值数组中的数据:int 名称 = 数组名 [索引];
索引是从左至右,从0~... , 有几个元素,就有几个索引,最大索引是数组的长度减一;

数组的遍历:
数组遍历就是将数组中的所有内容取出来,取出来之后可以(打印,求和,判断...)
遍历是指取出数据的过程,不要局限的理解为,遍历就是打印
Java中,关于数组的一个长度属性用.length表示,调用方式为:数组名.length

一个循环尽量只做一件事情

数组动态初始化:初始化时只指定数组长度,由系统为数组分配初始量
格式:数据类型 [ ] 数组名 = new 数据类型 [ 数组长度 ];
范例:int [ ] arr = new int [ 3 ] ;
数组默认初始化值的规律:
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值'\u0000',表示为空格
布尔类型:默认初始化值 false
引用数据类型:默认初始化值 null
动态初始化数组数值赋值:数组名 [ 索引 ] = 数值;
打乱数据:int randomIndex = r.nextInt (arr.length);
        int temp = arr [ i ] ;
        arr [ i ] = arr [ randomIndex ] ;
        arr [ randomIndex ] = temp ;
二维数组:
二维数组的声明方式与一维数组类似,内存的分配也一样是用new运算符。
其声明与分配内存的格式如下所示:
数据类型[][]数组名; 数组名=new数据类型[行数][列数];
范例:
int[][]a; //声明二维整型数组a
a=new int[3][4]; //分配一块内存空间,供3行4列的整型数组a使用

Java的内存分配:
栈    方法运行时使用的内存,比如main方法运行,进入方法栈中执行
堆    存储对象或者数组,new来创建的,都存储在堆内存
方法区     存储可以运行的class文件
本地方法栈    JVM在使用操作系统的时候使用,和我们开发无关
寄存器    给CPU使用,和我们开发无关

注意: sout(arr[])是可以打印数组的
Sting s="hello";堆内存只有strings,值在方法区常量池,因为string是引用类型但是没有new

只要是new一定开辟了空间
栈是方法执行区,堆是存储与new相关的一大片空间,如果new了多次,堆里面就会有不同的各自独立的小空间。
从内存的角度去解释:
基本数据类型:数据值是存储在自己的空间中    特点:赋值给其他变量,也是赋的真实的值
引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值    特点:赋值给其他变量,赋的是地址值
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值


方法是程序最小的执行单元
工程-模块-包-类-方法-语句
方法(C中的函数)就是封装了一段可重复调用的代码块,作用可以重复使用代码
C语言中的函数可以返回任何类型的值,而Java中的方法必须返回一个值或void。  C语言中的函数可以有任意数量的参数,而Java中的方法必须有一个或多个参数。


方法必须先定义再调用,看到方法进入方法,执行完毕回到调用处
方法的定义:
public static void 方法名 () {    方法体 (就是打包起来的代码) ;}


方法的调用:
public static void main (String [] args)
{
    方法名 () ;
}

形参:形式参数,即方法定义中的参数。
实参:实际参数,即方法调用中的参数。
定义时变量定义在小括号里面,不赋值,调用时要在调用方法名后的小括号里赋值,数量与类型都要对应
范例:public static void main (String [] args)
    {
        getSum ( 10 ,20 );
    }
    public static void getSum (int num1 ,int num2 )
    {
        int result = num1 + num2 ;
        System.out.println(result);
    }

为了在调用处拿到方法的结果
返回得到一个计算结果,可以输出计算结果
不返回,主函数没办法用调用函数里的结果
返回格式:
public static 返回值数据类型 方法名 (参数)
{
    方法体;
    return 返回值;
}

void表示返回空,即什么都不返回
return表示将后面结果返回到方法调用处,和循环无关,和方法有关,表示结束方法并返回结果,如果方法执行到了return,则整个方法结束,里面的循环也会随之结束了
break和方法无关,表示结束循环或者switch的

方法的重载:方法的重载是指在不同的参数(参数类型或数量)的情况下实现同样的功能可以用同一个方法名调用实现
             同一个类,方法名一样,形参不一样


面向对象编程:拿东西过来做对应的事情
学习获取已有对象并使用
学习如何自己设计对象并使用:面向对象的语法
面向对象的三大特征:封装 继承 多态
封装:作用是告诉我们如何正确设计对象的属性和方法    对象代表什么,就得封装对应的数据,并提供数据对应的行为

类和对象
类(设计图):是对象共同特征的描述;
对象:是真实存在的具体东西(根据设计图造出来的东西)
Java中,必须先设计类,才能获取对象

用来描述一类事物的类,专业叫做: Javabean类.    在Javabean类中,是不写main方法的.
在以前,编写main方法的类,叫做测试类.    我们可以在测试类中创建Javabean类的对象并进行赋值调用.

如何定义一个类:
public class 类名
{
    1. 成员变量 (代表属性,一般是名词)
    2. 成员方法 (代表行为, 一般是动词)
    3. 构造器 
    4. 代码块
    5. 内部类
}
范例:
public class Phone 
{
    //属性 (成员变量)
    String brand;
    double price;
    //行为(方法)
    public void call ()
    {
        System.out.println("手机在打电话");
    }
    public void playGame()
    {
        System.out.println("手机在玩游戏");
    }
}

创建对象用new创建
如何创建类的对象:
    类名 对象名 = new 类名 (); 中的()中的内容是用来调用构造方法的,为空则调用空参构造
范例: phone p = new phone();
public class PhoneTest
{
    public static void main (String [] args)
    {
        Phone p = new Phone ();
    }
}

如何使用对象:
访问属性: 对象名.成员变量
访问行为: 对象名.方法名(...)

public class PhoneTest
{
    public static void main (String [] args)
    {
        //创建对象
        Phone p = new Phone ();
        //叫做给手机赋值
        p.brang = "小米" ;
        p.price = 1999.98 ;
        //获取手机对象中的值
        System.out.println(p.brand);
        System.out.println(p.price);
        //调用手机中的方法即可
        p.call();
        p.playGame();
    }
}

类名首字母建议大写,需要见名知意,驼峰模式.
一个Java文件中可以定义多个class类,但只能有一个类是public修饰,并且public修饰的类名必须成为代码文件名.    实际开发中建议还是一个文件定义一个class类.
成员变量的完整定义格式是:修饰符 数据类型 变量名称 = 初始化值 ;    一般无需指定初始化值,存在默认值.

权限修饰符:
不加修饰符不是public,是允许本类和同包类访问
public 公共访问控制符,可以被任何对象或任何对象的方法访问
private 私有访问控制符,可以修饰成员(成员变量和成员方法),指定该变量只允许自己类的方法访问其他任何类(包括子类)中方法均不能访问此变量

set方法: 给成员变量赋值;
范例:
public void setName (String name)
{
    this.name = name ;
}
get方法: 对外提供成员变量的值;
范例:
public String getName ()
{
    return name ;
}


就近原则
因为是在方法中定义,在方法中调用就近原则
定义在方法里面的是局部变量
this.就是使用成员变量,可以区分成员变量和局部变量
this的本质: 所在方法调用者的地址值
setName将数值给形参,再由this传给实参

构造方法---创建对象中的一步
概述: 也叫作构造器,构造函数
作用: 在创建对象的时候给成员变量进行初始化的,是用来实例化对象方便赋值的
构造方法的格式:
public class Student 
{
    //构造方法
    修饰符 类名 (参数)
    {
        方法体;
    }
}
特点:
1. 方法名与类名相同,大小写也要一致;
2. 没有返回类型,连void都没有;
3. 没有具体的返回值 (不能由return带回结果数据)
细节(执行时机):
1. 创建对象的时候由虚拟机调用,不能手动调用构造方法
2. 每创建一次对象,就会调用一次构造方法

范例:
public class Student
{
    private String name;
    private int age;
    
    public Student()
    {
        ...    //空参构造方法
    }
    public Student (String name ,int age)
    {
        ...    //带全部参数构造方法
    }
}

注意:
构造方法的定义:    如果没有定义构造方法,系统将会给出一个默认的无参数构造方法 ; 如果定义了构造方法,系统将不再提供默认的构造方法
构造方法的重载:    带参构造方法,无参数构造方法,两者方法名相同,但参数不同,这叫做构造方法的重载
推荐使用方法:    无论是否适用,都手动书写无参数的构造方法,和带全部参数的构造方法
构造方法概述:    创建对象的时候,虚拟机会自动调用构造方法,作用是给成员变量进行初始化的

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值