精华内容
下载资源
问答
  • 摘要 腾兴网为您分享:java枚举的两种遍历方法,余额宝,永安期货,易视云3,小睡眠等软件知识,以及幻想三国志4外传,损益表表格,2018微信最新的版本,贺卡,手机mp3格式转换器,cf挂无毒,火炬之光2宠物mod,一面...

    摘要 腾兴网为您分享:java枚举的两种遍历方法,余额宝,永安期货,易视云3,小睡眠等软件知识,以及幻想三国志4外传,损益表表格,2018微信最新的版本,贺卡,手机mp3格式转换器,cf挂无毒,火炬之光2宠物mod,一面ppt课件,驱动精灵离线装机版,湖口在线,荧光字体,番茄财富,满币网,ps星空素材,patcher等软件it资讯,欢迎关注腾兴网。本文章来给各位同学介绍java枚举的两种遍历方法,希望此教程对各位同学会有所帮助哦。 我们可以通过反射, 以及枚举类的静态方法values()来进行遍历: table width="620" align="center" borde...

    本文章来给各位同学介绍java枚举的两种遍历方法,希望此教程对各位同学会有所帮助哦。

    我们可以通过反射, 以及枚举类的静态方法values()来进行遍历:

     代码如下复制代码

    enum Rating

    {

    UNRATED,

    G,

    PG,

    PG13,

    R,

    NC17

    }

    public class Test{

    public static void main(String args[]){

    System.out.println("第一种通过反射");

    Class clz=Rating.class;

    for(Object obj:clz.getEnumConstants()){

    System.out.println(obj);

    }

    System.out.println("第二种通过枚举静态方法values()");

    for(Rating rate:Rating.values()){

    System.out.println(rate);

    }

    }

    }

    运行结果:

    C:java>java Test

    第一种通过反射

    UNRATED

    G

    PG

    PG13

    R

    NC17

    第二种通过枚举静态方法values()

    UNRATED

    G

    PG

    PG13

    R

    NC17

    相关推荐

    展开全文
  • 实现对象属性和方法的遍历 var obj = { name:"殷志源", age:"18", sex:"man", height:"180", weight:75, test:function(){} } for(var prop in obj){ console.log(prop); } 输出对象中属性名\...

    for in循环

    实现对象属性和方法的遍历

     var obj = {
     	name:"殷志源",
     	age:"18",
     	sex:"man",
     	height:"180",
     	weight:75,
     	test:function(){}
     }
     for(var prop in obj){
     	console.log(prop);
     }
    

    输出对象中属性名/方法名
    在这里插入图片描述
    要怎么实现输出属性名/方法名对应的值呢?
    用console.log(obj.prop);可以吗?

     var obj = {
     	name:"殷志源",
     	age:"18",
     	sex:"man",
     	height:"180",
     	weight:75,
     	test:function(){}
     }
     for(var prop in obj){
     	console.log(obj.prop);
     }
    

    可以看到控制台输出的全是undefined
    在这里插入图片描述
    这是因为obj.prop在执行时系统会在内部将其隐式的转换为obj[‘prop’]


    对象属性有两种表示方法:
    <prop为属性名>
    1.obj.prop
    2.obj[‘prop’]([]中必须为字符串)

    转换为obj[‘prop’],系统就会去查找obj对象的一个叫做prop的属性/方法,不存在该属性/方法则输出undefined。

    对此说法,可以进行验证,给obj对象添加一个prop属性

     var obj = {
     	name:"殷志源",
     	age:"18",
     	sex:"man",
     	height:"180",
     	weight:75,
     	prop:"hi~",
     	test:function(){}
     }
     for(var prop in obj){
     	console.log(obj.prop);
     }
    

    由此结果可知,该说法是正确的。
    在这里插入图片描述
    那么要怎么才能用for in循环真正实现对象属性/方法对应值的输出呢?

    我们知道对象属性第二种表示方法 obj[‘prop’] 的 [] 中的值必须是属性名的字符串形式,而for in循环中每次的prop值就是属性名的字符串形式

     var obj = {
     	name:"殷志源",
     	age:"18",
     	sex:"man",
     	height:"180",
     	weight:75,
     	test:function(){}
     }
     for(var prop in obj){
     	console.log(prop);
     	console.log(typeof prop)
     }
    

    在这里插入图片描述
    故可以使用对象属性的第二种表示方式:

    var obj = {
     	name:"殷志源",
     	age:"18",
     	sex:"man",
     	height:"180",
     	weight:75,
     	test:function(){}
     }
     for(var prop in obj){
     	console.log(obj[prop])//不要引号,prop本身就是字符串
     }
    

    成功输出对象属性/方法对应的值
    在这里插入图片描述
    for in循环除了可以遍历对象以外,也可以遍历数组(数组也算特殊类型的对象)

    var arr = ['a','b','c']
    	for(var prop in arr){
    		console.log(arr[prop])
    	}
    

    此时prop是遍历的数组元素的索引位置
    在这里插入图片描述

    操作符

    1. hasOwnProperty
      任何一个对象都有这个方法,用来判断传入的属性\方法名(字符串形式)是不是该对象自身的方法(也可能是原型链上的方法),是自己的返回true,不是则返回false。

    给obj对象添加一个__proto__原型属性,输出obj对象的属性\方法值

     var obj = {
     	name:"殷志源",
     	age:"18",
     	test:function(){},
     	__proto__:{
     		lastName:'deng'
     	}
     }
     for(var prop in obj){
     	console.log(obj[prop])
     }
    

    当不使用hasOwnProperty方法进行筛选时,obj原型的属性也会被输出
    在这里插入图片描述
    使用hasOwnProperty方法进行筛选

     var obj = {
     	name:"殷志源",
     	age:"18",
     	test:function(){},
     	__proto__:{
     		lastName:'deng'
     	}
     }
     for(var prop in obj){
     	if(obj.hasOwnProperty(prop)){//判断该属性\方法是否是该对象自身的方法
     		console.log(obj[prop])
     	}
     }
    

    obj的原型属性没有被输出
    在这里插入图片描述

    1. in
      用来判断对象上能否访问到某属性,而不是判断某属性是否属于该对象自身(hasOwnProperty())
     var obj = {
     	name:"殷志源",
     	age:"18",
     	test:function(){},
     	__proto__:{
     		lastName:'deng'
     	}
     }
    

    属性名要用字符串形式,非字符串形式的是变量
    对象原型上的属性也可以被访问,返回true
    在这里插入图片描述

    1. instanceof

      ‘A instanceof B’ 官方给出的解释:
      判断A对象是不是B构造函数构造出来的

      function Person(){}
      var person = new Person();
      

      在这里插入图片描述
      但我们发现:
      在这里插入图片描述
      很显然person对象不是Object构造函数构造出来的,但结果也是true

      同样有以下这种情况
      在这里插入图片描述

    这是因为’A instanceof B’ 的本质涵义是判断A对象的原型链上是否有B构造函数的原型(认为A对象原型链上的对象也算是A对象的构造函数)

    <person对象的__proto__属性指向的是其构造函数Person对象的原型对象>
    在这里插入图片描述

    可以看到,person对象的原型链上有其构造函数Person的原型(__proto__)也有其构造函数Person的原型的构造函数Object的原型(__proto__),故返回true,person对象的原型链上没有Array的原型,故返回false
    在这里插入图片描述

    展开全文
  • 遍历枚举

    2020-10-16 11:56:35
    那么我们要怎么才能实现枚举遍历呢?这里我们需要用到强制类型转换,这样遍历在结束后就可以获取到下一个枚举成员了。遍历范围可以通过定义枚举成员变量来限制,这里最后一个枚举成员为HNC_SYS_TOTAL。这里主要是...

    那么我们要怎么才能实现枚举的遍历呢?这里我们需要用到强制类型转换,这样遍历在结束后就可以获取到下一个枚举成员了。遍历范围可以通过定义枚举成员变量来限制,这里最后一个枚举成员为HNC_SYS_TOTAL。这里主要是获取的值类型不同SDK提供了不同的API接口,下面将部分判断省略了:

    C/C++实战027:遍历enum枚举类型

    展开全文
  • 这是个枚举遍历(方法和枚举是写在同一个文件下的) class GetEnumValues { public static void Main() ...如果把这个遍历方法放在类A中,枚举在类B中 那么这个方法该怎么写呢 又怎么把这个枚举传递过去呢 感谢
  • 在一次对Datatable的遍历过程中,我对其中的一个row进行了一次remove,然后就报错了,提示“集合已修改;枚举操作可能无法执行。”,错误代码大概是这样 DataTable dt = new DataTable(); foreach (DataRow dr...

    在一次对Datatable的遍历过程中,我对其中的一个row进行了一次remove,然后就报错了,提示“集合已修改;枚举操作可能无法执行。”,错误代码大概是这样

                    DataTable dt = new DataTable();
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr[0].ToString() == "test")
                        {
                            dt.Rows.Remove(dr);
                        }
                    } 
    

    然后查了查,了解到换成Delete,然后再AccepteChanges即可,正确的代码是这样:

                    DataTable dt = new DataTable();
                    foreach (DataRow dr in dt.Rows)
                    {
                        if (dr[0].ToString() == "test")
                        {
                            dr.Delete();
                        }
                    }
                    dt.AcceptChanges();
    

    具体原因如下:

    delete和remove

     Delete的使用是 datatable.Rows[i].Delete();

    Remove的使用是datatable.Rows.Remove(datatable.Rows[i]);

    这两个的区别是,使用delete后,只是该行被标记为deleted,但是还存在,用Rows.Count来获取行数时,还是删除之前的行数.需要使用datatable.AcceptChanges()方法来提交修改.

    而Remove方法则是直接删除.

    转载于:https://www.cnblogs.com/simpleplum/p/7840071.html

    展开全文
  • for-in语句 今天再读JS高阶,再次认识了for-in语句,for-in语句...面试题:怎么遍历一个对象 ? 上面已经提到了for-in语句了,所以它是和一种方法 const obj = { id:1, name:'zhangsan', age:18} for(let ke...
  • 如果自己实现递归栈 又怎么会在线程栈中储存过多无关信息?数据全部都在堆里 又怎会stackoverflow?当时就有想法自己实现一个,造福一下群众,但是被坏心眼的某lz 阻止了。“让他们自己写。” 他大概是这么说滴,...
  • 可能无法执行枚举操作。 [img=https://img-bbs.csdn.net/upload/202004/22/1587518403_199091.png][/img] 请问各位大神有什么好的解决方法吗? 1、我换用过List<>集合,然后再用倒序删除,也会出现这样的...
  • forin循环对象的时候会把原型链上所有可枚举的属性都遍历出来。 var obj = {name:"zs"} Object.prototype.age = 18 for(var k in obj){ console.log(k) // name,age } 解决办法: 1.使用obj.hasOwnProperty(k)...
  • 怎么理解js对象的可枚举属性

    千次阅读 2019-03-30 15:16:10
    枚举就是可遍历的意思,如果对象的属性可以通过for key in myOject遍历,就意味着该属性是可枚举的。新建一个对象时,定义的属性默认是可枚举的,也可以通过Object.defineProperty将该属性定义为不可枚举的。 ...
  • 控制台使用push添加打印数组的时候,出现 [{…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, {…}, ob: Observer] ...如果遍历就会出现 我用的JSON.parse(JSON.stringify(this.list))这个方法 ...
  • 已知树的中序遍历,而且知道树中的节点的分值,问怎么先序遍历这棵树使得分值最大,分值计算方法: 本节点分值=左子树分值*右子树分值+本节点分值。 空子树分值规定为1. 解题思路: 这题给的数据范围是30,很...
  • 枚举属性和不可枚举属性

    千次阅读 2017-10-15 15:18:59
    在JavaScript中,对象的属性分为...一、怎么判断属性是否可枚举js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Number(); for(var pro in
  • 在JavaScript中,对象的属性...一、怎么判断属性是否可枚举  js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: 1 2 3 4 v...
  • 一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Number(); for(var pro in num) { console.log(num. + ...
  • 一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: varnum = newNumber(); for...
  • js可枚举

    2017-08-15 12:13:11
    JavaScript中的可枚举属性与不可枚举属性 在JavaScript中,对象的...一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性:1234...
  • JavaScript中的可枚举属性与不可枚举属性 ...一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Num...
  • 枚举类型

    2019-09-28 10:03:39
    ①、定义 ②、遍历 ③、搜索 ④、知识点 二、在枚举中添加方法 ①、示例(如何添加) 三、在Switch中使用Enum的原理 ①、原理 ②、示例 四、Enum的values()方法 ①、values()方法的由来 ②、当没有values()...
  • 一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: var num = new Number(); for(var pro in num) { console.log("num." + ...
  • 在JavaScript中,对象的属性分为可...一、怎么判断属性是否可枚举 js中基本包装类型的原型属性是不可枚举的,如Object, Array, Number等,如果你写出这样的代码遍历其中的属性: 1 2 3 4 ...

空空如也

空空如也

1 2 3 4 5 ... 9
收藏数 167
精华内容 66
关键字:

枚举怎么遍历