java初学--第二篇(数组、内存分配、重载、面向过程、面向对象)
特点:
--数组是存储多个变量(元素)的容器
--着多个变量的数据类型要一致
格式
-格式1: 数据类型[] 数组名; ---常用。定义一个整形数组,名为数组名
-格式2: 数据类型 数组名[]; ---定义一个变量为 数组名[]
--注意:定义做完,数组中是没有元素值的。
赋值方式:
-1.动态赋值 数据类型[] 数组名 = new 数据类型[长度];
-2.静态赋值 数据类型 数组名[] = {100,2000,300,100};
==》数据类型 数组名[] = new int[]{100,2000,300,100};
Java中的内存分配
--栈 存储局部变量
--堆 存储new出来的东西
--方法区
--本地方法区(和系统相关)
--寄存器(给CPU使用)
方法定义及格式
--方法就是完成特定功能的代码块
--在很多语言里面都有函数的定义
--函数在java中被称为方法
--格式
--修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...){
函数体;
return 返回值 ;
}
方法重载
--概述
--在同一个类中,允许存在一个以上的同名方法,只要它们的参数个数或者参数类型不同即可。
--特点
--与返回值类型无关,只看方法名和参数列表
--在调用时,虚拟机通过参数列表的不同来区分同名方法
数据加密
package com.demo;
import java.util.Scanner;
public class Test06 {
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个四位数:");
int number = sc.nextInt();
int[] arr=new int[4];
arr[0]=number/1000%10;
arr[1]=number/100%10;
arr[2]=number/10%10;
arr[3]=number%10;
for (int i = 0; i < arr.length; i++) {
arr[i]+=5;
arr[i]%=10;
}
reverseArray(arr);
System.out.print("加密后的数为:");
for (int j : arr) {
System.out.print(j);
}
}
public static void reverseArray(int[] arr){
for (int start=0,end= arr.length-1;start<=end;start++,end--){
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
}
}
面向过程
--需求单一。简单,一步一步操作可以使用。C语言
面向对象
--将复杂的事情简单化
--将我们从执行者变成指挥者
--角色发生了转变
举例
洗衣服:
面向过程:把衣服脱下来--》找盆--》加洗衣粉--》加水--》浸泡--》揉一揉--》清洗--》拧干--》晾晒
面向对象:(区分为我和洗衣机两个对象)把衣服脱下来--》打开全自动洗衣机--》扔衣服--》按钮--》晾晒
类和对象案例
--创建对象
-类名 对象名= new 类名();
-Student s = new Student();
--对象名.成员变量
--对象名.成员方法
--class 描述类
成员变量和局部变量区别
-在类中的位置不同
--成员变量类中方法外
--局部变量方法内或者方法声明上
-在内存中的位置不同
--成员变量 堆内存
--局部变量 栈内存
-生命周期不同
--成员变量随着对象的存在而存在,随着对象的消失而消失
--局部变量随着方法的调用而存在,随着方法的调用完毕而消失
-初始化值不同
--成员变量有默认的初始化值
--局部变量没有默认的初始化值,必须先定义,赋值,才能使用。
private关键字
-一个权限修饰符
-可以修饰成员(成员变量和成员方法)
-被private修饰的成员只在本类中才能访问。
应用
-把成员变量用private修饰
-提供对应的个体Xxx()/setXxx()方法
-一个标准的案例的使用
封装
-封装概述
--面向对象的三大特征之一
--客观世界里成员变量都是隐藏在对象内部的,外界无法直接操作和修改
-封装原则
--将不需要对外提供的内容都隐藏起来。
--把属性隐藏,提供公共方法对其访问
---成员变量private,提供对应的getXxx()/setXxx()方法
-好处
--通过方法来控制成员变量的操作,提高了代码的安全性
--把代码用方法进行封装,提供了代码的复用性
this关键字
-this:代表所在类的对象引用
--方法被哪个对象调用,this就代表哪个对象
构造方法
-概述
--给对象的数据进行初始化
-格式
--方法名与类名相同
--没有返回值类型,连void都没有
--没有具体的返回值
-注意
--不提供构造方法,系统会给出默认构造方法
--提供了构造方法,系统将不再提供
--构造方法也是可以重载的
标准类的代码写法和测试
-类
--成员变量
--构造方法
---无参构造方法
---带参构造方法
--成员方法
---getXxx()
---setXxx()
-给成员变量赋值的方式
--无参构造方法+setXxx()
--带参构造方法
面向对象标准案例(学生类)
package com.demo5
public class Student{
/**
*学习
*/
public void study{
System.out.println("好好学习!");
}
}
package com.demo5;
public class Teacher {
public Student getStudent() {
Student s=new Student();
return s;
}
}
package com.demo5;
public class Test {
public static void main(String[] args) {
Teacher t = new Teacher();
Student s = t.getStudent();
//Student s = new Student();
s.study();
}
}
-类名作为形式参数案例
--要的其实是该类的对象
-类名作为返回值案例
--返回的其实是该类的对象
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!