封装
该露的露,该藏的藏
我们程序设计要追求“高内聚,低耦合”。高内聚就是类的内部数据操作细节自己完成,不允许外部干涉;低耦合:仅暴露少量的方法给外部使用
封装(数据的隐藏)
通常,应禁止直接访问一个对象中数据的实际表示,而应通过操作接口来访问,这称为信息隐藏。
记住这句话:属性私有,get/set
封装的作用:
1.提高程序的安全性,保护数据
2.隐藏代码的实现细节
3.统一接口
4.系统可维护性增加了
代码:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859package com.xiheya.oop.demo04;/** * @Author {xiheya} * @Date: 2022/03/13/ 12:00 * @Description */public class Student {// 属性私有 private String name; ...
构造器
类中的构造器也称为构造方法,是在进行创建对象的时候必须要调用的。并且构造器有以下两个特点:
1.必须和类的名字相同
2.必须没有返回类型,也不能写void
代码:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869package com.xiheya.oop.demo02;/** * @Author {xiheya} * @Date: 2022/03/12/ 22:50 * @Description *///学生类public class Student { //一个类即使什么都不写,也会存在一个构造方法 // 显示的定义构造期。// 属性:字段 String name; int age;// 方法// 实例化初始值// 1.使用new关键字,实质上是调用构造器// 2.构造器一般用来 ...
面向过程& 面向对象面向过程思想—>自上而下面向对象就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了。
步骤清晰简单,第一步做什么,第二步做什么……
面向过程适合处理一些较为简单的问题
面向对象思想—>自下而上面向对象就是根据类创建对象,每个对象都有自己的属性和方法,而这些属性和方法都是围绕对象服务的,你会发现用到的属性和方法都是对象。
物以类聚,分类的思维模式,思考问题首先会解决问题需要哪些分类,然后对这些分类进行单独思考。最后,才对某个分类下的细节进行面向过程的思索。
面向对象适合处理复杂的问题,适合处理需要多人协作的问题。
对于描述复杂的事物,为了从宏观上把握,从整体上合理分析,我们需要使用面向对象的思路来分析整个系统。但是,具体到微观操作,仍然需要面向过程的思路去处理。
什么是面向对象
面向对象编程(Object_Oriented Programming, OOP)
面向对象编程的本质就是:以类的方式组织代码,以对象的形式(封装)数据
抽象 —>将有共同特征的物体抽象成一个类,比如泰迪、哈 ...
Arrays类
数组的工具类java.util.Arrays
由于数组对象本身并没有什么方法可以供我们调用,但API中提供了一个工具类Arrays供我们使用,从而可以对数据进行一些基本操作。
查看JDK帮助文档
Arrays类中的方法都是static修饰的静态方法,在使用的时候可以直接使用类名进行调用,而”不用“使用对象来调用(注意:是”不用”而不是“不能”)
具有以下常用功能:
给数组赋值:通过fill方法。
对数组排序:通过sort方法,按升序
比较数组:通过equals方法比较数组中元素值是否相等
查找数组元素:通过binarySearch方法能对排列好的数组进行二分查找法操作
代码实现:
123456789101112131415161718package com.xiheya.Array;import java.util.Arrays;/** * @Author {xiheya} * @Date: 2022/03/12/ 16:19 * @Description */public class ArrayDemo05 { publ ...
内存分析
Java内存分析
数组的声明在栈当中,创建空间及赋值操作在堆中。
三种初始化静态初始化12int[] a = {1,2,3};Man[] mans = {new Man(1,1),new Man(2,2)};
动态初始化1234int[] a = new int[5];a[0] = 1;a[1] = 2;……
数组的默认初始化
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化。
代码:
123456789101112131415161718192021package com.xiheya.Array;/** * @Author {xiheya} * @Date: 2022/03/12/ 10:45 * @Description */public class ArrayDemo02 { public static void main(String[] args) { //静态初始化 i ...
数组的定义
数组是相同类型数据的有序集合
数组描述的是相同类型的若干个数据,按照一定先后次序排列组合而成。
其中,每一个数据称作一个数组元素,每个数组元素可以通过一个下标来访问它。
数组声明创建
首先必须声明数组变量,才能再程序中使用数组。语法如下:
12dataType[] arrayRefVar; //首选方法dataType arrayRefVar[]; //效果相同,但不是首选方法
Java语言使用new操作符来创建数组,语法如下:
1dataType [] arrayRefVar = new dataType[arraySize];
数组的元素是通过索引访问的,数组索引从0开始。
获取数组长度:arrays.length
123456789101112131415161718package com.xiheya.Array;/** * @Author {xiheya} * @Date: 2022/03/12/ 10:21 * @Description */public class Demo01 { pub ...
方法定义
Java方法是语句的集合,它们在一起执行一个功能
方法是解决一类问题的步骤的有序组合
方法包含于类或对象当中
方法在程序中被创建,在其他地方被引用
设计方法的原则
方法的本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样利于我们后期的扩展
方法的命名规则:首字母小写,后面是驼峰命名规则。
设计一个方法:实现简单的两个数的加法:
12345678910111213141516package com.xiheya.Method;/** * @Author {xiheya} * @Date: 2022/03/11/ 16:23 * @Description */public class Demo01 { public static void main(String[] args) { System.out.println(add(1,2)); //方法的调用 } public static int add(int a ...
循环结构while 循环
while 是最基本的循环
语法
123while(布尔表达式){ //循环内容}
只要布尔表达式为true,则循环一直执行下去
我们大多数情况下会让循环停止下来,我们需要一个让表达式失效的方式来结束循环
少部分情况循环需要一直执行,比如服务器的请求响应监听
循环条件一直为true就会造成无限循环【死循环】,正常业务中,应当避免死循环。它会影响程序性能或者造成程序卡死崩溃
设计一个程序计算1+2+3+4+5+……+100;
代码:
1234567891011121314151617181920package com.xiheya.struct;/** * @Author {xiheya} * @Date: 2022/03/08/ 17:44 * @Description */public class WhileDemo01 { public static void main(String[] args) { int i = 0; int total = ...
顺序结构
Java的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行
顺序结构是最简单的算法结构
语句与语句之间,框与框之间是按从上到下的顺序进行的,他是由若干个依次执行的处理步骤组成的,他是一个任何算法都离不开的一种基本算法结构
代码:
12345678910111213141516package com.xiheya.struct;/** * @Author {xiheya} * @Date: 2022/03/08/ 16:12 * @Description */public class orderDemo01 { public static void main(String[] args) { System.out.println("helloworld1"); System.out.println("helloworld2"); System.out.println("helloworld3"); Sy ...
用户交互Scanner
Java给我们提供了一个工具类,我们可以根据这个工具类来获取用户的输入。java.util.Scanner是Java5的新特征,我们可以通过Scanner类来获取用户的输入
基本语法
1Scanner s = new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要使用hasNext()与hasNextLine()来判断是否还有输入的数据.
使用hasNext()方法判断是否还有输入的数据;next()方法接收输入的字符
1234567891011121314151617181920212223242526package com.xiheya.Scanner;import java.util.Scanner;/** * @Author {xiheya} * @Date: 2022/03/07/ 23:32 * @Description */public class Demo01 { public static void ma ...