精华内容
下载资源
问答
  • java判断基本数据类型方法

    万次阅读 2014-04-03 12:22:19
    经检验,网上很多用instanceof直接判断方法是行不通的。我总结出两种方法。 以判断变量是否为int为例,直接上代码。 方法一: public class test { public static void main(String[] args){ test t...
    经检验,网上很多用instanceof直接判断的方法是行不通的。我总结出两种方法。
    以判断变量是否为int为例,直接上代码。

    方法一:

    public class test { public static void main(String[] args){ test t=new test(); int int_num=0; double double_num=0; System.out.println(t.judgeType(int_num)); System.out.println(t.judgeType(double_num)); } public boolean judgeType(Object temp){ if(temp instanceof Integer) return true; else return false; } }


    方法二:

    public class test { public static void main(String[] args){ try{ Scanner input=new Scanner(System.in); int i=input.nextInt(); System.out.println("输入正确"); } catch(Exception e){ System.out.println("输入错误"); } } }

    方法一使用的是instanceof运算符,利用基本数据类型与其包装类自动转换的特点,运用多态,达到判断基本数据类型的目的。
    方法二是运用异常处理的知识。较为巧妙。
    展开全文
  • 判断JS数据类型的四种方法

    万次阅读 2017-08-13 23:42:43
    判断JS数据类型的四种方法 说到数据类型,我们先说一下JavaScript 中常见的几种数据类型基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Fu

    转载自:http://www.cnblogs.com/onepixel/p/5126046.html


    判断JS数据类型的四种方法

    说到数据类型,我们先说一下JavaScript 中常见的几种数据类型:

    基本类型:string,number,boolean

    特殊类型:undefined,null

    引用类型:Object,Function,Function,Array,RegExp,Date,...

    很多时候我们都需要通过判断变量的数据类型来进行下一步操作,下面我们介绍常用的4种方法:

    1、typeof

    typeof 返回一个表示数据类型的字符串,返回结果包括:number、boolean、string、object、undefined、function等6种数据类型。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    typeof ''// string 有效
    typeof 1; // number 有效
    typeof true//boolean 有效
    typeof undefined; //undefined 有效
    typeof null//object 无效
    typeof [] ; //object 无效
    typeof new Function(); // function 有效
    typeof new Date(); //object 无效
    typeof new RegExp(); //object 无效

    typeof 可以对JS基础数据类型做出准确的判断,而对于引用类型返回的基本上都是object, 其实返回object也没有错,因为所有对象的原型链最终都指向了Object,Object是所有对象的`祖宗`。 但当我们需要知道某个对象的具体类型时,typeof 就显得有些力不从心了。

    2、instanceof

    instanceof 是用来判断 A 是否为 B 的实例对,表达式为:A instanceof B,如果A是B的实例,则返回true,否则返回false。 在这里需要特别注意的是:instanceof检测的是原型,我们用一段伪代码来模拟其内部执行过程:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    instanceof (A,B) = {
        var L = A.__proto__;
        var R = B.prototype;
        if(L === R) {
            //A的内部属性__proto__指向B的原型对象
            return true;
        }
        return false;
    }

    从上述过程可以看出,当 A 的 __proto__ 指向 B 的 prototype 时,就认为A就是B的实例,我们再来看几个例子:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    [] instanceof Array; //true
    {} instanceof Object;//true
    new Date() instanceof Date;//true
     
    function Person(){};
    new Person() instanceof Person;
     
    [] instanceof Object; //true
    new Date() instanceof Object;//true
    new Person instanceof Object;//true

    我们发现,虽然 instanceof 能够判断出 [] 是Array的实例,但它认为 [] 也是Object的实例,为什么呢? 我们来分析一下[]、Array、Object 三者之间的关系: 从instanceof 能够判断出 [].__proto__ 指向 Array.prototype, 而 Array.prototype.__proto__ 又指向了Object.prototype,Object.prototype.__proto__ 指向了null,标志着原型链的结束。因此,[]、Array、Object就形成了如下图所示的一条原型链:

    从原型链可以看出,[] 的 __proto__  直接指向Array.prototype, 间接指向Object.prototype, 所以按照 instanceof 的判断规则,[] 就是Object的实例。当然,类似的new Date()、new Person() 也会形成这样一条原型链,因此,instanceof 只能用来判断两个对象是否属于原型链的关系, 而不能获取对象的具体类型。

    3、constructor

    当一个函数F被定义时,JS引擎会为F添加prototype原型,然后再在prototype上添加一个constructor属性,并让其指向F的引用。如下所示:

    当执行 var f = new F() 时,F被当成了构造函数,f是F的实例对象,此时F原型上的constructor传递到了f上,因此f.constructor == F

    可以看出,JS在函数F的原型上定义了constructor,当F被当作构造函数用来创建对象时,创建的新对象就被标记为了“F” 类型,使得新对象有名有姓,可以追溯。

    同理,JS中的数据类型也遵守这个规则:

    细节问题:

    • null和undefined是无效的对象,因此是不会有constructor存在的,这两种类型的数据需要通过typeof来判断。
    • JS对象的constructor是不稳定的,这个主要体现在自定义对象上,当开发者重写prototype后,原有的constructor会丢失,constructor会默认为Object

    为什么变成了Object?

    prototype被重新赋值的是一个{}, {}是new Object()的字面量,因此new Object()会将Object原型上的constructor传递给{},也就是Object本身。

    因此,为了规范,在重写对象原型时一般都需要重新给constructor赋值,以保证实例对象的类型不被改写。

    4、Object.prototype.toString 

    toString是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型,其中包括:String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument,... 基本上所有对象的类型都可以通过这个方法获取到。 

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Object.prototype.toString.call('') ;   // [object String]
    Object.prototype.toString.call(1) ;    // [object Number]
    Object.prototype.toString.call(true) ; // [object Boolean]
    Object.prototype.toString.call(undefined) ; // [object Undefined]
    Object.prototype.toString.call(null) ; // [object Null]
    Object.prototype.toString.call(new Function()) ; // [object Function]
    Object.prototype.toString.call(new Date()) ; // [object Date]
    Object.prototype.toString.call([]) ; // [object Array]
    Object.prototype.toString.call(new RegExp()) ; // [object RegExp]
    Object.prototype.toString.call(new Error()) ; // [object Error]
    Object.prototype.toString.call(document) ; // [object HTMLDocument]
    Object.prototype.toString.call(window) ; //[object global] window是全局对象global的引用

    需要注意的是,必须通过Object.prototype.toString.call来获取,而不能直接 new Date().toString(), 从原型链的角度讲,所有对象的原型链最终都指向了Object, 按照JS变量查找规则,其他对象应该也可以直接访问到Object的toString方法,而事实上,大部分的对象都实现了自身的toString方法,这样就可能会导致Object的toString被终止查找,因此要用call来强制执行Object的toString方法。


    展开全文
  • 判断js数据类型的四种方法和原理

    千次阅读 2019-05-28 15:44:23
    怎么去判断一个数据属于哪个数据类型,这个是很常见的操作,我们一般都会想到typeof和instanceof这两个常见的方法,但有时候这两种方法并不能满足我们的需求。那让我们来看一下都有哪些可以判断数据类型方法吧。 1...

    怎么去判断一个数据属于哪个数据类型,这个是很常见的操作,我们一般都会想到typeof和instanceof这两个常见的方法,但有时候这两种方法并不能满足我们的需求。那让我们来看一下都有哪些可以判断数据类型的方法吧。

    1.typeof
    这个方法很常见,一般用来判断基本数据类型,如:string,number,boolean,symbol,bigint(es10新增一种基本数据类型bigint,详细介绍),undefined等。
    typeof 目前能返回string,number,boolean,symbol,bigint,unfined,object,function这八种判断类型

       typeof '123'       string
       
       typeof 1           number
       
       typeof true        boolean
       
       typeof Symbol('1') symbol
       
       typeof 111n        bigint
       
       typeof undefined   undefined
       
       typeof null        object
       
       typeof {a:1,b:2}   object
       
       function c(){console.log('123')}
       
       typeof c          function
        
    

    其实我一直有个疑问,null既然属于基本数据类型,为什么用typeof返回的是object呢?解答如下:
    js 在底层存储变量的时候,会在变量的机器码的低位1-3位存储其类型信息?
    000:对象
    010:浮点数
    100:字符串
    110:布尔
    1:整数
    但是对于 undefined 和 null 来说,这两个值的信息存储是有点特殊的。
    null:所有机器码均为0
    undefined:用 −2^30 整数来表示
    所以,typeof 在判断 null 的时候就出现问题了,由于 null 的所有机器码均为0,因此直接被当做了对象来看待。

    2.instanceof
    一般用来判断引用数据类型的判断,如:Object,Function,Array,Date,RegExp等

     /s/g instanceof RegExp    true
            
     new Date('2019/01/05') instanceof Date   true
            
     [1,2,3] instanceof Array   true
            
    

    instanceof 主要的作用就是判断一个实例是否属于某种类型,例如:

    let animal = function () {}
    let monkey = new animal()
    monkey instanceof animal    true
    

    当然,instanceof 也可以判断一个实例是否是其父类型或者祖先类型的实例。

     let person = function () {}
     let programmer = function () {}
     programmer.prototype = new person()
     let nicole = new programmer()
     nicole instanceof person       true
     nicole instanceof programmer   true
    

    但是 instanceof 的原理是什么呢?可以用下面的代码解释一下:

     function new_instance_of(leftVaule, rightVaule) { 
            let rightProto = rightVaule.prototype; // 取右表达式的 prototype 值
            leftVaule = leftVaule.__proto__; // 取左表达式的__proto__值
            while (true) {
            	if (leftVaule === null) {
                    return false;	
                }
                if (leftVaule === rightProto) {
                    return true;	
                } 
                leftVaule = leftVaule.__proto__ 
            }
        }
    

    其实 instanceof 主要的实现原理就是只要右边变量的 prototype 在左边变量的原型链上即可。因此,instanceof 在查找的过程中会遍历左边变量的原型链,直到找到右边变量的 prototype,如果查找失败,则会返回 false,告诉我们左边变量并非是右边变量的实例。

    3、constructor
    当一个函数F被定义时,JS引擎会为F添加prototype原型,然后再在prototype上添加一个constructor属性,并让其指向F的引用。如下所示:
    在这里插入图片描述
    当执行 var f = new F() 时,F被当成了构造函数,f是F的实例对象,此时F原型上的constructor传递到了f上,因此f.constructor == F
    在这里插入图片描述
    可以看出,JS在函数F的原型上定义了constructor,当F被当作构造函数用来创建对象时,创建的新对象就被标记为了“F” 类型,使得新对象有名有姓,可以追溯。

    同理,JS中的数据类型也遵守这个规则:
    在这里插入图片描述
    细节问题:
    1.null和undefined是无效的对象,因此是不会有constructor存在的,这两种类型的数据可以通过第四种方法来判断。
    2.JS对象的constructor是不稳定的,这个主要体现在自定义对象上,当开发者重写prototype后,原有的constructor会丢失,constructor会默认为Object
    在这里插入图片描述
    4、Object.prototype.toString(这个是判断类型最准的方法)
    toString是Object原型对象上的一个方法,该方法默认返回其调用者的具体类型,更严格的讲,是 toString运行时this指向的对象类型, 返回的类型格式为[object,xxx],xxx是具体的数据类型,其中包括:String,Number,Boolean,Undefined,Null,Function,Date,Array,RegExp,Error,HTMLDocument,… 基本上所有对象的类型都可以通过这个方法获取到。

    Object.prototype.toString.call('') ;         [object String]
    
    Object.prototype.toString.call(1) ;          [object Number]
    
    Object.prototype.toString.call(true) ;       [object Boolean]
    
    Object.prototype.toString.call(undefined) ;  [object Undefined]
    
    Object.prototype.toString.call(null) ;       [object Null]
    
    Object.prototype.toString.call(new Function()) ;  [object Function]
    
    Object.prototype.toString.call(new Date()) ; [object Date]
    
    Object.prototype.toString.call([]) ;         [object Array]
    
    Object.prototype.toString.call(new RegExp()) ; [object RegExp]
    
    Object.prototype.toString.call(new Error()) ;  [object Error]
    
    Object.prototype.toString.call(document) ;   [object HTMLDocument]
    
    Object.prototype.toString.call(window) ;[object global] window是全局对象global的引用
    

    需要注意的是,必须通过Object.prototype.toString.call来获取,而不能直接 new Date().toString(), 从原型链的角度讲,所有对象的原型链最终都指向了Object, 按照JS变量查找规则,其他对象应该也可以直接访问到Object的toString方法,而事实上,大部分的对象都实现了自身的toString方法,这样就可能会导致Object的toString被终止查找,因此要用call来强制执行Object的toString方法。

    最后非常感谢这两篇博客的帮助
    判断JS数据类型的四种方法
    浅谈 instanceof 和 typeof 的实现原理

    展开全文
  • java 判断数据类型方法

    万次阅读 2017-07-13 09:32:35
    java 判断数据类型方法 1。我从SOLR查询中获取一个数据一,已知数据类型,是string或者int 或者其他 2。我有一个方法(set方法),只有一个参数,但是我不知道参数的数据类型,可能是string 或者int 或者其他...

    java 判断数据类型和方法

    1。我从SOLR查询中获取一个数据一,已知数据类型,是string或者int 或者其他
    2。我有一个方法(set方法),只有一个参数,但是我不知道参数的数据类型,可能是string 或者int 或者其他
    3。使用反射
    4。我要判断这两个参数类型 是否相同,或者得到他们具体的类型是什么,请问如何做。
    最佳答案
    1.如果你得到是一个Object对象,可以用if(obj instanceof String)来判断是否是String对象,int是基本类型不可以这么判断,只能用它的包装类Integer,同样用instanceof 
    2.如果set方法只能接受一个参数,而且必须有int的话,可以写多个set方法,如set(String),set(int),编写不同的处理逻辑
    3.instanceof 也是反射的一种方式
    4.如果有2个Object的参数,可以用if(obj1.getClass()==obj2.getClass())来判断类型是否相同,如果要得到类型名,可以用obj.getClass().getName()来获得对象的类名
    展开全文
  • JS数据类型之基本数据类型

    万次阅读 多人点赞 2019-06-28 16:46:43
    1.JavaScript(以下简称js)的数据类型分为两种:原始类型(即基本数据类型)和对象类型(即引用数据类型); 2.js常用的基本数据类型包括undefined、null、number、boolean、string; 3.js的引用数据类型也就是...
  • JavaScript基本数据类型number的判断

    千次阅读 2016-08-24 09:03:28
    判断一个变量是否为数字类型(是否可以转换为数值)的方法:isNaN NaN:not a number,不能转换为一个数字,NaN和任何值都不相等,包括NaN自己本身。 isNaN()是一个函数,用isNaN判断一个变量,返回一个Boolean...
  • JS中判断数据类型方法——水真深

    千次阅读 2019-04-30 15:20:53
    typeof 、instanceof、 ...作用:区分基本数据类型 语法:typeof(变量名) 例: var str = "我是字符串"; var num = 666; var obj = new Object(); var arr = [1,2,3]; var fn = function(){ console...
  • JavaScript 基本数据类型

    千次阅读 多人点赞 2020-11-07 20:29:35
    JavaScript 基本数据类型String类型字符串属性和方法字符串属性字符串方法Number类型算术运算符赋值运算符比较运算符逻辑运算符类型判断Boolean类型Undefined类型Null类型 String类型 字符串是存储字符(比如 ...
  • MyBatis基本数据类型if判断

    千次阅读 2016-08-11 17:04:52
    这样是对滴,首先参数类型需要时基本数据类型,其次判断中要用_parameter,组成SQL的时候变量名可以随意命名 int" >  select     from tm01_department  _parameter != null">  where parent_dept_id = ...
  • js 判断数据类型

    千次阅读 2019-12-12 11:30:44
    基本数据类型(Undefined、Null、Boolean、Number、String) 复杂数据类型 (Object) 二、判断数据类型 下面将对如下数据进行判断它们的类型 var bool = true var num = 1 var str = 'abc' var und = undefined...
  • 这个方法很常见,一般用来判断基本数据类型,如:string,number,boolean,symbol,bigint(es10新增一种基本数据类型bigint),undefined等。 typeof 目前能返回string,number,boolean,symbol,bigint,unfined...
  • Java 数据类型(基本数据类型、引用数据类型)

    千次阅读 多人点赞 2013-12-11 23:40:11
    Java 数据类型(基本数据类型、引用数据类型) 简单的介绍
  • 如何判断数据类型

    千次阅读 2017-12-07 10:59:05
    (1)判断基本数据类型//数字类型 typeof 1;//"number" //布尔类型 typeof true;// "boolean" //字符串类型 typeof "zzz";// "string" //未定义 typeof undefined;// "undefined" //对象 function Person(name, age)...
  • js判断数据类型常用的6种方法

    千次阅读 2020-03-10 11:29:56
    js判断数据类型常用的方法,不论在开发中开始在面试中,都是经常遇到的问题,尤其是在面试时,当面试官问及js判断数据类型方法时,回答的越多,说明掌握的广度跟深度越多,感觉自己逼格也越高.废话不多说了,进入正题 ...
  • JavaScript基本数据类型

    万次阅读 2018-07-13 19:49:32
    JavaScript是弱类型脚本语言...JavaScript基本数据类型有如下五个(1)数值类型(2)布尔类型(3)字符串类型(4)Undefined类型(5)Null类型1. 数值类型与强类型语言如C、Java不同,JavaScript的数值类型不仅包括...
  • java基本数据类型和引用类型的判断

    千次阅读 2018-01-30 16:27:33
    查看例子package day02;//boolean类型的用法 public class Test05 { public static void main(String[] args) { // TODO Auto-generated method stub boolean flag=true; int a=1;
  • 首先我们简单的说一下js中的几种数据类型数据类型分为基本类型和引用类型:基本类型:String、Number、Boolean、Null、Undefined引用类型:...然后判断数据类型方法一般可以通过:typeof、instanceof、construc...
  • 判断数据类型的方法有以下几种: 1.typeof: 返回的是string... 判断基本数据类型:string、number、boolean、function、undefined类型  举例: console.log(typeof('str')); //string console.log(typeof(123)); //n
  • Java 基本数据类型存储位置

    万次阅读 2018-11-05 10:48:13
    Java 基本数据类型 及 == 与 equals 方法的区别 转载地址:https://www.cnblogs.com/Latiny/p/8099581.html  Java数据类型分为基本数据类型与引用数据类型。    1 基本数据类型 byte:Java中最小的数据类型...
  • 两者之间的关系特点:一、从概念方面来说基本数据类型:变量名指向具体的数值引用数据类型:变量名指向存数据对象的内存地址,即变量名指向hash值二、从...三、从使用方面来说基本数据类型:使用时需要赋具体值,判断时...
  • Python基本数据类型

    千次阅读 2015-09-12 08:12:40
    基本数据类型 数值型 整型Integral 浮点型Float 复数 布尔型Bool 变量的命名规则 组合数据类型 序列 字符串String 元组Tuple 列表List 最后前言Python作为一种弱类型编程语言,其数据类型较之于C/C++无论是在数据的...
  • JavaScript - 数据类型判断方法汇总

    千次阅读 2019-04-21 01:01:31
    学习/操作 key points typeof //基本数据类型 instanceof //对象 函数 Object.prototype.toString //功能更加强大 基本上秒杀所有~~~ //20200507 暂时参考: https://wangdoc.com/javascript/types/general.html...
  • 所有语言的基本数据类型就是那么几种,因为之前一直从事移动端,在学习js的过程中,总结一下js的基本类型及用法。 JavaScript 数据类型:字符串、数字、布尔,对象、Null、Undefined 1.String(字符串): 字符...
  • JS判断数据类型的三种方法

    千次阅读 2017-05-09 14:01:04
    JavaScript 中常见的几种数据类型基本类型:string,number,boolean 特殊类型:undefined,null 引用类型:Object,Function,Function,Array,Date,... typeof typeof 返回一个表示数据类型的...
  • 一个变量可以存放两种类型的值,基本类型的值...它是 JavaScript 语言的第七种数据类型,前六种是:Undefined、Null、布尔值(Boolean)、字符串(String)、数值(Number)、对象(Object)。 基本类型 ...
  • Python判断数据类型

    千次阅读 2019-10-28 17:16:36
    判断数据类型方法 有type和isinstance 基本区别在于: type():不会认为子类是父类 isinstance():会认为子类是父类类型 class Color(object): pass class Red(Color): pass print type(Color()) == Color # ...
  • 【JAVA】java基本数据类型详解

    万次阅读 2020-02-22 11:26:15
    JAVA基本数据类型解析 首先介绍一下: Java是一种强类型语言,每个变量都必须声明其数据类型。 Java的数据类型可分为两大类:基本数据类型(primitivedata type)和引用数据类型(reference data type)。 Java中...
  • 1.JS中有6种基本数据类型,JS中的所有操作都是基于这五种基本类型得到的。 (1)Object 对象类型 (2)number 数字类型 (3)String 字符串类型 (4)null (5)underfined (6)boolean 布尔类型:true...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 756,386
精华内容 302,554
关键字:

判断基本数据类型的方法