java整理(二)
1.this关键字。this表示属性,表示方法和当前对象。
this.属性调用属性。
方法分为两类,构造方法和普通方法,他们的调用形式是不同的。调用本类的方法this.方法()(这是调用普通方法)如果希望,在一类之中完成构造方法的互调用可以使用this()操作形式。this()调用无参构造this(String str)调用有参构造。
要注意两点:1.使用this关键字调用构造方法的操作,只能放在类中构造方法的首行。2.一个类中虽然可以使用this进行构造方法的互调用,但是一定要保留一个构造方法,是不使用this调用的,以作为程序的出口。
表示当前对象。当前对象:就是当前正在调用类中方法的对象。
2.对象数组:就是一组相关对象的集合。
原来对象的定义是 类名称 对象名称=new 类名称();对象数组的定义是类名称 数组名称[]=new 类名称[长度];这是他们之间的区别。
这样动态初始化之后对象数组,开辟空间后,数组中的每一个元素的内容都是null。要对每一个元素都必须进行对象的实例化的。
3.对象比较。主方法或者说主类,其实是客户方(第三方)就是调用程序的一方,对于客户端操作应该越简单越好。例如在生活中,比较自己和通缉令上的人是否一样,肯定是自己比较,不会去问问别人,所以这是自己的操作。如果你想使用显示器,希望自己组元器件,自己搞线,拆装等等还是希望摁一下按钮就可以呢,显然是第二种,所以,一些功能的实现不要总是交给客户方,这样客户方会很复杂。public boolean compar(Person per)(就像比对中奖号码一样,得有一个地方接收这个信息,这个时候我们要比较的是对象,所以接收的信息是对象。所以是Person
per,这个方法中有两个Person对象,一个是传入进来的Person对象,一个是调用compare方法的当前对象,当一个类的对象传递到类的内部之后最大的好处在于:可以直接通过对象调用私有操作)
对象比较的关键有两点:1.对象比较的操作一定是每一个类自己的功能。2.一个类可以接收本类的引用,而且接收之后,可以直接通过这个对象调用类中的属性,不再需要使用getter方法,因为此时属于类的内部,内部是可以直接访问私有属性的。
4.static关键字。staic关键完成两种操作:一个是定义属性,一个是定义方法。
定义属性:将成为公共属性,每个对象都拥有它,一个对象修改了内容,其他的都变。static定义的属性有时被称为类属性,而且类属性最大的特点是可以直接通过类名称调用,而且调用的时候可以在没有实例化对象产生的情况下进行。Person.city="北京"。
常见的内存分配:栈内存:保存堆内存的地址。堆内存:保存普通属性。全局数据区:保存所有的全局数据。static就是全局数据。全局代码区:保存所有的操作方法。
static定义方法:现在对于类中的方法就分为两类:非static方法:必须由对象进行调用,而且非static方法可以调用static方法或属性。
static方法:可以由类名称调用,或者实例化对象调用,而且所有的static方法不能调用非static方法。
之所以由主方法调用的方法前必须使用static,主要原因也是因为主方法使用了static,即:static方法可以直接调用static操作,而不能调用非static操作。在开发中,不建议定义其他方法,主类中最好只有一个方法。
static的应用有两点:1.使用static属性主要用于表示公共变量的保存。2.使用static方法一般都是在用于取得类的实例化对象的操作上,或者是一些不希望有对象的类中使用。
5.代码块部分不重要
6.内部类:缺点:一个类中本来只包含属性和方法,此时增加了一个类,这样的做法会破坏程序的结构。优点:可以和外部类之间进行方便的操作,可以方便的访问外部类的私有操作。
内部类对象实例化格式:外部类.内部类 内部类对象 = new 外部类().new 内部类()
|
Class Outer{//定义类 private String name=”Hello”;//外部类中的私有属性 private class Inner{//定义内部类 public void print(){//内部类的操作方法 System.out.println(name)} } } |
Class Outer{//定义类 private String name=”Hello”;//外部类中的私有属性 private class Inner{//定义内部类 public void print(){//内部类的操作方法 System.out.println(name)} } } public class OODemo{ pulic static void main(String args[]){ Outer.Inner in =new Outer().new Inner(); in.print();} } |
使用static定义内部类的话,则表示这个内部类就变成了外部类,而内部类额完整名称也就变为了外部类.内部类,而且此时也只能访问外部类中的static操作了。Outer.Inner in =new Outer. Inner();内部类除了可以方便的访问外部类中的私有操作,外部类也能方便的访问内部类的私有操作。
在方法中定义内部类:要想访问方法中的参数或者变量,则参数或变量钱必须使用final关键字定义。
java整理(二)的更多相关文章
- 利用JAVA生成二维码
本文章整理于慕课网的学习视频<JAVA生成二维码>,如果想看视频内容请移步慕课网. 维基百科上对于二维码的解释. 二维条码是指在一维条码的基础上扩展出另一维具有可读性的条码,使用黑白矩形图 ...
- 单元测试系列之十:Sonar 常用代码规则整理(二)
摘要:帮助公司部署了一套sonar平台,经过一段时间运行,发现有一些问题出现频率很高,因此有必要将这些问题进行整理总结和分析,避免再次出现类似问题. 作者原创技术文章,转载请注明出处 ======== ...
- Java EE : 二、图解 Cookie(小甜饼)
目录 Java EE : 一.图解Http协议 Java EE : 二.图解 Cookie(小甜饼) Java EE : 三.图解Session(会话) 概述 一.概述 二.详细介绍Cookie 传输 ...
- java实现二维码
说起二维码,微信好像最先启用,随后各类二维码就开始流行起来了.那什么是二维码呢. 1.什么是二维码?百度一下即可 http://baike.baidu.com/view/132241.htm?fr=a ...
- Java 设计模式(二)-六大原则
Java 设计模式(二)-六大原则 单一职责原则(Single Responsibility Principle) 定义: 不要存在多余一个原因导致类变更,既一个类只负责一项职责. 问题由来: 当类A ...
- Java进阶(二十五)Java连接mysql数据库(底层实现)
Java进阶(二十五)Java连接mysql数据库(底层实现) 前言 很长时间没有系统的使用java做项目了.现在需要使用java完成一个实验,其中涉及到java连接数据库.让自己来写,记忆中已无从搜 ...
- 20175212童皓桢 Java实验二-面向对象程序设计实验报告
20175212童皓桢 Java实验二-面向对象程序设计实验报告 实验内容 初步掌握单元测试和TDD 理解并掌握面向对象三要素:封装.继承.多态 初步掌握UML建模 熟悉S.O.L.I.D原则 了解设 ...
- java 多线程二
java 多线程一 java 多线程二 java 多线程三 java 多线程四 线程中断: /** * Created by root on 17-9-30. */ public class Test ...
- Linux -- 基于zookeeper的java api(二)
Linux -- 基于zookeeper的java api(二) 写一个关于基于集群的zookeeper的自定义实现HA 基于客户端和监控器:使用监控的方法查看每个注册过的节点的状态来做出操作. Wa ...
- 浅谈Java代理二:Cglib动态代理-MethodInterceptor
浅谈Java代理二:Cglib动态代理-MethodInterceptor CGLib动态代理特点: 使用CGLib实现动态代理,完全不受代理类必须实现接口的限制,而且CGLib底层采用ASM字节码生 ...
随机推荐
- flex 和bison的安装和使用
1.在ubutu上安装 yacc的命令: sudo apt-get install flex bison flex:词法分析器 flex是一个词法分析器.用来将一个.l文件生成一个.c程序文件.即生成 ...
- stl_heap.h
stl_heap.h // Filename: stl_heap.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http://b ...
- uoj279温暖会指引我们前行
暖气来啦~ 动态树维护最大生成树裸题 #include<iostream> #include<cstdio> #include<cstdlib> #include& ...
- Maven 将jar导入本地maven仓库
目录 环境变量配置maven 执行一下命令即可 诚邀访问我的个人博客:我在马路边 更好的阅读体验点击查看原文:Maven将jar倒入本地maven仓库 原创博客,转载请注明出处 @ 在Java项目开发 ...
- GCC泛型宏
在JAVA和CPP这种OOP语言中,都有泛型类,在C语言可以用宏定义实现泛型函数. main.c #include <stdio.h> #define min(x, y) ({ \ typ ...
- 经过一年时间的沉淀 再次回首 TCP Socket服务器编程 (二)
------------------ 前言 ------------------ 发了第一篇文章后,有不少同志留言,看来socket编程仍然是软件系统里面一个比较难的部分. 第一篇文章主要介绍了传输协 ...
- 一个内存增长问题的分析和处理(二)——valgrind工具的用法
valgrind是linux下对C++和C程序进行内存泄露检测的工具,除了内存检测,valgrind还提供了很多其他的功能,这里主要介绍下valgrind的内存检测的功能. 首先是文件的下载,valg ...
- python中全局变量的使用
python中在module定义的变量可以认为是全局变量, 而对于全局变量的赋值有个地方需要注意. test.py ------------------------------------------ ...
- 【转】Pro Android学习笔记(三十):Menu(1):了解Menu
目录(?)[-] 创建Menu MenuItem的属性itemId MenuItem的属性groupId MenuItem的属性orderId MenuItem的属性可选属性 Menu触发 onOpt ...
- SpringMVC执行流程简介
1.用户向服务器发送请求,请求被SpringMVC的前端控制器DispatcherServlet截获. 2.DispatcherServlet对请求的URL(统一资源定位符)进行解析,得到URI(请求 ...