java oopbi整理

本文主要介绍了Java的集成开发环境(Eclipse, MyEclipse, NetBeans, JCreator)及其特点,讲解了JDK的不同版本。接着深入探讨了内存的堆栈划分,以及数据类型,包括基本类型和引用类型。文章还提到了面向对象编程(OOP)的概念和重要性,并讨论了类、对象、属性和方法的使用,以及封装、构造方法、重载、继承和异常处理等核心概念。此外,还涉及了异常处理机制,包括异常类型和自定义异常。最后,简要概述了Java的包管理和字符串操作相关方法。" 77343784,7291078,批量抓取静态页面信息并生成xls,"['网页爬虫', 'PHP', '文档处理', '数据提取', '文件操作']
摘要由CSDN通过智能技术生成

DE(集成开发环境)
Eclipse  IBM公司提供的一个免费的平台,根据加载的插件可以扩充其平台的功能
MyEclipse事实上是Eclipse平台的一个商业插件(我们都是用破解版)
全英文版  国内不出意外,几乎都是eclipse平台

NetBeans Sun公司提供官方免费的综合开发工具(Java,C/C++,PHP,Raby等等) 官方的中文版,国内很少见,但是好歹也是官方的,所以多少给点面子介绍下

JCreator Sun公司免费提供的专门针对初学者或是简单应用开发使用的开发工具(仅仅只占用4.51mb空间)

JCreator本身不带Java开发工具(JDK),JDK可以免费下载(下载地址,自行google)
JDK1.4版本:外面使用的比较多的版本
JDK1.5(5.0)版本:外面使用的比较多的版本
JDK1.6(6.0)版本:大体上和1.5差不多,区别方面我们也不用关心

Java的版本差异也是后期我们会慢慢接触和了解的重要内容

------------------------------------------------
内存会划分为N个空间区域用于存放数据,每个空间是最小数据单位,为了能适应各种大小的数据存放
数据存放到内存是随机的,无法由程序员控制,唯一能操作这些数据的就是通过内存地址去找到这些存放空间

内存中分为堆和栈
栈非常小,是一块由系统托管的区域,在这个区域内所有的内存开辟,释放都无须人为干预,系统会处理所有的问题,访问这个区域的空间也不再需要通过地址,而是通过在创建的时候为其赋予的名字(变量名)
所有开辟在栈区的空间都具备名称

堆几乎是内存的全部,这是一块非常自由的空间,无人管理,想怎么搞就怎么搞,但是所有的开辟和释放操作都需要自己手动完成,并且没有名字的概念
所有开辟在堆区的东西肯定都是new出来的
(new就是手动在堆区开空间)

Student s=new Student();
  引用         对象
所有的值事实上是存放在对象中的,但是要操作对象就需要通过引用来操作

只有对象,没有引用不能操作
只有引用,没有对象无法操作

 

数据类型:
基本(原始)类型
int 整型 32位(4字节)  2147483647  -2147483648
long 长整型 64位,8字节 注意:在Java中所有的整数默认都是int类型,如果要当成long看待,需要末尾追加L
short 短整型 16位,2字节 历史遗留类型,基本已经不使用
double 双精度浮点型,64位,8字节
float 单精度浮点型,32位,4字节  注意:所有的小数默认都是double类型,如果要当成float,那么需要末尾加F或强制转换为float
char 字符型 16位,2字节 本质上就是个整型,这个整型对应unicode码
unicode码是ASCII码的扩展集,不支持负数
byte 字节型 1字节 8位 用于存放任何数据最基本的形态,在IO中会大量使用
boolean 布尔型 1位  true/false,并且与其他基本类型不兼容


引用类型
数组

基本类型是存放在栈区
(因为基本类型大小固定,所以可以被栈区自动管理)
引用类型分为2个部分,引用是在栈,而对象是在堆
(因为引用类型所包含的成员是根据具体情况具体定义,数组的长度也是一样.所以栈区无法自动开辟它们,只能手动开辟,而手动开辟只能开在堆区)

数组的声明:
int[] ary;
int[] ary=new int[5];
int[] ary=new int[]{1,2,3,4,5};
int[] ary={1,2,3,4,5};

OOP
OOP是种编写代码的方式,也是Java/C#的一种语法

为什么要学习oop?
1.oop是现在应用程序编写的主流做法
2.oop也是我们混饭吃的东西
3.oop能帮助我们以人类的思维方式解决问题

使用oop来编写程序必定都会经过以下过程:
1.知道自己要解决的是啥问题
2.分析这个问题中会涉及到哪些事物(问题领域)
3.根据分析出来的事物构建对象(类)
4.这些对象之间互相有什么关联(方法的互相调用)


小明是小学三年级学生,在课余喜欢去网吧玩一个叫山口山的游戏

学生类
属性:姓名=小明
     年级=三年级

方法:
娱乐(){
   电脑=网吧.上机(钱);
   电脑.打开(游戏);
}


网吧类
属性:电脑[]

方法:
电脑 上机(double money){
   if(money还有){
       return 某台电脑 
   }
   return null;
}

电脑类
属性:程序[]
方法:
打开(程序){
  指定的程序;
}
================================================
类,对象
属性的取值非常重要,作为一个对象的状态,属性的值会直接影响这个对象的方方面面

为什么要私有属性?
属性的取值表示当前对象的状态,非常关键.所以需要对其进行验证,判断,处理,只允许存放合理(合适)的值
属性本身是个变量,变量仅仅只具备存放数据的功能,所以将属性保护起来,避免外界直接使用(private私有)

为什么要使用方法操作属性?
1.在类里面除了属性只有方法,没得选
2.在方法中,我们可以书写任何代码和操作,完全可以满足对属性取值的各种验证,判断,处理操作


补完People类:
要求:性别只允许男or女,年龄必须在0-100之间,打印姓名的时候需要根据当前的性别和年龄加上称谓修饰

--------------------------------------------------
关于操作变量的get/set方法定义原则:
set方法,一般情况下不出意外(没有业务需求的情况),名称是setXxxx,Xxxx是要操作的属性名,但是首字母大写
必定至少带一个参数,并且这个参数如果没有业务需求会和要操作的属性同类型
如果没有业务需求,返回类型为void

get方法,一般情况下不出意外(没有业务需求的情况),名称是getXxxx,Xxxx是要操作的属性名,但是首字母大写
必定有返回类型,并且如果没有业务需求,这个返回类型会和属性同类型
参数可以根据需要自行定义
--------------------------------------------------
封装
1.将各种操作,变量通过class整合为一个新的类型
2.隐藏和保护细节和数据

对象具备初始化要求,而初始化通过构造方法

构造方法是个特殊的方法
语法:没有返回类型,与类同名
运行:不能手动调用,在对象被创建的时候自动调用,并且每个对象的构造方法只会被调用一次

所有的类都具备构造方法,如果没有定义,那么会有一个默认的缺省构造,这个构造不带任何参数,也不执行任何操作

任何对象创建都需要经历构造的过程,这个过程使用构造方法描述.假如因为没有特殊的需求而没定义构造方法,那么编译器为了能完成创建对象的这个流程,会自动为这个类添加一个构造,而这个构造方法仅仅只是一种象征性质
所以这个构造没有任何参数,也不执行任何具体的操作

一旦定义了构造,那么就意味着这个对象的创建初始化你很清楚要如何去做,所以编译器就不再多此一举添加缺省构造方法

 

方法重载
方法名冲突的情况参数唯一的多个方法构成方法重载
重载的方法通过参数区分,与返回类型无关


重载是种被动语法(没有什么因为要重载而重载,而是因为这么做了之后是重载)

方法重载的价值:
方法重载主要是为了解决现实社会中一词多义的问题

程序方面重载主要是3个功能:
1.可以让方法调用的时候,对于一系列类似的操作方法无需精确匹配某个具体的名字
2.解决方法命名的纠结

重载一般很少会对应普通方法
3.重载多个构造,让对象的产生方式多样,适应各种情况
事实在实际开发过程中,重载构造是最常见的写法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值