会员可以在此提问,百战程序员老师有问必答
对大家有帮助的问答会被标记为“推荐”
看完课程过来浏览一下别人提的问题,会帮你学得更全面
截止目前,同学们一共提了 132441个问题
JAVA 全系列/第二阶段:JAVA 基础深化和提高/网络编程(旧) 2356楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2357楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/数据结构 2359楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2361楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2362楼

bjsxt.zip

怎么会报空指针呢,想不明白

image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/智能电话本项目实战 2363楼

2020 12 18------------------------

package com.bjsxt.dead;

public class Test {
    public static void main(String[] args) {
        //创建共享资源的对象
        Object money = new Object();
        Object water = new Object();
        //创建线程类的对象
        DeadLock d1 = new DeadLock(money, water);
        DeadLock d2 = new DeadLock(money, water);
        d1.flag = true;
        d2.flag = false;
        //启动线程
        d1.start();
        d2.start();
    }
}
package com.bjsxt.dead;

public class DeadLock extends Thread {
    private Object money;//钱
    private Object water;//水
    public boolean flag; //标识持有对象锁

    public DeadLock(Object money, Object water) {
        super();
        this.money = money;
        this.water = water;
    }

    @Override
    public void run() {
        if (flag) {//true时,持有“钱”的锁
            synchronized (money) {
                System.out.println("有钱,等水");
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (water) {
                    System.out.println("有水,等钱");
                }
            }
        } else {
            synchronized (water) {
                System.out.println("有水,等钱");
                try {
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized (money) {
                    System.out.println("有钱,等水");
                }
            }
        }
    }
}

GQWUXL$3GNWJSW@~BGTI[`W.png为什么我打印到控制台是乱码,其他的代码都不会

JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2364楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2365楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/容器(旧) 2366楼
JAVA 全系列/第二阶段:JAVA 基础深化和提高/多线程技术(旧) 2367楼

package com.bjsxt.dom;

import org.xml.sax.Attributes;
import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

public class BookDefaultHandler extends DefaultHandler {
    //重写1
    /**解析xml文档开始时调用*/
    @Override
    public void startDocument() throws SAXException {
        super.startDocument();
        System.out.println("解析xml开始");
    }
    /**解析xml文档结束时调用*/
    @Override
    public void endDocument() throws SAXException {
        super.endDocument();
        System.out.println("解析结束");
    }
    /**解析xml中节点时调用*/
    @Override
    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException {
        super.startElement(uri, localName, qName, attributes);
       // System.out.println("解析xml中节点时调用");
        //判断如果是book节点,就获取节点的属性和属性值
        if ("book".equals(qName)){
            //获取所有属性
            int count = attributes.getLength();//=个数
            for (int i = 0;i < count ;i++){
                String attName = attributes.getQName(i);
                String attValue = attributes.getValue(i);
                System.out.println("属性名称:"+attName+"\t值为:"+attValue);
            }
        }else if (!"book".equals(qName) && !"books".equals(qName)){
            System.out.println("节点名称:"+qName);
        }
    }
    /**解析xml中节点结束时调用*/
    @Override
    public void endElement(String uri, String localName, String qName) throws SAXException {
        super.endElement(uri, localName, qName);
       //System.out.println("解析xml中节点结束时调用");
    }

    @Override
    public void characters(char[] ch, int start, int length) throws SAXException {
        super.characters(ch, start, length);
        String value = new String(ch, start, length);
        if ("".equals(value.trim())){
            System.out.println(value);
        }
    }
}

在这个重写的characters里面,我的这个value并没有值,并且还是有空白。这是什么原因呢?


image.png

JAVA 全系列/第二阶段:JAVA 基础深化和提高/XML 技术(旧) 2369楼

课程分类

百战程序员微信公众号

百战程序员微信小程序

©2014-2025百战汇智(北京)科技有限公司 All Rights Reserved 北京亦庄经济开发区科创十四街 赛蒂国际工业园
网站维护:百战汇智(北京)科技有限公司
京公网安备 11011402011233号    京ICP备18060230号-3    营业执照    经营许可证:京B2-20212637