类的封装

2018/11/04 13:19 于 个人笔记 0

Java 封装

在面向对象程式设计方法中,封装(英语:Encapsulation)是指一种将抽象性函式接口的实现细节部份包装、隐藏起来的方法。

封装可以被认为是一个保护屏障,防止该类的代码和数据被外部类定义的代码随机访问。

要访问该类的代码和数据,必须通过严格的接口控制。

封装最主要的功能在于我们能修改自己的实现代码,而不用修改那些调用我们代码的程序片段。

适当的封装可以让程式码更容易理解与维护,也加强了程式码的安全性。
封装的优点

  • 良好的封装能够减少耦合。
  • 类内部的结构可以自由修改。
  • 可以对成员变量进行更精确的控制。
  • 隐藏信息,实现细节。
    实现Java封装的步骤
    1. 修改属性的可见性来限制对属性的访问(一般限制为private),例如:
public class Person {
    private String name;
    private int age;
}

这段代码中,将 name 和 age 属性设置为私有的,只能本类才能访问,其他类都访问不了,如此就对信息进行了隐藏。

  1. 对每个值属性提供对外的公共方法访问,也就是创建一对赋取值方法,用于对私有属性的访问,例如:
public class Person{
    private String name;
    private int age;
​
    public int getAge(){
      return age;
    }
​
    public String getName(){
      return name;
    }
​
    public void setAge(int age){
      this.age = age;
    }
​
    public void setName(String name){
      this.name = name;
    }
}

采用 this 关键字是为了解决实例变量(private String name)和局部变量(setName(String name)中的name变量)之间发生的同名的冲突。

实例

让我们来看一个java封装类的例子:

/* 文件名: EncapTest.java */
public class EncapTest{

   private String name;
   private String idNum;
   private int age;

   public int getAge(){
      return age;
   }

   public String getName(){
      return name;
   }

   public String getIdNum(){
      return idNum;
   }

   public void setAge( int newAge){
      age = newAge;
   }

   public void setName(String newName){
      name = newName;
   }

   public void setIdNum( String newId){
      idNum = newId;
   }
}

以上实例中public方法是外部类访问该类成员变量的入口。

通常情况下,这些方法被称为getter和setter方法。

因此,任何要访问类中私有成员变量的类都要通过这些getter和setter方法。

通过如下的例子说明EncapTest类的变量怎样被访问:

/* F文件名 : RunEncap.java */
public class RunEncap{
   public static void main(String args[]){
      EncapTest encap = new EncapTest();
      encap.setName("James");
      encap.setAge(20);
      encap.setIdNum("12343ms");

      System.out.print("Name : " + encap.getName()+ 
                             " Age : "+ encap.getAge());
    }
}

以上代码编译运行结果如下:

Name : James Age : 20

以上内容摘录自菜鸟教程Java封装

集合(Collection)学习

2018/11/04 12:57 于 个人笔记 0

集合框架体系如图所示

Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

  • 集合框架是一个用来代表和操纵集合的统一架构。所有的集合框架都包含如下内容:
  • 接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象
  • 实现(类):是集合接口的具体实现。从本质上讲,它们是可重复使用的数据结构,例如:ArrayList、LinkedList、HashSet、HashMap。
  • 算法:是实现集合接口的对象里的方法执行的一些有用的计算,例如:搜索和排序。这些算法被称为多态,那是因为相同的方法可以在相似的接口上有着不同的实现。

除了集合,该框架也定义了几个 Map 接口和类。Map 里存储的是键/值对。尽管 Map 不是集合,但是它们完全整合在集合中。
Set和List的区别

  • Set 接口实例存储的是无序的,不重复的数据。List 接口实例存储的是有序的,可以重复的元素。
  • Set检索效率低下,删除和插入效率高,插入和删除不会引起元素位置改变 <实现类有HashSet,TreeSet>。
  • List和数组类似,可以动态增长,根据实际存储的数据的长度自动增长List的长度。查找元素效率高,插入删除效率低,因为会引起其他元素位置改变 <实现类有ArrayList,LinkedList,Vector> 。
    遍历 ArrayList
import java.util.*;

public class Test{
 public static void main(String[] args) {
     List<String> list=new ArrayList<String>();
     list.add("Hello");
     list.add("World");
     list.add("HAHAHAHA");
     //第一种遍历方法使用foreach遍历List
     for (String str : list) {            //也可以改写for(int i=0;i<list.size();i++)这种形式
        System.out.println(str);
     }

     //第二种遍历,把链表变为数组相关的内容进行遍历
     String[] strArray=new String[list.size()];
     list.toArray(strArray);
     for(int i=0;i<strArray.length;i++) //这里也可以改写为  foreach(String str:strArray)这种形式
     {
        System.out.println(strArray[i]);
     }

    //第三种遍历 使用迭代器进行相关遍历

     Iterator<String> ite=list.iterator();
     while(ite.hasNext())//判断下一个元素之后有值
     {
         System.out.println(ite.next());
     }
 }
}

解析:

三种方法都是用来遍历ArrayList集合,第三种方法是采用迭代器的方法,该方法可以不用担心在遍历的过程中会超出集合的长度。
遍历 Map

import java.util.*;

public class Test{
     public static void main(String[] args) {
      Map<String, String> map = new HashMap<String, String>();
      map.put("1", "value1");
      map.put("2", "value2");
      map.put("3", "value3");

      //第一种:普遍使用,二次取值
      System.out.println("通过Map.keySet遍历key和value:");
      for (String key : map.keySet()) {
       System.out.println("key= "+ key + " and value= " + map.get(key));
      }

      //第二种
      System.out.println("通过Map.entrySet使用iterator遍历key和value:");
      Iterator<Map.Entry<String, String>> it = map.entrySet().iterator();
      while (it.hasNext()) {
       Map.Entry<String, String> entry = it.next();
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }

      //第三种:推荐,尤其是容量大时
      System.out.println("通过Map.entrySet遍历key和value");
      for (Map.Entry<String, String> entry : map.entrySet()) {
       System.out.println("key= " + entry.getKey() + " and value= " + entry.getValue());
      }

      //第四种
      System.out.println("通过Map.values()遍历所有的value,但不能遍历key");
      for (String v : map.values()) {
       System.out.println("value= " + v);
      }
     }
}

如何使用比较器
TreeSet和TreeMap的按照排序顺序来存储元素. 然而,这是通过比较器来精确定义按照什么样的排序顺序。

这个接口可以让我们以不同的方式来排序一个集合。

总结

  • Java集合框架为程序员提供了预先包装的数据结构和算法来操纵他们。
  • 集合是一个对象,可容纳其他对象的引用。集合接口声明对每一种类型的集合可以执行的操作。
  • 集合框架的类和接口均在java.util包中。
  • 任何对象加入集合类后,自动转变为Object类型,所以在取出的时候,需要进行强制类型转换。-
    以上摘录自菜鸟教程Java集合框架

Java学习路途中几个重要的知识点

2018/11/04 12:34 于 个人笔记 0

# Java学习路途中几个重要的知识点

Java基础知识:集合、类的封装继承和多态、接口、IO文件读写、多线程、网络编程、数据库的连接、
Java框架:SSH、SSM。
下面将具体将每个知识点专门写一篇文章,供自己以及他人浏览使用,如果对你有帮助请记得收藏本站,
也希望有你的评论,如果你有什好的学习方法及总结当然可以联系我,我将会专门把你的文章添加进来,
供更多人学习使用。

不知道为什么就是想写点东西

2018/09/06 19:22 于 闲聊扯淡 0

            不知不觉还有两个月就要离校,我以为自己要像一个开挂的机器人一样,每天学习,结果却很嘲讽,
        每天都不知道要干什么,从什么地方学起,就像失去了什么一样,这种感觉我很清楚,初中高中六年我只
        学过五年的知识,那是因为我迷失了方向,我用高三一暑假的时间来沉浸再自己没学上,要花钱上野鸡大
        学的无奈,幸运的是开学前一天我知道,自己不用花钱上野鸡大学了,可以通过补录上正规的学校,可笑
        的是上帝不想让我安安静静的上学,从火车无限期晚点,到不得已休学半学期,等我回来时班级还是陌生
        的,还好我没放弃自己,毕竟早已习惯这种霉运,我去欺骗大脑,告诉自己专业课是新知识,是自己喜欢
        的东西,自己本来就会,还好这种欺骗奏效!!!总算没落下,至少很享受帮别人解决问题,别人一句谢
        谢的成就感!!!因为我太需要这个了!!但是不幸的是在最后两个月我又迷失了!我企图组建一个小团
        队,可惜他们从来没认真过!!!我也想到了这种结果,只是还报有一丝丝幻想!!!其实我挺喜欢幻想
        的,我有时间可以写下自己幻想的未来!!!当然我所说的一丝丝幻想不是这个幻想,我只是以为他们会
        和我一起尽心尽力。。。果然靠人人跑靠树树倒,只能靠自己啊!!!!两个月我要完成很多事情,考驾
        照,做毕业设计,找工作,学习专业课。。。但是现在的我却不知道先做什么了。。。计划赶不上变化。。

第一个福利,压枪宏。。。

2018/06/26 08:39 于 福利专区 1

压枪宏
我们先来见识一下他的图标:

怎么样是不是很NICE哈哈!好了现在给大家介绍一下他的功能:

首先键盘的上下左右键分别控制它增加压枪幅度 、减小压枪幅度、停止压枪、隐藏/显示窗体,小键盘的0-6对应的分别是窗体上6个压枪幅度,这是预先设置好的这里只是快捷键

最后给大家讲一下如果有需要定制鼠标键盘宏的欢迎联系我哦!点击连接下载

压枪宏

1