0510课堂笔记--数组-面向对象
1. 数组的工具类
Arrays.toString()–查看数组元素
Arrays.sort()–数组元素排序
Arrays.copyOf()–复制数组/数组的扩容 /缩容
Arrays.copyOfRange()–指定首位元素复制原数组
package cn.tedu.arrays;import java.util.Arrays;//本类测试数组的 工具类Arrays
public class TestArraysSortAPI {public static void main(String[] args) {// f1();//测试toString--查看数组元素// f2();//测试 sort--数组元素排序f3();// 测试 copyof--复制数组 /数组的扩容/缩容}public static void f3() {// 3. 创建测试数组/** 数组一旦创建,长度不可改变 */int[] from = { 1, 2, 3, 4, 5 };// 3.1 数组的普通复制/** 两个参数:(original, newLength) 要复制谁,复制的长度 */int[] to = Arrays.copyOf(from, 5);System.out.println(Arrays.toString(to));// 3.2 数组的扩容/*** 扩容:扩充 容量,并不是修改远数组 先创建对应长度的新数组,复制原数组的数据,其余位置为int默认值0*/int[] to2 = Arrays.copyOf(from, 10);System.out.println(Arrays.toString(to2));// 3.3 数组的缩容/*** 扩容:减少容量,并不是修改远数组 先创建对应长度的新数组,复制原数组前面部分数据,类似于截取*/int[] to3 = Arrays.copyOf(from, 3);System.out.println(Arrays.toString(to3));// 3.4 指定首尾元素复制原数组// (original, from, to)复制的是下标[2,4)位置上的元素a(2)--a(3)int[] to4 = Arrays.copyOfRange(from, 2, 4);System.out.println(Arrays.toString(to4));}// 2. 创建f2()测试Arrays.sortpublic static void f2() {// 2.1 准备一个乱序数组int[] a = { 9, 55, 2, 355, 223, 0 };// 2.2 用工具类方法对a数组进行排序/*** sort()方法是底层优化过的快速排序算法 是直接对无序数组进行排序,排序后a数组就是有序数组*/Arrays.sort(a);System.out.println(Arrays.toString(a));}// 1. 创建f1()用来测试Arrays.toString(数组名)public static void f1() {// 定义长度为3的String类型的数组String[] s = new String[3];s[0] = "A";s[1] = "B";s[2] = "C";System.out.println(s);// [Ljava.lang.String;@15db9742 这是地址值System.out.println(Arrays.toString(s));// [A, B, C] 具体元素}
}
2. 面向对象 类 对象 封装
2.1 面向对象概念
面向对象和面向方法都是编程思想
2.2 面向对象的三大特征
封装 继承 多态
2.2 类和对象
类:Java最基本的单位,类似于类型,类是一类事物的抽象,可以理解为模版或者设计图纸
对象:三个特征:状态,行为和标识
状态–基本特征–成员变量
行为–功能–方法
标识–对象内存在唯一的地址值和其他对象区分
类是一类事物的抽象,对象是具体的实现
2.3 类的创建练习
package cn.tedu.oop;//本类用于练习面向对象
/**分析手机这一类事物--通过类来描述* 属性:品牌 价格 颜色 尺寸* 功能:打电话 发微信 看视频* */
/*** 在一个java文件中可以写多个class,但是被public修饰的只能有一个 而且这个公共类的名字必须 与文件名保持一致*/
public class TestCreateClass {// 2. 创建入口函数public static void main(String[] args) {// 3. 在main()方法中通过new关键字来创建对应类的对象Phone p = new Phone();// 4. 通过.来完成对象功能的调用p.call();// 调用打电话的方法p.message();p.video();// 5. 通过.来查看对象的属性值System.out.println(p.brand);System.out.println(p.color);System.out.println(p.price);System.out.println(p.size);// 6.创建第二个对象Phone p2 = new Phone();// 8.给p2对象设置属性值p2.color = "五彩斑斓的黑";p2.brand = "banana";p2.price = 6666.66;p2.size = 233;// 7. 通过p2对象 查看属性值System.out.println(p2.brand);System.out.println(p2.color);System.out.println(p2.price);System.out.println(p2.size);// 9.通过p2对象,调用模版里的功能p2.call();p2.message();p2.video();}
}/*** 通过class关键字描述一个类型 类是一类事物的抽象,抽象的规定这一类事物的特征与行为*/
//1.创建手机类
class Phone {// 特征(属性)--用类的成员变量来 描述--位置:类里方法外String brand;// 品牌double price;double size;String color;// 功能(行为)--用类的方法来描述--修饰符 返回值类型 方法名(参数列表 ){方法体}public void call() {System.out.println("正在打电话");}public void message() {System.out.println("发微信");}public void video() {System.out.println("看视频");}
}
2.4 对象在内存中的储存
Java把内存分成5大区域,我们重点关注栈和堆。
一般来讲局部变量存在栈中,方法执行完毕内存就被释放
对象(new出来的东西)存在堆中,对象不再被使用时,内存才会被释放
每个堆内存的元素都有地址值
对象中的属性都是有默认值的
TIPS: 栈与队列指的是一种数据的结构。
栈:先进后出(FILO – First In Last Out)
队列:先进先出(FIFO – First In First Out)
p2.brand = “HUAWEI”;
就是先到栈内存中找到p2中保存的唯一的地址值
然后根据地址值找到对应的Phone对象,并对其对应的属性值进行修改
p2.eat();
也是先到栈内存中找到p2中保存的唯一的地址值
然后根据地址值找到对应Phone对象,执行Phone对象的eat()方法
创建对象时,内存经历了什么?
1.在栈内存中开辟一块空间,存放引用类型变量p,并把p压入栈底
2.在堆内开辟一块空间,存放Phone对象
3.完成对象的初始化,并赋予默认值
4.给初始化完毕的对象赋予唯一的地址值
5.把地址值交给引用类型变量p保存
2.5 封装
封装是隐藏对象的属性和实现细节,仅仅对外提供公共的访问方式,比如类和方法
好处:
提高安全性
提高重用性
private关键字:是一个权限修饰符 ,可以用来修饰成员变量和成员方法.被私有化的成员只能在本类中访问
2.5.1 封装练习
package cn.tedu.oop;//本类用于测试封装
public class TestPrivate {public static void main(String[] args) {// 4. 创建学生类对象--newStudent s = new Student();// 5. 初步测试学生类对象s// s.eat();//调用s对象的方法s.study();s.sno = 441513;s.name = "程序猿";// s.subject="java培优";//The field Student.subject is not visibleSystem.out.println(s.name);// 调用s对象的name属性,查看它的值System.out.println(s.sno);// System.out.println(s.subject);// 8. 通过student类中提供的get/set方法操作属性值subjects.setSubject("JAVA CGB");// 调用对外公共赋值方式,用set.System.out.println(s.getSubject());// 调用对外提供的公共查看方式,用get.}
}//1.通过关键字class创建 学生类--用来描述学生这一类型--属性+行为
/*** 封装:通过private关键字(权限修饰符 )来修饰成员变量/成员方法 被修饰的成员实现了私有化,访问权限只能在本类中访问*/
class Student {public char[] setSubject;// 2. 定义属性--成员变量String name;// 姓名int sno;// 学号/* private对subject进行了私有化,只能在本class里面使用,外面的main方法就无法访问了 */private String subject;// 科目/** 6. 对外提供公共的属性值设置方式 */public void setSubject(String s) {subject = s;// 将用户设置的变量s赋值给subject}/** 7. 对外提供公共的属性值查看方式 */public String getSubject() {return subject;}// 3. 定义功能--方法public void study() {System.out.println("正在学习JAVA~");}public void eat() {System.out.println("干饭人");}
}
package cn.tedu.oop;//本类用于oop综合练习
public class TestTeacher {// 4.在公共类中,创建入口函数main()方法public static void main(String[] args) {// 5.创建Teacher对象Teacher t = new Teacher();// 6.1设置属性值:对象.set.namet.setName("白小纯");// 6.2打印获取到的属性值:对象.get.nameSystem.out.println(t.getName());}
}//1.创建类
class Teacher {// 2.1提供属性// 2.2对属性进行封装:privateprivate String name;private String gender;// 性别private int age;private double salary;// 薪水// 3. 创建一些自己的功能方法public void ready() {System.out.println("正在备课~");}public void teach() {System.out.println("正在授课~");}// 2.3需要给外界提供公共的属性值设置和获取方法// 快捷键:右键->Source->GT全选public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public double getSalary() {return salary;}public void setSalary(double salary) {this.salary = salary;}
}
类–一类事物的抽象–模版
1.创建类
2.创建类的属性
3.封装类的属性
4.提供get与set方法
5.提供一些本类分功能
创建对象
通过对象的调用方法
1.可以调用set方法设置修改私有属性的值
2.可以调用get方法获取私有属性的值
3.可以调用普通的方法执行对应的功能
新单词
field 字段
visible 可见的
0510课堂笔记--数组-面向对象相关推荐
- Hibernate课堂笔记
Hibernate课堂笔记 Hibernate第一天 一:hibernate的基础知识 Hibernate的整体思想就是"操作对象的过程,就是操作数据库表的过程".如图: 1:Hi ...
- 课堂笔记学习java(初级)
这是有关Java语言基础的,偶这学期专业课开始学习java,希望通过此贴把偶的课堂笔记与大家分享,与初学者共同从零学起,还请各位高手随时指点,引导大家把基础打好,谢谢 . 现在每周两节课,偶 ...
- Nodejs课堂笔记02
第3天课堂笔记 ##1. 知识点 模块系统 核心模块 1. 文件操作的fs 2. http服务的http 3. url 路径操作模块 4. path 路劲处理模块 5. os 操作系统模块 第三方模块 ...
- 计算机网络微课堂笔记
计算机网络 计算机网络微课堂 笔记总结 视频地址:https://www.bilibili.com/video/BV1c4411d7jb 文章目录 计算机网络 第一章 概述 1.1 计算机网络在信息时 ...
- 机器学习课堂笔记-作业二基本实现思路
机器学习课堂笔记-作业二基本实现思路 作业2-年收入判断 项目描述 数据集介绍 项目要求 数据准备 环境配置/安装 事先说明 一.概率生成模型 1. 读取数据 整理训练数据 2. 协方差矩阵计算 手动 ...
- 程序设计与算法郭炜老师的课堂笔记2
程序设计与算法郭炜老师的课堂笔记2 枚举 完美立方 生理周期 称硬币 熄灯问题 递归 求阶乘 汉诺塔 N皇后 逆波兰表达式 表达式求值 上台阶 放苹果 算24 二分算法 找一对数 分治 归并排序 快速 ...
- 程序设计与算法郭炜老师的课堂笔记1
程序设计与算法郭炜老师的课堂笔记1 基础 与或非 位运算 字符串操作库函数 strtok尝试 字符串0新认识 void 指针无定义 快排 变量 排序 Vector vector示例 用**vector ...
- 程序设计与算法郭炜老师的课堂笔记3
程序设计与算法郭炜老师的课堂笔记3 从C到C++ 引用 引用作为函数参数 引用作为函数返回值 常引用 const关键字 定义常量 定义常量指针 定义常引用 动态内存分配 用new开内存 用delete ...
- javaweb课堂笔记(一)
文章目录 javaweb课堂笔记(一) 一.tomcat服务器 二.JSP 1.JSP执行特点 2.JSP语法特点 4.指令 1)page 2)指令 三.表单(登录) 1.表单 2.异常 3.登录界面 ...
最新文章
- 那些不回微信的人,都在想什么?
- 状态机思路在程序设计中的应用
- 知乎回应月饼问题:忽略了麦芽糖或致部分人不耐受,召回所有月饼
- SQL UNION 和 UNION ALL 操作符
- 图片链接在FireFox下好用,但是在IE下不好用!
- Android在Android.mk里添加TAG
- 联想m7216更换墨粉流程图_联想M7216打印机加墨粉后还显示墨粉用完是为什么?...
- 使用HealthKit过程中遇到的坑
- hive on spark报错:Client closed before SASL negotiation finished
- html+css罗盘式旋转时钟
- h5物体拖动_iH5高级教程:H5交互进阶,拖动物品效果
- 关于m3u8转MP4的几种情况
- 【泡咖啡1】linux下caffe编译以及python环境配置手记
- 微信公众号文章如何排版?
- Finance_finacial_engineering
- 移动互联网现状:手机人的网上生活
- 任鸟飞在线课程之FPS游戏自瞄爆头飞天透视画框
- html5实现百度语音播报功能
- android AOSP 下载
- 部署iwebshop软件