整理----加自己理解------网上参考-----

java封装理念

一 概念:

隐藏对象的属性和实现细节,仅供对外提供公共访问方式。

二 好处

1)  将变量隔离

2)  便于使用

3)  提高重用性

4)  提高安全原则

三 使用原则

将不需要对外提供的内容都隐藏起来。

把属性都隐藏,仅公共方法可访问。

四 使用实例

public class Person {
     private int age;
     public  void setAge(int Age){
          if(Age>0&& Age<130){
            //  age=age;局部变量与成员变量同名,所以这两的两个age都为局部的
              //函数默认现在局部中找变量,然后再成员定义中找,,,
              age=Age;
              speck();
          }
       else
              System.out.println("你输入的年龄有问题");
    }
  public  int getAge(){
         return age;
     }
     public  void speck(){
         System.out .println("age="+age);
     }
}

 public class PersonDo{
    public static void main(String args[]){
        Person a= new Person();
        Person b= new Person();
        a.setAge(20);
        b.setAge(-20);
    }
}

这里age私有化后,类以外的方法将无法访问age
只能用这个类中其他共有的方法来访问它,如setAge/getAge等
值得注意的一点是;私有是封装的一种表现形式而已。
通过-20可知可以在对外提供的访问方式中进行逻辑判断,以增强程序的健壮性。

Java构造函数

特点

1函数名与类名相同

2不用定义返回值类型

3不可写return语句

(5可私有化)

4 一个类中可定义多个够构造函数(构造函数的重载

作用

1 建立一个对象就会调用与之对应的构造函数

2 可用于对对象进行初始化

当类中定义了构造函数后默认的构造函数就没有了

注意:

当在类中遇到

{

System.out.println(“dddfdfdf”);

Speck();

}

称作构造代码块

作用:

1给对象初始化

2对象一建立就运行,优先于构造函数

与构造函数区别

给所有统一初始化

Java中的This

*可用来区分局部变量与成员变量

*当定义类的功能时,该函数内部要用到调用该函数的对象时没用this

*本类内部使用了本类对象

图,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,

*构造函数调用别的构造函数,一般不允许互相调用

图-------------------------------------

如上面程序中的的age 若在传参位置定义int age 这个age若要去成员区分

可表示为this.age=age;

1 首先他表示某个对象

2 只能出现在实例方法中,不能出现在类方法中

//实例方法不加关键字static,类方法则有static

3 默认格式this.成员变量

4 实例

class A{

int x;

static int y;

void f() {

this.x=100;//this表示使用x的当前对象(上面的a对象),当有对象调用方法f时,就将100赋值给当前对象的变量x.

A.Y=200; //静态成员变量只能有类名来应用。

}

}

当一个对象调用方法时,方法中的实例成员变量就是指分配给该对象的实例成员,所以通常省略this(上述speck方法中可在age前加this,speck也可加this)

static变量则和其他对象共享  所以通常在实例方法中省略类名如这里的A

值得注意的是:当局部变量名和实例成员变量名相同时 this和类名就不能省略

另外this不能出现在类方法中是应为,类方法可以通过类名直接调用,这时可能还没有任何对象产生

***************this代表所在函数所在对象的应用************

***************即:那个对象访问this 所在的方法,this就代表那个对象*****

Static关键字

用法:用与修饰成员变量,和成员函数(称静态变量/静态方法或类变量/类方法)

一些对象所共性的值,如中国人的国籍,可以定义为static(static String contruy = “中国”;)

(反之特有的特性及一些方法随对象存储。(称实例变量/方法叫实例方法)(String name ;))

定以后除了可被对象调用外,还可直接被类名调用

静态修饰的内容被对象所共享,不用再每个对象创建时都建立一个,只创建一次被其他对象共用。并且在内存中单独有他的空间方法区中(方法区中有方法,和一些数据),而不是在随每个对象放在对应的堆内存中。

static特点总结:

1)  随着类的加载而加载

类的消失而消失

2)  优先于对象存在

3)  被所有对象所共享

4)  可直接被类名所调用

注意

1)静态方法只能访问静态成员变量,静态成员函数。且静态方法中不能出现this,super等关键字(因为静态优先与对象存在,所以不能有this(this代表..对象),)

2 )非静态方法可访问静态成员、静态方法。当然也可访问非静态成员和方法。

Static优点

3)可以发现主入口函数是静态的

对于对象间共享的数据进行单独的存储,节省空间,没有必要为每个对象都存储一份

static缺点:

生命周期过长。访问出现限制,静态只能访问静态。

Static 何时使用

1)  静态变量,上面提到的共享数据时

2)  静态方法,当方法内部没有用到类中的非静态成员时

3)  每个应用程序中都有共性的功能,可以将这些功能进行抽取,独立封装,以便复用。

4)  图  密码,,,,,,,,,,,,,,

静态代码块

特点:随着类的加载而加载,用于给类进行初始化

结构

Static

{要初始化的内容}

Main主函数

是一个特殊的函数,是程序入口,被jvm(虚拟机)调用。

定义

1)  public 代表访问权限最大

2)  static 说明主函数随着类的加载已经存在了

3)  void 主函数没有具体的返回值

4)  main不是关键字 但是一个特殊的单词,可被jvm识别

5)  (String [] args)函数的参数,参数类型是一个数组,数组中的元素师字符串。即字符串类型的数组。只有args可改

6)  主函数是固定类型的:被jvm识别

7)  可被重载

8)  Jvm 在调用主函数时插入的是new String[0];

结构;Public static void main(String args[]){  }

单例1 饿汉式

决绝一个类在内存只存在一个对象.

那么如何确保唯一性呢

1)  为了避免其他程序过多的建立该类对象,先禁止其他程序建立该类对象。

2)  为了你他程序可以访问到该类对象,只好在本类中定义一个对象。

3)  为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

代码实现

1)  将构造函数私有化

2)  在类中创建一个本类对象

3)  提供一个方法可以获取该对象

实例

class single{

private int num;

public void setNum(int num)

{ this.num = num;}

public int getNum()

{return num;}

private single(){}//私有化构造函数

private static single  s= new single();//创建本类对象

//对外提供方法,获取这个本类对象

public static single getInstance(){

return s;

}

}

class singleDo{

public static void main(String [] args) {

single s1 =single.getInstance();

single s2 =single.getinstance();

s1.setNum(39);

System.out.println(s2.getNum());
 
}

}

//结果:39

可见s1与s2指的是同一个对象

单例二 懒汉式

只需对上述类最如下修改

private static single s=null;

private single(){}

public static single
getInstance(){

If(s==bull)

s=nuw single();

return s;

}

二者区别 :

单例1(饿汉)

饿汉:single类一进内存,就已创建好了对象

单例2

懒汉:single类进内存,对象还没有存在,只有调用了getInstance方法时,才建立对象

开发一般用单例1饿汉式(安全)

单例2 当多个程序访问时容易产生多个对象,而不是一个对象,因此存在隐患。

所以单例2 懒汉:public
static synchronized single getInstance(){}

// synchronized,保证对象唯一性,上锁,进去一个访问 就不能进第二个,

//除非第一个访问结束。

java 基础回顾1的更多相关文章

  1. 四、Android学习第四天——JAVA基础回顾(转)

    (转自:http://wenku.baidu.com/view/af39b3164431b90d6c85c72f.html) 四.Android学习第四天——JAVA基础回顾 这才学习Android的 ...

  2. 【Spring学习】【Java基础回顾-数据类型】

    Java基础回顾过程中,之前对于Java相关基础知识都是从这个人的博客看一些,那边的内容看一下,觉得不够系统化,决定用xmind脑图的形式,将Java基础知识回顾的作为一个系列,当前正在做的会包含: ...

  3. Java基础回顾_第二部分_Java流程控制

    Java基础回顾_第二部分 Java流程控制 Scanner对象(扫描器,捕获输入) import java.util.Scanner; public class Demo01 { public st ...

  4. Java基础回顾_第一部分

    Java基础回顾 基本数据类型 数值类型 什么是字节? 位(bit):是计算机中数据的最小单位 字节(byte):是计算机中数据处理的基本单位,习惯上用大写字母B来表示 1 B = 8 bit 字符: ...

  5. 1、java基础回顾与加强

    一.    基础回顾 1   集合 1.1  集合的类型与各自的特性 ---|Collection: 单列集合 ---|List: 有存储顺序, 可重复 ---|ArrayList:    数组实现, ...

  6. Java基础回顾

    学习基础背景:Acmer.有C/C++基础 以[Java语言程序设计(基础篇)]第10版为参考(感谢YJJ的推荐),列出部分知识点,注意思考背后的原因和好处坏处. [14-16章——关于可视化编程的章 ...

  7. java基础回顾(2)

    java中只有两种类型:基础类型.引用类型 8中基本类型:byte  short int long float double char boolean,其中byte类型取值范围[-2^7~2^7-1] ...

  8. java基础回顾之IO

    Java的IO 是Java运用重要部分之一,涉及到的内容也比较多,容易混淆,一段时间不用,可能就会遗忘,要时常回顾记忆一下: (图片来源于网络) Java 流在处理上分为字符流和字节流. 字符流处理的 ...

  9. Java基础回顾一

    1.JDK和JRE的区别: JDK:java开发工具包,提供java的开发环境和运行环境 JRE:java运行环境,为java的运行提供所需要的环境 2. ==和qruals的区别: == 基本类型: ...

  10. 输出 n=6 的三角数字阵(JAVA基础回顾)

    package itcast.feng; import java.util.Scanner; //需求:输出 n=6 的三角数字阵 //1 //2 3 //4 5 6 //7 8 9 10 //11 ...

随机推荐

  1. [cogs731] [网络流24题#6] 最长递增子序列 [网络流,最大流]

    [转hzwer]第一问是LIS,动态规划求解,第二问和第三问用网络最大流解决.首先动态规划求出F[i],表示以第i位为开头的最长上升序列的长度,求出最长上升序列长度K.1.把序列每位i拆成两个点< ...

  2. poj1330 lca 最近公共祖先问题学习笔记

    首先推荐两个博客网址: http://dongxicheng.org/structure/lca-rmq/ http://scturtle.is-programmer.com/posts/30055. ...

  3. Hadoop1.0之集群搭建

    VirtualBox虚拟机 下载地址 下载择操作系统对应的基础安装包 下载扩展包(不区分操作系统) http://www.oracle.com/technetwork/cn/server-storag ...

  4. N天学习一个Linux命令之sudo

    前言 新项目打算采用运维搭建的发布系统发代码,发布后生效前需要做一些处理,因为发布系统登录目标机器使用的是非root账号,所以需要使用sudo来提升权限.当执行sudo cd /xxx/xx时会提示报 ...

  5. Bootstrap基础--文本对齐风格

    在排版中离不开文本的对齐方式.在CSS中常常使用text-align来实现文本的对齐风格的设置.其中主要有四种风格: ☑  左对齐,取值left ☑  居中对齐,取值center ☑  右对齐,取值r ...

  6. 全部对于Unity3D中 NGUI 触发事件的监听方法

    NGUI事件的种类非常多.比方点击.双击.拖动.滑动等等,他们处理事件的原理差点儿万全一样,本文仅仅用button来举例. 方法一.直接监听事件 把以下脚本直接绑定在button上.当button点击 ...

  7. nyoj 1238 最少换乘 (河南省第八届acm程序设计大赛)

    题目1238 题目信息 执行结果 本题排行 pid=1238" style="text-decoration:none; color:rgb(55,119,188)"&g ...

  8. 最新版本号cocos2d&#173;2.0&#173;x&#173;2.0.2使用新资源载入策略!不再沿用-hd、-

     前段时间cocos2dx更新了最新版本号cocos2d­2.0­x­2.0.2.也从这个版本号開始对于资源载入与管理都改变了策略. 在之前的载入方式都是通过沿用与cocos2d-iphone一样 ...

  9. 2017全面JAVA面试经历总结

    https://wenku.baidu.com/view/05e8f71afbd6195f312b3169a45177232f60e474.html?from=search JAVA常见面试题及解答2 ...

  10. 解析HTTP协议六种请求方法

    标准Http协议支持六种请求方法,即: 1,GET 2,HEAD 3,PUT 4,DELETE 5,POST 6,OPTIONS 但其实我们大部分情况下只用到了GET和POST.如果想设计一个符合RE ...