精华内容
下载资源
问答
  • 对象为什么不想做
    千次阅读
    2019-06-21 16:51:23

    console.log(usermsg)
    console.log(usermsg.useravatar)

    打印的内容是:

    {"useravatar":"http://orgstatic1.wkzj.net/Web/User/Avatar/20181011u80084.jpg?v=8?x-oss-process=style/user_middle","useravatarbig":"http://orgstatic1.wkzj.net/Web/User/Avatar/20181011u80084.jpg?v=8?x-oss-process=style/user_big","userid":80084,"usertitle":"duowei","username":"多维超级管","schid":"19","schname":"东莞多维教育集团2","logintime":"2019-06-21 16:31:52","token":"7f3e96e34f570aa6ff443f9a092442ba","ischgpasswd":"1"}
     

    undefined

    第一个打印出来是对象。而且里面明明有useravatar。但是打印却是undefined。

    好气为什么啊?

    最后我发现我需要把这个对象转一下

    var msg=JSON.parse(usermsg);
     console.log(msg['useravatar'])

    这样就出来了结果。

     

     

    更多相关内容
  • 什么是面向对象

    万次阅读 多人点赞 2019-09-09 16:54:50
    说的最多的是new个对象,其实并知道什么对象。以为对象就是一个class(类),并觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java...

    面向对象(OOP)概述

    从我们开始接触Java这门语言后,就有人告诉我们这是一门面向对象的语言。说的最多的是new个对象,其实并不知道什么是对象。以为对象就是一个class(类),并不觉得有什么特殊。直到很久之后,面试官问到什么是OOP,嘴巴都是一个大O,OOP?WTF?那人厌恶的说到就是面向对象编程。我说:Java就是面向对象,就是一切以对象为载体,去编程,去面对。面试官: go out ! now!

    img

    滚回来的我赶紧看看什么是OOP,Object Oriented Programming,原来就是面向对象的编程啊,还有OOD(面向对象的设计),OOA(面向对象的分析)。那什么是面向对象呢?要想了解这个问题我们要先了解面向过程,这样对比我们就好理解了。

    很早很早以前的编程是面向过程的,比如实现一个算术运算1+1 = 2,通过这个简单的算法就可以解决问题。但是随着时代的进步,人们不满足现有的算法了,因为问题越来越复杂,不是1+1那么单纯了,比如一个班级的学生的数据分析,这样就有了对象这个概念,一切事物皆对象。将现实的事物抽象出来,注意抽象这个词是重点啊,把现实生活的事物以及关系,抽象成类,通过继承,实现,组合的方式把万事万物都给容纳了。实现了对现实世界的抽象和数学建模。这是一次飞跃性的进步。

    img

    举个最简单点的例子来区分面向过程和面向对象

    有一天你想吃鱼香肉丝了,怎么办呢?你有两个选择

    1、自己买材料,肉,鱼香肉丝调料,蒜苔,胡萝卜等等然后切菜切肉,开炒,盛到盘子里。

    2、去饭店,张开嘴:老板!来一份鱼香肉丝!

    看出来区别了吗?1是面向过程,2是面向对象。

    面向对象有什么优势呢?首先你不需要知道鱼香肉丝是怎么做的,降低了耦合性。如果你突然不想吃鱼香肉丝了,想吃洛阳白菜,对于1你可能不太容易了,还需要重新买菜,买调料什么的。对于2,太容易了,大喊:老板!那个鱼香肉丝换成洛阳白菜吧,提高了可维护性。总的来说就是降低耦合,提高维护性!

    面向过程是具体化的,流程化的,解决一个问题,你需要一步一步的分析,一步一步的实现。

    面向对象是模型化的,你只需抽象出一个类,这是一个封闭的盒子,在这里你拥有数据也拥有解决问题的方法。需要什么功能直接使用就可以了,不必去一步一步的实现,至于这个功能是如何实现的,管我们什么事?我们会用就可以了。

    面向对象的底层其实还是面向过程,把面向过程抽象成类,然后封装,方便我们使用的就是面向对象了。

    面向过程和面向对象的区别

    面向过程

    优点:性能比面向对象好,因为类调用时需要实例化,开销比较大,比较消耗资源。
    缺点:不易维护、不易复用、不易扩展

    面向对象

    优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统 更加灵活、更加易于维护
    缺点:性能比面向过程差

    面向对象三大特性五大原则

    img

    面向对象的三大特性

    1、封装
    隐藏对象的属性和实现细节,仅对外提供公共访问方式,将变化隔离,便于使用,提高复用性和安全性。

    2、继承
    提高代码复用性;继承是多态的前提。

    3、多态
    父类或接口定义的引用变量可以指向子类或具体实现类的实例对象。提高了程序的拓展性。

    五大基本原则

    • 单一职责原则SRP(Single Responsibility Principle)
      类的功能要单一,不能包罗万象,跟杂货铺似的。

    • 开放封闭原则OCP(Open-Close Principle)
      一个模块对于拓展是开放的,对于修改是封闭的,想要增加功能热烈欢迎,想要修改,哼,一万个不乐意。

    • 里式替换原则LSP(the Liskov Substitution Principle LSP)
      子类可以替换父类出现在父类能够出现的任何地方。比如你能代表你爸去你姥姥家干活。哈哈~~

    • 依赖倒置原则DIP(the Dependency Inversion Principle DIP)
      高层次的模块不应该依赖于低层次的模块,他们都应该依赖于抽象。抽象不应该依赖于具体实现,具体实现应该依赖于抽象。就是你出国要说你是中国人,而不能说你是哪个村子的。比如说中国人是抽象的,下面有具体的xx省,xx市,xx县。你要依赖的抽象是中国人,而不是你是xx村的。

    • 接口分离原则ISP(the Interface Segregation Principle ISP)
      设计时采用多个与特定客户类有关的接口比采用一个通用的接口要好。就比如一个手机拥有打电话,看视频,玩游戏等功能,把这几个功能拆分成不同的接口,比在一个接口里要好的多。

    总结

    • 抽象会使复杂的问题更加简单化。
    • 从以前面向过程的执行者,变成了张张嘴的指挥者。
    • 面向对象更符合人类的思维,面向过程则是机器的思想
    展开全文
  • java 判断一个对象是否对象

    万次阅读 2020-03-30 22:29:29
    最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他们一个一个判断特别麻烦,只能传个空对象过来,我第一个想法就是可以通过反射来判断对象是否空。 第一版: ...

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。

    最近项目中遇到一个问题,在用户没填数据的时候,我们需要接收从前端传过来的对象为null,但是前端说他们一个一个判断特别麻烦,只能传个空对象过来,我第一个想法就是可以通过反射来判断对象是否为空。

    第一版:

    User.java

    public class User {
        private String username;
    
        private Boolean active;
    
        private Long id;
        // 省略get和set方法
    }
    

    ReflectUtil.java

    public class ReflectUtil {
        public static boolean isObjectNull(Object obj){
            if (obj != null) {
                Class<?> objClass = obj.getClass();
                Method[] declaredMethods = objClass.getDeclaredMethods();
                if (declaredMethods.length > 0) {
                    int methodCount = 0; // get 方法数量
                    int nullValueCount = 0; // 结果为空
    
                    for (Method declaredMethod : declaredMethods) {
                        String name = declaredMethod.getName();
                        if (name.startsWith("get") || name.startsWith("is")){
                            methodCount += 1;
                            try {
                                Object invoke = declaredMethod.invoke(obj);
                                if (invoke == null) {
                                    nullValueCount += 1;
                                }
                            } catch (IllegalAccessException | InvocationTargetException e){
                                e.printStackTrace();
                            }
                        }
                    }
                    return methodCount == nullValueCount;
                }
            }
            return false;
        }
    }
    
    

    TestReflect.java

    public class TestReflect {
        public static void main(String[] args) {
            User user = new User();
            System.out.println(ReflectUtil.isObjectNull(user));
        }
    }
    

    结果:

    true
    

    第一版 获取一个类的声明的方法,判断方法如果以get或者is开头就是get方法,然后通过反射调用改方法获取结果,再判断结果是否为空,如果结果为null的话就把nullValueCount+1,最后返回结果为空的值的数量和get方法数量比较的结果,如果两者数量相同则说明该对象为空,反之不为空。
    第一版也可以判断一个对象是否为空,但前提是对象必须使用包装类,没有默认值的就不行了,当然你也可以根据类型和返回值结果来判断对象是否为空,但是如果想忽略某个属性不做判断,改起来就有点麻烦了。 后来想知道spring 的BeanUtils 是怎么实现属性复制的就看了一下,发现了新的方法,于是就有了第二版。

    第二版:

    /**
         *  判断对象是否为空,
         * @param obj
         * @param ignoreProperties 忽略的属性
         * @return 如果get 方法的数量等于 属性为空的数量 返回true,否则false
         */
        public static boolean isNullObject(Object obj , String... ignoreProperties) throws IntrospectionException {
            if (obj != null) {
                Class<?> objClass = obj.getClass();
                BeanInfo beanInfo = Introspector.getBeanInfo(objClass);
                PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
    
                List<String> ignoreList = (ignoreProperties != null ? Arrays.asList(ignoreProperties) : null);
    
                int count = 1; // 结果为空的属性数量 初始化为1 去除Object的getClass方法
                int propertyCount = propertyDescriptors.length; // 属性数量
                if (ignoreList != null){
                    propertyCount -= ignoreList.size();
                }
    
                for (PropertyDescriptor propertyDescriptor : propertyDescriptors) {
                    Method readMethod = propertyDescriptor.getReadMethod();
                    String name = propertyDescriptor.getName();
                    if (readMethod != null && (ignoreList == null || !ignoreList.contains(name))) {
                        Class<?> returnType = readMethod.getReturnType();
                        String typeName = returnType.getSimpleName();
                        Object invoke = null;
                        try {
                            invoke = readMethod.invoke(obj);
                            if (invoke == null) {
                                count+=1;
                            }else {
                                switch (typeName) {
                                    case "String":
                                        if ("".equals(invoke.toString().trim())) {
                                            count += 1;
                                        }
                                        break;
                                    case "Integer":
                                        if ((Integer) invoke <= 0) {
                                            count += 1;
                                        }
                                        break;
                                    case "int":
                                        if ((int) invoke <= 0) {
                                            count += 1;
                                        }
                                        break;
                                    case "double":
                                        if ((double) invoke <= 0.0d) {
                                            count += 1;
                                        }
                                        break;
                                    case "Double":
                                        if ((Double) invoke <= 0.0D) {
                                            count += 1;
                                        }
                                        break;
                                    case "float":
                                        if ((float) invoke <= 0.0f) {
                                            count += 1;
                                        }
                                        break;
                                    case "Float":
                                        if ((Float) invoke <= 0.0F) {
                                            count += 1;
                                        }
                                        break;
                                    case "Long":
                                        if ((Long) invoke <= 0L) {
                                            count += 1;
                                        }
                                        break;
                                    case "long":
                                        if ((long) invoke <= 0L) {
                                            count += 1;
                                        }
                                        break;
                                }
                            }
                        } catch (IllegalAccessException | InvocationTargetException e) {
                            e.printStackTrace();
                        }
                    }
                }
                return propertyCount == count;
            }
            return true;
        }
    

    第一版和第二版思想基本都是一样的,都是通过读方法去判断返回值是否为空,只不过第二版在第一版上加强了可以忽略属性这个功能。
    通过spring 的beanutils发现PropertyDescriptor这个类,从名字看来是个属性描述器,描述属性相关的东西,通过属性描述器可以获取bean的属性名称,读写方法,使用起来还挺方便。
    通过Introspector内省类的静态方法getBeanInfo(Class<?> beanClass)获取BeanInfo,然后通过BeanInfo对象的getPropertyDescriptors()就可以返回属性描述器。
    由于没有太多研究就不多介绍了。
    如果你还有其他方法判断一个对象是否为空请留言,谢谢

    能力有限,水平一般,如有错误,请多指出。

    展开全文
  • 对象存储是什么?看过就明白了

    万次阅读 多人点赞 2019-12-12 10:52:15
    对象存储是什么 对象存储,官方的名词解释是:对象存储是基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作对象。 说实话看完这段解释,我的内心是这样的: 这时候如果再继续介绍...

    对象存储是什么
    对象存储,官方的名词解释是:对象存储是基于对象的存储,是用来描述解决和处理离散单元的方法的通用术语,这些离散单元被称作对象。
    说实话看完这段解释,我的内心是这样的:

    在这里插入图片描述

    这时候如果再继续介绍:
    对象存储提供了基于分布式系统之上的对象形式的数据存储服务,并且可以通过 RESTful API 数据读写接口及丰富的SDK接口进行数据的访问……
    对不起,我已经想关掉这篇文章了。
    我们可以把它理解为商场的存包服务,顾客将包(数据)交给服务员(API接口),服务员给顾客一个凭证(对象地址URL),顾客想要取包时,只需提供凭证,不需要知道自己的包到底是以什么形式存储在哪里,省时省心省力。

    对象存储有什么特点

    在这里插入图片描述

    · 非结构存储:对象存储适用于存储非结构化的数据,我们日常生活中见到的文档、文本、图片、XML, HTML、各类报表、音视频信息等等都是非结构化数据。据统计,自社交网络发展以来,非结构化数据占总数据量的75%。
    · 多节点:以腾讯云对象存储 COS 为例,COS的存储机房遍布全球,简单来说,不管你身处何处,都可以选择将数据存储在就近的机房,加快数据的传输访问。
    · 扁平结构:对象存储中没有文件夹的概念,所有数据均存储在同一个层级中,如上述介绍提到,对于存在对象存储中的数据,你不需要知道他存在哪里,只需要通过“凭证”就可以快速获取数据。
    · 弹性扩容:对象存储的容量是EB级以上的,EB有多大?1EB ≈ 1*10^9 GB。这个容量还在不断的上升,简单来说,不管你有多少数据,请放心的存,容量管够!

    对象存储有什么用

    前面提到对象存储适用于存储图片视频等非结构化数据,对象存储可以让你方便的将这些数据使用起来!
    举个例子:某新成立教育机构,希望让自己的学员观看教学视频,使用对象存储前后对比:

    在这里插入图片描述

    传统方式:

    1. 教学视频存在各个讲师的电脑中,每次讲课时用U盘拷贝至课堂播放;
    2. 教学视频存在某个网盘中,每次讲课前需要下载,或者需要课堂电脑装有网盘应用,在线预览播放;
    3. 机构自己搭建了一套服务器,开发了一个教育应用,将视频存在服务器中,在应用中播放供学员观看;
      对象存储:
    4. 将视频存在对象存储中,得到对应的对象地址(简单理解就是一条链接),在课堂上,打开浏览器,输入对象地址,在线播放;
    5. 机构自己开发了一个教育应用,将视频存在对象存储中,得到对应的对象地址,将地址放在应用中,通过应用在线播放;

    杉岩对象存储产品MOS

    针对海量非结构化数据存储的最优化解决方案,采用去中心化、分布式技术架构,支持百亿级文件及EB级容量存储,
    具备高效的数据检索、智能化标签和分析能力,轻松应对大数据和云时代的存储挑战,为企业发展提供智能决策。

    政府、金融、医疗、交通等行业随着审计、监管等方面的要求日益严格,行业相关业务系统所产生的视频、音频、图片、文档等海量非结构化数据对存储空间提出更大的挑战,SandStone MOS可以提供无限扩展的存储空间,同时为数据价值的提取分析提供更多智能处理特性。

    展开全文
  • Java判断对象是否null的方法

    万次阅读 2021-02-12 20:08:44
    Java判断对象是否null的方法发布时间:2020-06-28 14:03:25来源:亿速云阅读:138作者:元一...一个对象如果有可能是null的话,首先要的就是判断是否null:object == null,否则就有可能会出现空指针异常,这...
  • 什么是面向对象程序设计

    万次阅读 多人点赞 2019-08-22 11:10:04
    如果您看其他语言(如 java)的语法,本文涉及。 1.面向对象和面向过程区别 面向过程程序设计:所谓的面向过程程序设计就是函数的定义和调用。简单地说,过程就是程序执行某项操作的一段代码,函...
  • 面试 | 什么是面向对象(OOP)?

    万次阅读 多人点赞 2019-03-02 23:51:31
    旁白:这是一个很大的问题,我觉得面试官主要听到的一定是面向对象给编程带来的好处,也就是说它独有的特点,所以重点应该要抓住封装、继承和多态三大特性来说。这里我回答的思路是:①面向对象思想的由来;②如何...
  • 如何判断一个对象是否空{}

    万次阅读 2019-05-28 12:34:57
    我们要判断对象是否空,像基本类型那样判断是可以的, ==={} ?这样是错误的, 因为只是比较引用地址是否相同,所以可以采取下面的方法来进行判断 1.根据for...in遍历对象,如果存在则返回true,否则返回false...
  • 1、什么是类? (1)类是一种抽象的概念。 (2)类:具有相同特性(数据元素)和行为(功能)的对象的抽象就是类。因此,对象的抽象是类,类的...2、什么对象? (1)对象是一种具体的概念。 (2)对象对象是...
  • 一、引言 最近在写微信小程序项目的时候,第一次接触到了 JavaScript。 于是乎,在一个场景中,我写了如下的代码: var a = {'name': 'wangying'};...结果我惊喜的发现,a 对象里面的 name ...这是为什么呢? ...
  • object如何强转为对象

    千次阅读 2021-04-17 05:07:43
    如何将一个object 对象转换他原来的类型生命中有许多你不想做却不能不的事,这就是责任;生命中有许多你想却不能的事,这就是命运。想法是自定义一个mvc helper 方法生成一个表格接收object 类型参数,在方法...
  • js判断对象为空以及有好几种方法了,但是个人觉得不是特别方便。 比如: 1、把对象通过 JSON.stringify 转为字符串,再判断字符串是否等于 " {} " 2、for in循环,判断key是否存在 3、jq的方法 es6已经帮我们很...
  • 为什么在vue的组件中,data要用function返回对象呢?

    万次阅读 多人点赞 2017-09-25 13:34:39
    当一个组件被定义, data 必须声明返回一个初始数据对象的函数,因为组件可能被用来创建多个实例。如果 data 仍然是一个纯粹的对象,则所有的实例将共享引用同一个数据对象!通过提供 data 函数,每次创建一个新...
  • js过滤出对象要的数据

    万次阅读 2019-03-11 17:05:34
    * [过滤对象] * @param obj [过滤前数据] * @param arr [过滤条件,要求为数组] */ function filterObj(obj, arr) { if (typeof (obj) !== "object" || !Array.isArray(arr)) { throw new ...
  • JAVA 面向对象对象 封装

    万次阅读 多人点赞 2021-05-06 15:58:57
    面向对象概念 面向对象其实是一种编程思想,通过它可以把生活中复杂的事情变得简单化,从原来的执行者...你关注中间的过程,只要找好对象就可以了~ 再比如.我们吃一道菜,无需考虑是怎么传菜,怎么做菜的,只需点菜即
  • 在word里面插入对象显示全怎么办

    千次阅读 2019-12-23 09:37:08
    经常在word即插入对象excel,有时excel表格很长导致在word只能看到部分的excel,显示全。 怎么操作才能显示全部呢? 首先,关闭对象,来到word页面; 接着,双击word里的excel; 最后,通过拖拽边框上的黑点来调整...
  • Java面向对象

    千次阅读 多人点赞 2021-12-15 17:24:40
    1、要理解面向对象思想,我们先要知道什么对象? 《Java编程思想》中提到“万物皆为对象”的概念。它将对象一种奇特的变量,它除了可以存储数据之外还可以对它自身进行操作。它能够直接反映现实生活中的事物...
  • 用express作登录验证,在代码里打印req.body对象,通过解决这个问题对http服务,数据提交到服务器,以及工具的使用有了更加深刻的认识。 出现阻塞的原因 对客户端和服务端通信没有深层次的理解 初次工具...
  • 使用数据库的管理工具Navicat prmium查看表的sql语句,右键点击表后点对象信息没有反应
  • 这些都是以什么正在发生主要目标进行编程,不同于面向对象的是谁在受影响。与面向对象明显的不同就是封装、继承、类。简写POP。 1.2 面向对象 面向对象编程(Object Oriented Programming,OOP,面向对象程序...
  • Java什么叫面向对象

    万次阅读 多人点赞 2018-08-15 21:56:17
    什么是面向对象呢?...对象这个词你可以理解一个总称,比如男人女人都叫人,蜡烛皮鞭高跟鞋都是道具,所以面向对象原本的意思是“都叫对象”,翻译过来不是原汁原味了而已因此,房子是对象、飞机是对象...
  • 会导致这个8:1:1比例自动变化,如果不想这个比例有变化可以设置参数 -XX:-UseAdaptiveSizePolicy 三、 minor GC 和 full GC minor GC: 当大量的对象被分配在eden区,eden区满了年轻代就会触发垃圾回收 - minor gc...
  • Java判断对象是否空的方法:isEmpty,null,"

    万次阅读 多人点赞 2019-01-08 17:39:05
    今天修改辞职同事遗留的代码才发现这个问题,能用isEmpty来判断一个对象是否null,之前没在意这个问题,在报了空指针之后才发现这个问题。 查了一下关于判断空的几个方法的区别,这里一个简单的总结: null...
  • Java能使用New去创建对象的情况

    万次阅读 2017-08-15 17:35:44
    当时就在想到什么情况下能使用New去创建一个对象。 就从New一个对象的过程开始找: 1、加载类 (1). .class文件被类加载器加载到JVM内存的方法区 (.class文件加载到内存之后被类加载器...
  • 针对state为对象,要修改对象中某一个值而修改其他值,请欣赏接下来的方法 1.设置state对象 state={ datavalue:{ slid:'', name:'', memo:'', version:'', icon:defaultimg, loginlink:'', key:'', ...
  • 现在,让我们来学习一下JVM中的重头戏,垃圾收集要把一个对象当成垃圾回收掉,我们需要知道,被需要和使用的对象才是垃圾,关键是怎么找到这些被需要和使用的对象。这里我们有两个方法可以去判定一个对象...
  • 判断OBject对象为空(包括null ,““)的方法

    万次阅读 多人点赞 2020-09-08 00:32:24
    这篇文章主要介绍了Java判断对象是否空(包括null ,"")的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 被判断的Java对象: ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,614,155
精华内容 1,045,662
热门标签
关键字:

对象为什么不想做