javaSE基础05:面向对象

一、数组

  数组的内存管理 : 一块连续的空间来存储元素。

    Int [ ] arr = new int[ ];

  创建一个int类型的数组,arr只是一个变量,只是数组的一个引用地址,局部变量存在一个栈中,java中没有全局变量,只有成员变量,在堆区中存放

数组中常见错误:

1.NullPointerExcepation:空指针异常

  原因:引用的类型变量没有指向任何的对象,在这种情况下还访问了它的属性,一个对象如果使用完了不会马上释放,只是将这个对象变为一个垃圾对象,由垃圾回收机制自己来释放。程序员没有办法操作释放时间

2.ArrayIndexOutOfBoundsExcepation:数组下标越界

  查找数组中是否有这个元素:binarySearch(查找的数组,要找的数);返回的是一个int类型的数(索引)。

Java中数组中存在多维:二维数组,三维。。。

二维数组定义格式:

数据类型[ ] [ ] 数组名 = new 数据类型 [ ] [ ];

  动态初始化:

    数据类型[ ] [ ] 数组名 = new 数据类型 [ ] [ ];

    注意:前面中括号数值指的是二维数组元素的个数,后面一个是指二维数组中一维数组的元素个数

  静态初始化:

    数据类型[ 行 ] [列 ] 数组名称 = { { 元素1 ...}, { 元素1 ...}, { 元素1 ...}};

 Int[ ] [ ] arr = { { 1, 2, 3}, { 4, 5 }, { 6, 7}};

      Int num = arr [2] [1] ;     // 7

二维数组中的元素一定是一维数组

想要接收二维数组中的元素,先要有一个一维数组来接收

总结:数组的特点

  1.数组中只能存同一种数据类型的数据

  2.数组会给存入的元素默认分配一个索引值,索引从0开始

   3.数组一旦初始化,长度就固定了

  4.数组中的元素的内存地址是连续的

二、Java也是属于面向对象的编程:

  面向对象的三大特征:封装、继承、多态

  对象:真实存在的唯一的事物

  (面向对象编程:oop)思想:力图使计算机语言中的事物描述和自然中的事物尽可能保持一致

  面向对象的核心:找到合适的对象做合适的事情

Java中如何来找合适的对象:

  1.sun已经指定好的类,通过订制好的类创建对象,需要认识这些类

  2.自定义类,通过自定义类来创建对象

类中包含:

  属性和方法

类的定义格式:

  Class 类名{

    属性(成员变量):描述事物的公共特点

  格式:数据类型  变量名

     String   name;

  方法:描述事物的行为(做什么事情)

  修饰符  返回值类型 方法名 (参数列表){ 具体的实现}

  Public :公开的方法,任何人都可以访问

  Private :私有的,只能自己使用

例:

Public void run(){

System.out.println( “ 老师讲课啦,赶快回教室!”);

  }

}

访问属性:

   对象.属性名

设置属性:

   对象.属性名 = 设置的值;

  对象的引用变量是存在栈区的,但是对象本身是存在堆区的,成员也是随着对象存在堆区

成员变量和局部变量的区别

A)定义的位置:

  1.成员变量定义在类中,方法外

  2.局部变量是定义在方法中

B)作用域上:

  1.成员变量在当前类中都可以使用

  2.局部变量只能在方法中使用

C)生命周期上:

  1.成员变量:随着对象的创建而创建,随着对象的消失而消失

  2.局部变量:随着方法的调用而创建,出了方法的作用域就销毁

D)初始值来区分:

  1.成员变量,如果没有赋值,它是有默认值的

    int 默认是0

    Float 默认是0.0f

    Double 默认是0.0

    Boolean 默认是false

    Char 默认‘ ’

    String (引用类型)null;

  2.局部变量:

    局部变量默认是没有初始值的,必须先初始化(声明变量并赋值)才能使用

    成员变量在当前类中是可以直接使用的,如果变量需要在其他类中使用,就需要创建对象(目前是这个样子)

三、类和对象的关系

类是对同一类事物(对象)的抽象,对象是实际存在的该类的各个实体

javaSE基础05的更多相关文章

  1. javaSE基础07

    javaSE基础07 一.static静态修饰符 用了static修饰的变量就会变成共享的属性,只会初始化一次,在内存中只存在一个,并且每个对象都可以访问,存放在方法区(数据共享区) 1.1 stat ...

  2. javaSE基础06

    javaSE基础06 一.匿名对象 没有名字的对象,叫做匿名对象. 1.2匿名对象的使用注意点: 1.我们一般不会用匿名对象给属性赋值的,无法获取属性值(现阶段只能设置和拿到一个属性值.只能调用一次方 ...

  3. javaSE基础04

    javaSE基础04 一.三木运算符 <表达式1> ? <表达式2> : <表达式3> "?"运算符的含义是: 先求表达式1的值, 如果为真, ...

  4. javaSE基础03

    javaSE基础03 生活中常见的进制:十进制(0-9).星期(七进制(0-6)).时间(十二进制(0-11)).二十四进制(0-23) 进制之间的转换: 十进制转为二进制: 将十进制除以2,直到商为 ...

  5. javascript基础05

    javascript基础05 1.变量的作用域 变量既可以是全局,也可以是局部的. 全局变量:可以在脚本中的任何位置被引用,一旦你在某个脚本里声明了全局变量,你就可以 在这个脚本的任何位置(包括函数内 ...

  6. javaSE基础02

    javaSE基础02 一.javac命令和java命令做什么事情? javac:负责编译,当执行javac时,会启动java的编译程序,对指定扩展名的.java文件进行编译,生成了jvm可以识别的字节 ...

  7. JavaSE基础01

    JavaSE基础篇01 ------从今天开始,我就学习正式java了,O(∩_∩)O哈哈~,请大家多指教哦 一.Windows常见的dos命令 操作dos命令: win7 --->开始 --- ...

  8. javase基础复习攻略《十》

    按照计划本篇为大家总结JAVA的网络编程,什么叫网络编程呢?网络编程!=网站编程,对于这一点大家一定要注意,很多小朋友都曾经这么认为.既然谈到网络编程,咱们先了解一下网络的基础知识,什么是计算机网络? ...

  9. javase基础复习攻略《二》

    今天就开始的真正走进JAVASE的世界,本篇介绍的是:JAVASE基础语法,大家如果有C语言的基础,对于本节内容一定感觉非常轻松,编程语言之间的都是相通的,只不过C语言属于面向过程编程,而JAVA语言 ...

随机推荐

  1. 生成GUID唯一值的方法汇总(dotnet/javascript/sqlserver)

    一.在 .NET 中生成1.直接用.NET Framework 提供的 Guid() 函数,此种方法使用非常广泛.GUID(全局统一标识符)是指在一台机器上生成的数字,它保证对在同一时空中的任何两台计 ...

  2. 【原创】自己动手写控件----XSmartNote控件

    一.前面的话 在上一篇博文自己动手写工具----XSmartNote [Beta 3.0]中,用到了若干个自定义控件,其中包含用于显示Note内容的简单的Label扩展控件,用于展示标签内容的labe ...

  3. SQL链接服务器

    最近做项目,需要对两个数据库进行同步操作,所以采用在Server SQL中建立链接服务器方式实现. 链接服务器,可以直接访问/操作其他服务器上的数据库表. 1.连接SQL Server链接服务器 EX ...

  4. php实现文件上传与下载(中)

    出现不想让用户看见的信息,可以使用错误抑制符号@:当然能echo的东西都是可以赋值给一个变量的: 定义用户上传文件类型,将其放在数组变量allowExt中,用if(!in_array(第一个参数为获取 ...

  5. XmlRootElement JAXB

    http://desert3.iteye.com/blog/1570092(文章已经很好) 看了那边文章以后尝试后写点直白的 PROPERTY: JAXB 绑定类中的每个获取方法/设置方法对将会自动绑 ...

  6. PHP通过XML报文格式的POST请求方式,与第三方接口交互(发送xml,获取XML,并解析xml步骤)

    开发者端:发送请求,并接收结果 <?php // 下面的demo,实现的功能如下: // 1-开发者需要判断一个用户是否存在,去请求第三方接口. // 2-与第三方接口的通信,是以xml格式传送 ...

  7. 【转】MySQL性能优化的最佳21条经验

    文章转自: http://blog.csdn.net/waferleo/article/details/7179009 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关 ...

  8. CJCMS系列--demo代码篇

    CJCMS之前写了不多的文章,但是一直没有上代码,也许代码写得很乱很差,但是我觉得总得有个开始,持续改进.作为一个喜欢分享的程序员,我决定分享一下. 前面文章中的结构比较全,而此次我给出的demo,没 ...

  9. Memcache的增删改查

    Memcache是把数据存放到内存的一种缓存技术,为了提高访问的速度,memcache存储的数据一般是频繁.不太重要的数据,php使用memcache,需要两步: (1).php_memcache.d ...

  10. flask源码分析

    本flask源码分析不间断更新 而且我分析的源码全是我个人觉得是很beautiful的 1 flask-login 1.1 flask.ext.login.login_required(func),下 ...