java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用

七十年代,IBM的Smalltalk语言最先推广面向对象,后来C语言变为C++,后来C++又产生了Java。
面向对象是一种技术的开发模式,但是最早的时候所使用的模式是面向过程。
面向过程:指的是对于某一个问题单独提出解决方案以及代码开发。
面向对象:以一种组件化的形式进行代码的设计,这样开发出来的代码有一个最大的好处是可以重复使用。

面向对象的特性:

封闭型:保护内部的定义结构安全性;

继承性:在已有的程序结构上继续扩充新的功能;

多态性:指的是对象在某一个概念范围的满足不同的变换。

学习步骤:OOA(面向对象分析),OOD(面向对象设计),OOP(面向对象编程)。

类与对象

类与对象是整个面向对象之中最为基础的组成单元。
类包括属性和行为,对象所能操作的行为都是由类来决定的,不能超过类定义范畴操作,
类实际上是对象对象操作的模版,但是类不能直接使用,必须通过实例对象来使用。

对象由类产生

类与对象的基本定义

如果在程序中定义类可以使用“class类名称{}”的语法结构完成,而类之中的组成主要有:

Field(属性,成员),就是变量

Method(方法,行为),之前见到的方法,但是此时的方法是由对象调用的。

想使用类必须要有对象,那么对象的定义格式
声明并实例化对象:类名称 对象名称 = new 类名称();
分步完成:
声明对象:类名称 对象名称 = null;
实例化对象:对象名称 =new 类名称();
只要是引用数据类型想使用,那么就必须使用关键字new来开辟内存空间。
两块内存空间的概念:
栈内存:保存一块堆内存的地址,但是为了分析方便,可以简单理解栈内存保存的是对象名字,其实还是一个地址并指向一块堆内存
堆内存:保存每一个对象的属性内容 ,堆内存需要用关键字new才可以开辟(99%的情况下)
在运行时使用没有实例化的类对象,程序会出现“NullPointerException”(空指向异常),只要是引用数据类型都有可能出现。

引用数据的初步分析

引用是整个java开发之中的核心精髓所在,需掌握这一基础概念
引用类似于C++中的指针概念,但是要比指针概念更加的简单。
引用粗略的说,同一实体有多个名字,在java中一块堆内存可以被多个栈内存指向。一个栈内存只能指向一块堆内存,当一块堆内存没有任何一个栈内存指向它时将被GC(垃圾收集器)回收并释放(清空)。
堆内存保存的是对象所有属性的内容,而栈内存保存的是堆内存的地址数值。

1,封装性

封装性主要体现在权限修饰符:只有四种(其中default为默认的,可以不写出来)如下:

- private(私有的)

private可以修饰成员变量,成员方法,构造方法,不能修饰类(此刻指的是外部类,内部类不加以考虑)。被private修饰的成员只能在其修饰的本类中访问,在其他类中不能调用,但是被private修饰的成员可以通过set和get方法向外界提供访问方式

  • default(默认的)
    defalut即不写任何关键字,它可以修饰类,成员变量,成员方法,构造方法。被默认权限修饰后,其只能被本类以及同包下的其他类访问。

- default(默认的)

defalut即不写任何关键字,它可以修饰类,成员变量,成员方法,构造方法。被默认权限修饰后,其只能被本类以及同包下的其他类访问。

- protected(受保护的)

protected可以修饰成员变量,成员方法,构造方法,但不能修饰类(此处指的是外部类,内部类不加以考虑)。被protected修饰后,只能被同包下的其他类访问。如果不同包下的类要访问被protected修饰的成员,这个类必须是其子类。

- public(公共的)

public是权限最大的修饰符,他可以修饰类,成员变量,成员方法,构造方法。被public修饰后,可以再任何一个类中,不管同不同包,任意使用。

注意:1,封装性就是保证类内部的定义对外部不可见。
2,所有属性都必须使用private封装,封装后的属性如果要被外部所访问,要定义setter和getter方法。

构造方法

现在我们已经清楚了对象的产生格式:
类名称 对象名称 = new 类名称();
类名称:规定了对象的类型,即:对象可以使用那些属性与那些
对象名称:如果要想使用对象,需要有一个唯一的名字;
new:开辟新的堆内存空间,如果没有此语句,对象无法实例化
类名称() :调用一个和类名称一样的方法,这就是构造方法。
例:public book() {
String name = null;
}
构造方法无返回值
构造方法与普通方法的最大区别:
构造方法是在实例化新对象(new)的时候只调用一次。
普通方法是在实例化对象产生之后可以随意调用多次。
构造方法可以重载,重载的方法请按照参数的个数进行升序或降序排列。
对象实例化的过程中,一定会经历类的加载,内存的分配,默认值的设置,构造方法。
**没有栈指向的对象就称为匿名对象。**真实信息都保存在了堆内存空间。只使用一次,之后被gc回收。
例:new Book(“Java开发,89.9”).getInfo();

简单java类

第一种开发形式:(很少使用)
1,类名称必须有意义,例如:Book,Emp;
2,类之中所有属性必须private封装,封装后的属性必须提供有setter,getter方法。
3,类中可以提供任意数量的构造方法,但是必须保留有一个构造方法。
4,类之中不允许出现任何的输出语句,所有信息输出必须交给被调用。
5,类中必须提供有一个取得对象完整信息的方法,暂定为getInfo(),而且返回String型数据;
部分代码如下:(不重要)

数组

1,数组的基本作用与定义语法:
2,二维数组的使用;
3,数组与方法的互操作
4,与数组有关的类库方法实用;
5,对象数组。
数组就是一组相关变量的集合
数组的定义语法如下
声明并开辟数组:
数据类型 数据名称[] =new 数据类型[长度];
分步完成:
声明数组:数据类型 数组名称[] =null;
开辟数组:数组名称 =new 数据类型[长度];
数组开辟空间后,可以采用“数组名称[下标索引]”的形式进行访问索引是从0开始的。
例如:int data[]=new int[3];
for(int i=0;i<data.length();i++){
data[i]=i*10+10;
}
则data[]={10,20,30}。

数组也是引用数据类型
数组data[]的内存分布如下:

简化格式:
格式一:数据类型 数组名称[] ={值,值,…};
格式二:数据类型 数组名称[] =new 数据类型{值,值,…};

工作中大部分是通过传递的数据而动态生成,很少先开辟数组再去使用。

二维数组(很少用)

在之前的数组只有一个”[]“此类数组就是一个普通的数组,或者再想描述更多的数据,可以使用二维数组,后面会是”[][]“。

数组的排序

数组的转置(首位交换)

下面首先来解释一下转置的概念(一维数组实现):
原始数组:1,2,3,4,5,6,7,8;
转置后的数组:8,7,6,5,4,3,2,1。
不管是数组的长度是奇数还是偶数转置次数都是数组的长度除2,因为int型去尾,

数阵的转置(了解)

数组操作方法

java对于数组有类库的支持:
1,数组拷贝:可以将一个数组的部分内容拷贝到另外一个数组之中;
语法:System.arraycopy(源数组名称,源数组拷贝开始索引,目标数组名称,目标数组拷贝开始索引,长度)
例:

数组的排序

例:java.util.Arrays.sort(data);//排序操作

对象数组(重点)

定义对象数组如下

(以类为例)动态初始化(最初都为null,可变)

声明并开辟对象数组:
类名称 对象数组名称[] =new 类名称[长度];
分步完成:
声明对象数组:类名称 对象数组名称[] =null;
开辟对象数组:对象数组名称=new 类名称[长度];
对象数组动态初始化如下

静态初始化

类名称 对象数组名称 []=new 类名称[] {实例化对象,实例化对象,…}
关于数组的总结如下:

@沉木

java/03/类与对象,深入分析类与对象(权限修饰,构造方法和简单java类),数组的定义及使用相关推荐

  1. Java学习分享—【面向对象基础】 封装、权限修饰符等...

    封装 1.相关概念 java有三大特性:封装.继承.多态 封装是面向对象的思想的特性 对属性.方法.类.项目 进行封装 内部类也是封装的体现 封装:将数据和操作数据的方法进行有机结合,隐藏对象的属性和 ...

  2. java复习第3天---3.1---final关键字、权限修饰符

    java复习第3天---3.1---final关键字.权限修饰符 目录 文章目录 1.final 关键字 1.1.修饰类 1.2.修饰成员方法 1.3.修饰成员变量 1.4.修饰局部变量 2.权限修饰 ...

  3. java基础学习 day28(就近原则,this关键字,构造方法,标准Javabean类)

    1. 成员变量和局部变量: 成员变量:变量定义在方法外,类里 局部变量:变量定义在方法里 2. 就近原则: 当成员变量名与局部变量名一致时,若使用这个名字,使用的是离这个调用位置最近的变量(如果局部变 ...

  4. java类放到对象_Java中类和对象总结

    一.面向对象概述 1.1 对象:世界万物皆对象. 类:同一类事物的统称,是这类对象的统称.类就是对象的设计图. 例:面向对象解决大雁南飞. 1.抽出对象--大雁 2.识别对象的属性--静态属性(翅膀. ...

  5. Java学习笔记10---访问权限修饰符如何控制成员变量、成员方法及类的访问范围...

    1.Java有三种访问权限修饰符,分别为public.protected.private,还有一种为缺省权限修饰符的情况,记为default.其中,可以由public和default来修饰类:这四种修 ...

  6. python描述符魔术方法_学习笔记-Python基础9-面向对象编程OOP-类的成员描述符(property)、类的常用内置属性、类的常用魔术方法、类和对象的三种方法...

    一.类的成员描述符(property) 类的成员描述符是为了在类中,对类的成员属性进行相关操作而创建的一种方式,大部分属于数据清洗 属性有三种操作:get获取属性值.set修改或添加属性.delete ...

  7. JAVA中一维数组的作用,JAVA中一维数组和二维数组的定义

    在java中数组被看成是一个对象 在定义数组时,有两种定义方法:int[] a 和int a[]:第二种是C/C++对数组定义方式,对于JAVA建议采用第一种定义方式. 总的原则:任何对象在被调用之前 ...

  8. Java基础课程---权限修饰符

    1 java  权限修饰符 从小到大 private 只有类中能用 缺省,类,同一个包中能用 protected,类,同一个包中能用,以及不同包中的子类可以使用 public:公共的,都可以使用,同一 ...

  9. 简单java程序_简单的Java程序

    简单java程序 Simple java programs are good for assessing the coding skills of a programmer. You will fin ...

最新文章

  1. 干货 | 476个PyTorch资源大合集推荐,GitHub超过3600星
  2. 如何快速实现物联网行业中的实名认证
  3. java集合性能_Java集合性能分析-疯狂Java讲义
  4. 每秒钟承载600万订单级别的无锁并行计算框架 Disruptor学习
  5. 这份网约车安全乘车指南,请务必收下!
  6. 写接口给别人调用 推送数据到我们_我们写了一个超好用的抖音矩阵数据管理工具...
  7. 智能会议系统(35)---深入浅出sip协议
  8. Java并发之ThreadLocal
  9. MySQL中replace主键_Mysql中replace与replace into的用法讲解
  10. [转]如何才能在 IIS 7.5 使用 Windows PowerShell Snap-In 功能
  11. 统计英文文本的字母个数
  12. 数据库设计--名值模式(转)
  13. 在Linux下判断系统当前是否开启了超线程
  14. matlab中输出汉字的函数,matlab中的输出显示函数
  15. La3713 Astronauts 2-Sat
  16. proteus编程、仿真AVR单片机
  17. 京东面试题咖啡杯问题(贪心算法、递归综合运用)
  18. 前端学习笔记之——使用边框和背景
  19. 程序员为什么不写注释
  20. ACM-ICPC国际大学生程序设计竞赛北京赛区(2015)网络赛 Scores

热门文章

  1. 洛谷P3648 [APIO2014]序列分割(斜率优化)
  2. jQuery跨域,添加自定义头部header
  3. SQL SERVER查看当前连接情况
  4. Collections.sort的两个方法
  5. 【转】Android 如何获取SDCard 内存(二)
  6. ITIL基础概述与实战案例分析(下)
  7. RippleNet:知识图谱与推荐系统联合学习 CIKM 2018
  8. html中style布局放哪,CSS样式表与格式布局详解
  9. android 函数名注册,Android JNI 函数注册的两种方式(静态注册/动态注册)
  10. python3 web界面_python3 web更新和web查看日志的功能