精华内容
下载资源
问答
  • 关于java类型

    2021-05-06 19:05:23
     char a='a';  int b=(int)a;  int c=a; <p>b和c都得到了char a的ASCII码,b和c除了字面上不同别的方面有什么不同吗</p>
  • 关于获取泛型实际类型的方法

    千次阅读 2017-11-29 16:48:09
    我们在开发过程中有可能会遇不同类型的类,通过泛型的参数传到方法中,或是在别的地方得到这个参数,那么怎么去获取这个参数的实际类型是什么呢?我们先来看一下泛型的定义,在开发过程中一般用T来表示,比如Class&...

    我们在开发过程中有可能会遇不同类型的类,通过泛型的参数传到方法中,或是在别的地方得到这个参数,那么怎么去获取这个参数的实际类型是什么呢?

    我们先来看一下泛型的定义,在开发过程中一般用T来表示,比如Class<T> className。

    而关于泛型的使用,有两种,一种是最为面向对象的类进行开发,比如上面提到的Class<T> className ,另外一种是作为接口比如 public interface IData<T>{...}

    子方法1

    public static Class getGenericClass(ParameterizedType parameterizedType, int i) {
            Object genericClass = parameterizedType.getActualTypeArguments()[i];
            if (genericClass instanceof ParameterizedType) { 
                return (Class) ((ParameterizedType) genericClass).getRawType();
            } else if (genericClass instanceof GenericArrayType) { 
                return (Class) ((GenericArrayType) genericClass).getGenericComponentType();
            } else if (genericClass instanceof TypeVariable) { 
                return (Class) getClass(((TypeVariable) genericClass).getBounds()[0], 0);
            } else {
                return (Class) genericClass;
            }
    }
    子方法2
    public static Class getClass(Type type, int i) {
            if (type instanceof ParameterizedType) { 
                return getGenericClass((ParameterizedType) type, i);
            } else if (type instanceof TypeVariable) {
                return (Class) getClass(((TypeVariable) type).getBounds()[0], 0); 
            } else {
                return (Class) type;
            }
    }
    具体获取泛型类型的方法
    public static <T> Class getTClass(T t) {
            Type[] params = t.getClass().getGenericInterfaces();
            Type type = params[0]; 
            Type finalNeedType;
            if (params.length > 1) {
                if (!(type instanceof ParameterizedType)) throw new IllegalStateException("没有填写泛型参数");
                finalNeedType = ((ParameterizedType) type).getActualTypeArguments()[0];
            } else {
                finalNeedType = type;
            }
            final Class clazz = getClass(finalNeedType, 0);
            return clazz;
    }
     //调用
     Object reCallback = ...
     Class<T> typeof = (Class<T>) getTClass(reCallback);
     String data = ...
     new Gson().fromJson(data, typeof);
    

    补充一个是否为java基础类型的类

    public static boolean isBaseDataType(Class<?> clazz) {
            return clazz.isPrimitive() || clazz.equals(String.class) || clazz.equals(Boolean.class)
                    || clazz.equals(Integer.class) || clazz.equals(Long.class) || clazz.equals(Float.class)
                    || clazz.equals(Double.class) || clazz.equals(Byte.class) || clazz.equals(Character.class)
                    || clazz.equals(Short.class) || clazz.equals(Date.class) || clazz.equals(byte[].class)
                    || clazz.equals(Byte[].class);
    }
    //校验和调用
     public interface ReCallback<T>  
     ReCallback<T>  reCallback 
    if(ReCallback.class.getSimpleName().equals((typeof.getSimpleName()) || isBaseDataType(typeof)){
    return true;
    }
    



    展开全文
  • JS是一门弱类型语言,变量是没有限制,可以随便赋值,但是运算符在进行运算时会要求变量类型和运算符期望类型一致,所以当不同类型进行加减运算时,就存在类型转换; 而类型转换又主要分为两大类:强制类型...

    之前一直觉得数据类型转化这个模块特别简单,感觉自己掌握的也挺好,直到最近再翻出来看笔记的时候才发现自己掌握的很乱,所以就打算重新整理这块的知识点,如果有总结不得当的地方,也希望有大佬能及时指出.
    为什么要有数据类型转化?
    JS是一门弱类型语言,变量是没有限制的,可以随便赋值,但是运算符在进行运算时会要求变量的类型和运算符期望的类型一致,所以当不同类型进行加减运算时,就存在类型转换;
    而类型转换又主要分为两大类:强制类型转换和隐式自动类型转换
    强制类型转换
    转为数值型
    1. Number():
    可以把任意值转换成数值,如果要转换的字符串中只要有一个不是数值的字符,会返回NaN;

    console.log(Number('12.34'));//12.34
    console.log(Number('12.aa')) //NaN
    console.log(Number(null));//0
    console.log(Number(true));//1
    console.log(Number(undefined));//NaN
    console.log(Number('\t\3.23233232\t'));//Number 可以自动去掉两头空白符,输出3.23
    

    注意:
    在强制转化为数值的条件下,任何数据类型都会被转化为number型,其中null=0 true=1 undefined=NaN
    小数类型的字符串,转化后得到原数字

    2.parseInt():
    通常是将字符串或者小数转整型, 转化后的数据类型是number,如果字符串开头是非数字,则返回NaN;
    其他类型都是返回NaN 包括(undefined true null

    var n1=parseInt(3.14);
    var n2 = parseInt('1a3.78');
    var n3=parseInt(true);
    var n4=parseInt(null);
    var n5=parseInt(undefined);
    console.log(n1,typeof n1);//3  number
    console.log(n2,typeof n2);//1 number
    console.log(n3,typeof n3);//NaN number
    console.log(n4,typeof n4);//NaN
    console.log(n5,typeof n5);//NaN
    

    3.parseFloat():
    用于将字符串型转化为浮点型,转化后的数据类型是number;如果字符串开头是非数字,则返回NaN;

    var n1=parseFloat('3.14a');//3.14
    var n2=parseFloat('4a');//4
    var n3=parseFloat('a5.13');//NaN
    var n4=parseFloat(null);
    console.log(n4,typeof n4);//NaN  number
    console.log(n1,n2,n3);
    

    转为字符串型
    string():适用于任何数据类型,(null,undefined转化后为null和undefined)通常适用于没有意义的变量
    toString ():可以把一个逻辑值转化为字符串,但是null和undefined没有toString ()方法

    var   a='shf';
    var   b=null;
    var   c=undefined;
    console.log(a.toString());//shf
    console.log(b.toString());//报错
    console.log(c.toString());//报错
    console.log(String(a));//a
    console.log(String(b));//null
    console.log(String(c));//undefined
    

    转化为boolean
    null ,空字符串,0 ,undefined,NaN会转换成false 其他都会转换成true

    console.log(Boolean(1));//true
    console.log(Boolean(0));//false
    console.log(Boolean(11));//true
    console.log(Boolean(-10));//true
    console.log(Boolean("哈哈"));//true
    console.log(Boolean(""));//false  空字符串
    console.log(Boolean(null));//false
    console.log(Boolean(undefined));//false
    console.log(1&&3||0&&4);//3 
    console.log(4&&3-2);//1 
    var num =5;		
    num>2&&console.log(a);//报错
    num<6||console.log(a);//什么也不输出
    

    布尔类型里面两种特殊例子:

    var a = "123abc";
    console.log(a);//123abc
    console.log(!!a);//true
    console.log(!a);//false
    console.log(typeof(!!a));//bool
    console.log(+a);//NaN
    console.log(typeof(+a));//number
    console.log(typeof a);//string
    

    隐式数据类型转化
    在运算过程中,程序自己进行数据类型转化,自动调用Number()函数
    只有加号两端有字符串的时候,则运算结果就都是字符串

    var a=1,b='2',c=true;
    console.log(a+b+c);//12true
    console.log(b+c+a);//2true1
    console.log(c+a+b);//22
    

    比较运算符
    这部分主要以习题的方式帮助理解

    下面的每条语句输出值是什么:
    var message;
    var age;
    console.log(message);
    console.log(age);
    console.log(message===undefined);
    console.log(typeof null);//object
    console.log(null==undefined);//true  ===三个等号也是true
    //为什么最后一条语句是true呢?  null类型被看做空对象指针,只有一个值,即空值,
    //所以用typeof操作符去检测,结果就是object
    //但是这个null值是在内存空间里已经声明了的,只是里面没有值,
    //所以在某种特殊的意义上也相当于未定义,所以等价于undefined
    console.log(11 === "11");//false 严格相等
    console.log(NaN == NaN);//两个NaN不能比较
    console.log(11 + "11" * 2 === 33);//true
    console.log(false + 1);//1         
    console.log(false == 1); //false      
    console.log(false + true);//1  
    
    展开全文
  • 我碰到不同的数据库,有可能是Oracle也有可能是SQL SERVER,所以问是什么类型的数据库。 我想应该先将查询字段转成日期类型的,这样应该就不会出现bug了,可是我不知道能不能直接通过PreparedStatement来...
  • 以下是关于Word和PDF文档插入图片后一些设置,一起来看看吧!一、Word文档中图片设置(以下截图演示为极速office)1、插入图片显示不全操作方法:点击工具栏“开始”选择“段落”,下拉菜单中将行距改为单倍行距...

    在办公中,我们时常需要编辑文档,特别是有图片的文档涉及到一些格式处理,所以掌握一些编辑文档的技巧是提高工作效率必备的。以下是关于Word和PDF文档插入图片后的一些设置,一起来看看吧!

    一、Word文档中的图片设置(以下截图演示为极速office)

    1、插入的图片显示不全

    操作方法:点击工具栏“开始”选择“段落”,下拉菜单中将行距改为单倍行距,例如行距选1即可完全显示图片内容。

    51807735706a75526f9a7cdfa06323ef.png
    757198edffcc5f0ef925ee3e67e092ca.png

    2、插入的图片无法移动

    选中图片后,图片右上角会出现“布局选项”,可以看到此时图片的环绕方式为“嵌入式”,这种情况是无法直接移动图片的。只需要将其更改为任意其他一个非嵌入式即可,比如选择“四周型”,这时再选中图片就可随意移动了。

    322782dfbccfde0fa6cf86f52533987f.png
    838c7febbe08b0dcceed0ecccd63cdfb.png

    3、图片遮挡住文字

    首先选中图片,图片右上角出现“布局选项”,将环绕方式改为“衬于文字下方”;然后选中图片,单击鼠标右键,选择“置于底层”——“衬于文字下方”即可。

    38bbafa0e0061c3ea7d9fd5b73522646.png
    81bffc9495eabead1faaf79c9dd90e1c.png
    3a810c95bfc43e06cc8f56d47bfc2779.png

    二、PDF文档中的图片设置(以下截图演示为极速PDF编辑器)

    1、PDF如何插入图片

    选择工具栏“对象工具”- 在文档页面单击鼠标右键选择“图像”-“插入”即可。另外也可点击软件右上角工具栏“对象”- 选择“图像”-“插入”即可。

    12558d2b28d6a14e44fc676d9873e717.png
    def89f3eae52982ef6d87f11387568ca.png
    5d4e7d13aba7de48f1fcaff2c67f8ba5.png

    2、PDF如何替换图像

    选中图片后,单击鼠标右键,选择“图像”—“替换现有图像”即可。

    e7c60506d5098ceb8149641841fc93c8.png

    3、PDF如何调整图片大小

    点击软件右上角工具栏“对象”- 选择“转换”在弹窗中设置图片大小即可。

    9bb085b38463423d18b5069f89008131.png

    4、PDF如何旋转图片

    点击软件右上角工具栏“对象”- 选择“旋转”在弹窗中输入旋转角度即可。

    15cca352159d15b7c0f15a67da241521.png
    展开全文
  • C和C++关于void *使用的不同

    千次阅读 2018-01-16 16:44:04
    而C++中void*型不能隐式地转换为别的类型指针(例如:int*p = (void*)0;使用C++编译器编译会报错) 二、测试 /* 使用gcc编译器 */ #include #include //为malloc() 和 free()提供原型; int main(){ d

    一、文章结论:

    C语言中任何类型的指针都可以(隐式地)转换为void*型,反过来也行;而C++中void*型不能隐式地转换为别的类型指针(例如:int*p = (void*)0;使用C++编译器编译会报错)


    二、测试

    /* 使用gcc编译器 */
    #include <stdio.h>
    #include <stdlib.h>  //为malloc() 和 free()提供原型;
    
    int main(){
        double * ptd;
        ptd = malloc (30* sizeof(double));  //此处没有强制类型转化
        ptd[0] = 1.1;
        printf("%f",ptd[0]);
        free(ptd);
        return 0;
    }

    使用gcc编译器,输出为:

    1.100000


    但是如果使用g++编译器,会报错:

    error: invalid conversion from 'void*' to 'double*' [-fpermissive]|


    之所以会这样,因为C++是强类型的语言。void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据。 即任何类型的指针都可以直接赋值给它,无需进行强制类型转换。

    但这并不意味着,void *也可以无需强制类型转换地赋给其它类型的指针。因为“无类型”可以包容“有类型”,而“有类型”则不能包容“无类型”。道理很简单,我们可以说“男人(int *)和女人(float *)都是人(void *)”,但不能说“人是男人”或者“人是女人”。


    对于上面例子中的malloc函数,其返回值类型为void *,所以在申请内存之后给ptd赋值时,建议是进行强制类型转换的,虽然在C中不进行强制类型转换并不是错误(例如就上面的例子来讲,不进行强制类型转换也不报错),但是却是不好的编程风格[1]。但是在C++语言中,必须要进行强制类型转换(例如,int*p = (void*)0; 使用C++编译器编译会报错)[2],否则的话编译器会报错。所在C中也建议进行强制类型转换,这样更容易把C程序转化为C++程序。











    [1] 嵌入式系统高级C语言编程 凌明 P7

    [2] C Primer Plus 第六版中文版  P399

    展开全文
  • 以下是关于Word和PDF文档插入图片后一些设置,一起来看看吧!一、Word文档中图片设置(以下截图演示为极速office)1、插入图片显示不全操作方法:点击工具栏“开始”选择“段落”,下拉菜单中将行距改为单倍...
  • 以下是关于Word和PDF文档插入图片后一些设置,一起来看看吧!一、Word文档中图片设置(以下截图演示为极速office)1、插入图片显示不全操作方法:点击工具栏“开始”选择“段落”,下拉菜单中将行距改为单倍行距...
  • 关于void类型指针-----void*、void**

    千次阅读 多人点赞 2018-10-11 11:48:20
    指针类型不同则寻址范围也不同,比如:  int*从指定地址向后寻找4字节作为变量存储单元  double*从指定地址向后寻找8字节作为变量存储单元  1.void指针是一种特别指针   void *vp   //说它特别是因为它...
  • int长度由处理器(16位,32位,64位)和比哪一期决定。...数据类型特别是int相关的类型不同位数机器平台下长度不同。C99标准并不规定具体数据类型的长度大小,只规定级别。作下比较: 16位平台 char 1个...
  • 关于typedef用法总结

    2020-12-22 15:10:23
    typedef与#define有些相似,其实是不同的,特别是在一些复杂用法上,看了网上一些C/C++学习者博客,其中有一篇关于typedef总结还是很不错,由于总结很好,我不加修改引用过来了,加上自己一个分析。...
  • 以下是关于Word和PDF文档插入图片后一些设置,一起来看看吧!一、Word文档中图片设置(以下截图演示为极速office)1、插入图片显示不全操作方法:点击工具栏“开始”选择“段落”,下拉菜单中将行距改为单倍行距...
  • 关于typedef用法

    2018-04-10 17:18:03
    typedef与#define有些相似,其实是不同的,特别是在一些复杂用法上,看了网上一些C/C++学习者博客,其中有一篇关于typedef总结还是很不错,由于总结很好,我就不加修改引用过来了,加上自己一个分析。...
  • 关于id设计

    2019-07-22 10:11:00
    最近不少文章提出了pid uid等等不同的id,大部分都是针对dz等论坛比如板块id,帖子id之类这里我要说也是这个问题,不过并不针对某款具体产品,而是和数据类型有关关于数据库id设计,通常我们用一个唯一数做...
  • typedef与#define有些相似,但更多不同,特别是在一些复杂用法上,就完全不同了,看了网上一些C/C++学习者博客,其中有一篇关于typedef总结还是很不错,由于总结很好,我就不加修改引用过来了,以下...
  • 在C/C ++中经常需要进行存储器操作,关于数据如何在存储器中存储问题也是非常重要,...我们都知道C语言结构体是一个不同类型数据集合。那么一个结构体到底占多少存储空间呢?  首先应该意识到C语言存储存
  • C++关于多态解析

    2019-08-29 17:21:50
    关于多态,简而言之就是用父类型别的指针指向其子类的实例,然后通过父类的指针调用实际子类的成员函数。这种技术可以让父类的指针有“多种形态”,这是一种泛型技术。所谓泛型技术,说白了就是试图使用不变的代码来...
  • BindFlags作为一个特别标志量,在反射中通过这个标志量,可以指定搜索不同类型的成员。 public或nonpublic必须与 instance或static 一起使用,否则将不返回任何成员。 例如: PropertyInfo...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 709
精华内容 283
关键字:

关于别的不同类型