精华内容
下载资源
问答
  • java中String类中常用的构造函数

    千次阅读 2018-09-19 16:20:12
    String类有11中构造函数,这里只简单分析几个常用的构造函数。   java中String类的构造方法 String类有以下几种用得到的构造方法  1.空构造 空构造生成哟个空的字符串:函数声明:public String(); 使用: ...

    String类有11中构造函数,这里只简单分析几个常用的构造函数。

     

    java中String类的构造方法

    String类有以下几种用得到的构造方法

        1.空构造

    空构造生成哟个空的字符串:函数声明:public String();

    使用:

    String s1 = new String();

    构造了一个空的字符串s1

     

        2.把字节数组转化成字符串

    函数原型:

    public String (byte[] bytes):把字节数组转化为字符串

    public String (byte[] byte,int index,int length):从字节数组的第index位将字符串的length个字节转化为字符串

    byte[] arr ={97,98,99,100,101};

    String s2 = new String(arr,2,3);

    这个就是输出cde,因为转码成字符了,从第二个开始,转三个。

     

        3.把字符数组转化成字符串

    这个不会像字节数组一样,这个不需要进行转码

    函数原型:

    public String (char [] value): 把字符数组转化为字符串

    public String (char[] value,int index,int length):从字符数组的第index位将字符串的length个字节转化为字符串

     

    实例:

    char[] ch = {'a','b','c','d','e','f'};

    String s2 = new String(ch,2,3);

    输出结果是cde

     

     

    展开全文
  • Mat类常用的构造函数

    千次阅读 2018-04-19 11:27:38
    无参构造方法: Mat::Mat() 创建行数为rows,列为col,类型为type图像(图像元素类型,如CV_8UC3等) Mat::Mat(int rows, int cols, int type) 创建大小为size,类型为type图像 Mat::Mat(Size size, int type)...

    Mat类
    Mat类是一个图像类,也是一种通用矩阵类。

    • 无参构造方法:
      Mat::Mat()

    • 创建行数为rows,列为col,类型为type的图像(图像元素类型,如CV_8UC3等)
      Mat::Mat(int rows, int cols, int type)

    • 创建大小为size,类型为type的图像
      Mat::Mat(Size size, int type)

    • 创建行数为 rows,列数为 col,类型为 type 的图像,并将所有元素初始
      化为值 s
      Mat::Mat(int rows, int cols, int type, const Scalar& s)

    • 创建大小为 size,类型为 type 的图像,并将所有元素初始化为值 s
      Mat::Mat(Size size, int type, const Scalar& s)

    • 将 m 赋值给新创建的对象,此处不会对图像数据进行复制,m 和新对象
      共用图像数据
      Mat::Mat(const Mat& m)

    • 创建行数为 rows,列数为 col,类型为 type 的图像,此构造函数不创建
      图像数据所需内存,而是直接使用 data 所指内存,图像的行步长由 step
      指定
      Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)

    • 创建大小为 size,类型为 type 的图像,此构造函数不创建图像数据所需
      内存,而是直接使用 data 所指内存,图像的行步长由 step 指定
      Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)

    • 创建的新图像为 m 的一部分,具体的范围由 rowRange 和 colRange 指
      定,此构造函数也不进行图像数据的复制操作,新图像与 m 共用图像数

      Mat::Mat(const Mat& m, const Range& rowRange, const Range& colRange)
    • 创建的新图像为 m 的一部分,具体的范围 roi 指定,此构造函数也不进
      行图像数据的复制操作,新图像与 m 共用图像数据
      Mat::Mat(const Mat& m, const Rect& roi)
    展开全文
  • WrapperWrapper介绍1. ge、gt、le、lt、isNull、isNotNull2. eq、ne3. between、notBetween4. allEq5. like、notLike、likeLeft、likeRight6. in、notIn、inSql、notInSql、... 指定要查询列12. set、setSql Wrappe

    Wrapper介绍

    在这里插入图片描述

    • Wrapper : 条件构造抽象类,最顶端父类
      • AbstractWrapper用于查询条件封装,生成 sql 的 where 条件
        • QueryWrapper : Entity 对象封装操作类,不是用lambda语法
        • UpdateWrapper : Update 条件封装,用于Entity对象更新操作
        • AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
          • LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
          • LambdaUpdateWrapper : Lambda 更新封装Wrapper

    在这里插入图片描述

    注意以下条件构造器的方法入参中的 column 均表示数据库字段

    1. ge、gt、le、lt、isNull、isNotNull

    • ge 大于等于
    • gt 大于
    • le 小于等于
    • lt 小于
    • isNull 字段 IS NULL (该字段为空)
    • isNotNull 字段 IS NOT NULL (该字段不为空)
    • 下面示例是逻辑删除 而不是物理删除
    @Test
    public void testDelete() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
            .isNull("name")
            .ge("age", 12)
            .isNotNull("email");
        int result = userMapper.delete(queryWrapper);
        System.out.println("delete return count = " + result);
    }
    

    UPDATE user SET deleted=1 WHERE deleted=0 AND name IS NULL AND age >= ? AND email IS NOT NULL

    2. eq、ne

    • eq 等于
      • ne 不等于
    @Test
    public void testSelectOne() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("name", "Tom");
    
        User user = userMapper.selectOne(queryWrapper);
        System.out.println(user);
    }
    
    • 注意:seletOne返回的是一条实体记录,当出现多条时会报错
      SELECT id,name,age,email,create_time,update_time,deleted,version FROM user WHERE deleted=0 AND name = ?

    3. between、notBetween

    • between BETWEEN 值1 AND 值2
    • notBetween NOT BETWEEN 值1 AND 值2
    • 包含大小边界
    @Test
    public void testSelectCount() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.between("age", 20, 30);
    
        Integer count = userMapper.selectCount(queryWrapper);
        System.out.println(count);
    }
    

    SELECT COUNT(1) FROM user WHERE deleted=0 AND age BETWEEN ? AND ?

    4. allEq

    • allEq 全部相等
    @Test
    public void testSelectList() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        Map<String, Object> map = new HashMap<>();
        map.put("id", 2);
        map.put("name", "Jack");
        map.put("age", 20);
    
        queryWrapper.allEq(map);
        List<User> users = userMapper.selectList(queryWrapper);
    
        users.forEach(System.out::println);
    }
    

    SELECT id,name,age,email,create_time,update_time,deleted,version
    FROM user WHERE deleted=0 AND name = ? AND id = ? AND age = ?

    5. like、notLike、likeLeft、likeRight

    • like LIKE ‘%值%’

    • notLike NOT LIKE ‘%值%’

    • likeLeft LIKE ‘%值’

    • likeRight LIKE ‘值%’

    • selectMaps返回Map集合列表

    @Test
    public void testSelectMaps() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper
            .notLike("name", "e")
            .likeRight("email", "t");
    
        List<Map<String, Object>> maps = userMapper.selectMaps(queryWrapper);//返回值是Map列表
        maps.forEach(System.out::println);
    }
    

    SELECT id,name,age,email,create_time,update_time,deleted,version
    FROM user WHERE deleted=0 AND name NOT LIKE ? AND email LIKE ?

    6. in、notIn、inSql、notInSql、exists、notExists

    • in 字段 IN (v0, v1, v2, …)

    • notIn 字段 NOT IN(v0, v1, v2, …)

    • inSql 字段 IN (SQL语句)

    • notInSql 字段 NOT IN (SQL语句)

    • exists 拼接 EXISTS (SQL语句)

    • notExists 拼接 NOT EXISTS (SQL语句)

    • in、notIn:

    • notIn(“age”,{1,2,3})—>age not in (1,2,3)

    • notIn(“age”, 1, 2, 3)—>age not in (1,2,3)

    • inSql、notinSql:可以实现子查询
      例: inSql(“age”, “1,2,3,4,5,6”)—>age in (1,2,3,4,5,6)
      例: inSql(“id”, “select id from table where id < 3”)—>id in (select id from table where id < 3)

    @Test
    public void testSelectObjs() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        //queryWrapper.in("id", 1, 2, 3);
        queryWrapper.inSql("id", "select id from user where id < 3");
    
        List<Object> objects = userMapper.selectObjs(queryWrapper);//返回值是Object列表
        objects.forEach(System.out::println);
    }
    

    SELECT id,name,age,email,create_time,update_time,deleted,version
    FROM user WHERE deleted=0 AND id IN (select id from user where id < 3)

    7. or、and

    • 注意:这里使用的是 UpdateWrapper
      不调用or则默认为使用 and 连
    @Test
    public void testUpdate1() {
    
        //修改值
        User user = new User();
        user.setAge(99);
        user.setName("Andy");
    
        //修改条件
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper
            .like("name", "h")
            .or()
            .between("age", 20, 30);
    
        int result = userMapper.update(user, userUpdateWrapper);
    
        System.out.println(result);
    }
    

    UPDATE user SET name=?, age=?, update_time=? WHERE deleted=0 AND name LIKE ? OR age BETWEEN ? AND ?

    8. 嵌套or、嵌套and

    这里使用了lambda表达式,or中的表达式最后翻译成sql时会被加上圆括号

    @Test
    public void testUpdate2() {
    
    
        //修改值
        User user = new User();
        user.setAge(99);
        user.setName("Andy");
    
        //修改条件
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper
            .like("name", "h")
            .or(i -> i.eq("name", "李白").ne("age", 20));
    
        int result = userMapper.update(user, userUpdateWrapper);
    
        System.out.println(result);
    }
    

    UPDATE user SET name=?, age=?, update_time=?
    WHERE deleted=0 AND name LIKE ?
    OR ( name = ? AND age <> ? )

    9. orderBy、orderByDesc、orderByAsc

    • orderBy ORDER BY 字段,…
    • orderByDesc ORDER BY 字段,… DESC
    • orderByAsc ORDER BY 字段,… ASC
    @Test
    public void testSelectListOrderBy() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.orderByDesc("id");
    
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }
    

    SELECT id,name,age,email,create_time,update_time,deleted,version
    FROM user WHERE deleted=0 ORDER BY id DESC

    10. last

    直接拼接到 sql 的最后
    注意:只能调用一次,多次调用以最后一次为准 有sql注入的风险,请谨慎使用

    @Test
    public void testSelectListLast() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.last("limit 1");
    
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }
    

    SELECT id,name,age,email,create_time,update_time,deleted,version
    FROM user WHERE deleted=0 limit 1

    11. 指定要查询的列

    @Test
    public void testSelectListColumn() {
    
        QueryWrapper<User> queryWrapper = new QueryWrapper<>();
        queryWrapper.select("id", "name", "age");
    
        List<User> users = userMapper.selectList(queryWrapper);
        users.forEach(System.out::println);
    }
    

    SELECT id,name,age FROM user WHERE deleted=0

    12. set、setSql

    最终的sql会合并 user.setAge(),以及 userUpdateWrapper.set() 和 setSql() 中 的字段

    @Test
    public void testUpdateSet() {
    
        //修改值
        User user = new User();
        user.setAge(99);
    
        //修改条件
        UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
        userUpdateWrapper
            .like("name", "h")
            .set("name", "老李头")//除了可以查询还可以使用set设置修改的字段
            .setSql(" email = '123@qq.com'");//可以有子查询
    
        int result = userMapper.update(user, userUpdateWrapper);
    }
    

    UPDATE user SET age=?, update_time=?, name=?, email = '123@qq.com’
    WHERE deleted=0 AND name LIKE ?

    展开全文
  • Java中String类非常重要,结合网上资料以及自己分析String类源码,做如下总结: String类对象是不可变,它可以被共享。 1.String类开始是这样定义: public final class String implements java.io....

    Java中的String类非常重要,结合网上的资料以及自己分析String类的源码,做如下总结:

    String类对象是不可变的,它可以被共享。

    1.String类开始是这样定义的:

    public final class String implements java.io.Serializable,Comparable<String>,CharSequence
    从以上定义可以看出,String类实现了三个接口,且分别要实现他们的方法。

    2.定义了如下成员变量:

    private final char value[];
    private int hash;
    private static final long serialVersionUID =-6849794470754667710L;
    private static final ObjectStreamField[] serialPersistentFields =
            new ObjectStreamField[0];
    
    可以看出,String底层还是用数组来存储数据的,hash值是当使用了hashTable或者hashMap数据结构时,才会使用。后面两个变量是关于序列化的。
    3.定义了如下构造方法:

    (1)使用无参构造函数

    public String(){
        this.value = "".value;
    }
    代表空字符序列,使用这个构造函数是不必要的,因为字符串对象是不可变的。这个默认的空字符串会一直存在内存中。

    (2)使用字符串对象来初始化

     public String(String original) {
            this.value = original.value;
            this.hash = original.hash;
        }
    新创建的实例与形参的实例中的value和hash值是相同的,说明两个value都指向了同一块内存中的数据(数组的数据)。随后修改字符串会影响原来的值。

    (3)使用了数组对象来初始化

    public String(char value[]) {
            this.value = Arrays.copyOf(value, value.length);
        }
    Arrays.copyOf()方法中会在堆中重新申请一块内存,然后将形参中value的值复制到该新的内存中,并且将这个地址值返回给当前对象的value。形参数组的后续修改不会影响该对象的改变。
    (4)截取源字符数组中的部分子字符数组来初始化
      public String(char value[], int offset, int count) {
            if (offset < 0) {
                throw new StringIndexOutOfBoundsException(offset);
            }
            if (count <= 0) {
                if (count < 0) {
                    throw new StringIndexOutOfBoundsException(count);
                }
                if (offset <= value.length) {
                    this.value = "".value;
                    return;
                }
            }
          // Note: offset or count might be near -1>>>1.
            if (offset > value.length - count) {
                throw new StringIndexOutOfBoundsException(offset + count);
            }
            this.value = Arrays.copyOfRange(value, offset, offset+count);
      }
    (5)截取整型数组中的部分子数组来初始化
     public String(int[] codePoints, int offset, int count) {
            if (offset < 0) {
                throw new StringIndexOutOfBoundsException(offset);
            }
            if (count <= 0) {
                if (count < 0) {
                    throw new StringIndexOutOfBoundsException(count);
                }
                if (offset <= codePoints.length) {
                    this.value = "".value;
                    return;
                }
            }
            // Note: offset or count might be near -1>>>1.
            if (offset > codePoints.length - count) {
                throw new StringIndexOutOfBoundsException(offset + count);
            }
    
            final int end = offset + count;
    
            // Pass 1: Compute precise size of char[]
            int n = count;
            for (int i = offset; i < end; i++) {
                int c = codePoints[i];
                if (Character.isBmpCodePoint(c))
                    continue;
                else if (Character.isValidCodePoint(c))
                    n++;
                else throw new IllegalArgumentException(Integer.toString(c));
            }
    
            // Pass 2: Allocate and fill in char[]
            final char[] v = new char[n];
    
            for (int i = offset, j = 0; i < end; i++, j++) {
                int c = codePoints[i];
                if (Character.isBmpCodePoint(c))
                    v[j] = (char)c;
                else
                    Character.toSurrogates(c, v, j++);
            }
    
            this.value = v;
        }
    
    分配一个新的数组,其中包含一个子阵列中的字符 Unicode代码点,数组的后续修改不会影响所创建的字符串对象。

    (6)使用StringBuffer对象来初始化

    public String(StringBuffer buffer) {
            synchronized(buffer) {
                this.value = Arrays.copyOf(buffer.getValue(), buffer.length());
            }
     }
    
    StringBuffer是线程安全的,所以需要加synchronized。这个用的是Arrays.copyOf()方法,分配新的空间,将buffer的序列值赋值给新空间中。说明后续数组的改变不影响新创建的字符串对象。

    (7)使用StringBuilder对象来初始化

      public String(StringBuilder builder) {
            this.value = Arrays.copyOf(builder.getValue(), builder.length());
        }
    StringBuilder是线程不安全的。

    (8)用字符数组初始化

     String(char[] value, boolean share) {
            // assert share : "unshared not supported";
            this.value = value;
      }
      包私有构造函数。这个构造函数总是被预期用share == true调用。需要一个单独的构造函数,因为我们已经有一个public了
        


    展开全文
  • 常用的构造函数有: Mat::Mat() 无参数构造方法; Mat::Mat(int rows, int cols, int type) 创建行数为 rows,列数为 col,类型为 type 的图像; Mat::Mat(Size size, int type) 创建大小为 size,类型为 type 的...
  • vector的常用构造函数

    千次阅读 2017-03-08 17:30:41
    vector常用构造函数 构造函数 作用 vector(); 创建一个没有任何元素空向量 vector(vector&& _Right); 创建一个向量,并使用向量_Right初始化该向量 vector(size_type Count); 创建一个大小为Count向量...
  • 常用的构造散列函数的方法

    千次阅读 2019-05-08 21:30:14
    常用的构造散列函数的方法 散列函数能使对一个数据序列的访问过程更加迅速有效,通过散列函数,数据元素将被更快地定位: 1. 直接寻址法:取关键字或关键字的某个线性函数值为散列地址。即H(key)=key或H(key) = a?...
  • 构造函数

    2020-02-20 15:35:40
    我们使用构造函数,首先需要构造对象,然后通过对象来调用构造函数,构造函数的数量可以有多个,比如我们常用的构造函数是有参构造和无参构造,我们的构造函数要和类名一致,而且可以有多个参数,要注意一点是构造...
  • BigDecimal常用构造函数

    2020-09-02 11:31:41
    2.1、常用构造函数 BigDecimal(int) 创建一个具有参数所指定整数值对象 BigDecimal(double) 创建一个具有参数所指定双精度值对象 BigDecimal(long) 创建一个具有参数所指定长整数值对象 ...
  • Mat的构造函数

    2020-09-27 11:43:52
    然后我们看看Mat常用的构造函数: 1、Mat::Mat() 无参数构造方法; 2、Mat::Mat(int rows, int cols, int type) 创建行数为 rows,列数为 col,类型为 type 的图像; 3、Mat::Mat(Size size, int type) 创建大小为 ...
  • BigDecimal常用构造函数 1、创建一个具有参数所指定整数值对象 BigDecimal(int) 2、创建一个具有参数所指定双精度值对象 BigDecimal(double) 3、创建一个具有参数所指定长整数值对象 BigDecimal(long) 4、...
  • '''例1:展示*args用法,传入多...在函数内自动生成元组()'''def q1(*args):print('例1')print(args)print(type(args))print(args[0])t1= 123t2= 234t3= 345q1(t1, t2, t3)print('-----------------')'''例2,和例...
  • js构造函数详解

    2020-06-23 09:02:16
    1.什么是构造函数? 首先我们要明白什么是构造函数? 通过 new 函数名 来实例化对象...常用的构造函数: var arr = [ ]; 等同于 var arr = new Array(); 的语法。 var obj = { } 等同于 var obj = new Object();
  • 浅谈Opencv Mat类(常用构造函数和成员函数整理)

    万次阅读 多人点赞 2018-11-14 15:31:19
    浅谈Opencv Mat类 对里面数据、构造函数和成员函数做了一定梳理
  • 构造函数

    2012-12-20 20:40:28
    构造函数链: 写构造函数是一个反复的工作。很多开发人员都是先写一个构造...当你发现多重构造函数包含相同的逻辑时,取而代之的是把这些逻辑放在一个常用的构造函数里。你可以得避免代码的重复的好处,并且构造函数初
  • file类有哪些构造函数常用方法?实例源码介绍。java的file是常用类,是每个java程序员都应该了解的,下面就各初学者以及java老手提供相关的知识,若有错漏请指出,小的不胜感激!我们先来说说java FIle类的构造...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 8,791
精华内容 3,516
关键字:

常用的构造函数