Java基础知识整理(三)

版权声明:版权声明就是不能抄袭 https://blog.csdn.net/amethystcity/article/details/81143899

Java复制数组的四种方法


System.arraycopy > 使用clone方法 > Array.copyOf > for 循环逐一复制

1. System.arraycopy方法

            public static void arraycopy(Object src, int srcPos,Object dest,int destPos,int length)  

API中的解释:从指定源数组中复制一个数组,复制从指定的位置开始,到目标数组的指定位置结束。从src引用的源数组到dest引用的目标数组,数组组件的一个子序列被复制下来。被复制的组件的编号等于length参数。源数组中位置在srcPos到srcPos+length-1之间的组件被分别复制到目标数组中的destPos到destPos+length-1位置

             public class test{
        public static void main(String[] args) {

            int[] a1={1,2,3,4,5,6,7};
            int[] a2={8,9,10,11,12,13};

            System.arraycopy(a1, 1, a2, 2, 2);
            System.out.print("copy后结果:");
            for(int i=0;i<a2.length;i++){
                System.out.print(a2[i]+" ");
            }
        }
    }

            copy后结果:8 9 2 3 12 13 

2.Clone方法

clone翻译就是复制, 在Java语言中, clone方法被对象调用,所以会复制对象。所谓的复制对象,首先要分配一个和源对象同样大小的空间,在这个空间中创建一个新的对象。


面向对象的五个基本原则


  • 单一职责原则(Single-Resposibility Principle):一个类,最好只做一件事,只有一个引起它的变化。单一职责原则可以看做是低耦合、高内聚在面向对象原则上的引申,将职责定义为引起变化的原因,以提高内聚性来减少引起变化的原因。
  • 开放封闭原则(Open-Closed principle):软件实体应该是可扩展的,而不可修改的。也就是,对扩展开放,对修改封闭的。
  • Liskov替换原则(Liskov-Substituion Principle):子类必须能够替换其基类。这一思想体现为对继承机制的约束规范,只有子类能够替换基类时,才能保证系统在运行期内识别子类,这是保证继承复用的基础。
  • 依赖倒置原则(Dependecy-Inversion Principle):依赖于抽象。具体而言就是高层模块不依赖于底层模块,二者都同依赖于抽象;抽象不依赖于具体,具体依赖于抽象。
  • 接口隔离原则(Interface-Segregation Principle):使用多个小的专门的接口,而不要使用一个大的总接口

助记:

s( Single-Resposibility Principle ): 单一职责原则

o( Open-Closed principle ): 开放封闭原则

l( Liskov-Substituion Principle ): 里氏原则

i( Interface-Segregation Principle ): 接口隔离原则

d( Dependecy-Inversion Principle ): 依赖倒置原则

一个单词:立方体(solid),很好记!!!


String与正则表达式


  1. 有时候有这样的需求:对字符串需要匹配,查找,替换等操作.
  2. 什么是正则表达式?是一个有规律的,有特殊意义的一串字符,通常用来匹配,查找等操作。
  3. 正则表达式常用符号:

    *:任意字符;
    
    [abc]:表示abc中任意一个字母
         
    [^abc]:除了abc之外的任意字符
         
    [0-9]:表示0-9的任意一个数字
        
    [a-z]:表示a-z中任意一个字母
        
    [0-9a-zA-Z_]:表示这些字符中任意一个 
        
    [a-z&&[^abc]]:表示a-z中除了abc之外的任意一个字母
    
    [/d]:表示0-9中任意一个数字 
    
    [/D]:表示非数字中任意一个字符 
    
    [/w]:表示单词字符中任意一个相当于[0-9a-zA-Z_]字母数字下划线
    
    [/W:表示除了单词字符中任意一个
    
    \s:表示[\n\t\r\f],空白
    
    \S:非空白
    
    [X]*:匹配0个以上的X
    
    [X]?:匹配0个或1个X
    
    [X]+:匹配1个以上的X
    
    [X]{n}:匹配n个X
    
    [X]{n,}:匹配n个以上的X
    
    [X]{n,m}:匹配n到m个
    
    "^" :从头开始检查字符串是否匹配正则表达式
    
    “&”:检查字符串的结尾是否匹配正则表达式
    

猜你喜欢

转载自blog.csdn.net/amethystcity/article/details/81143899