黑马程序员——IO(Input Output)流总结(二)五篇范文

时间:2019-05-14 13:47:04下载本文作者:会员上传
简介:写写帮文库小编为你整理了多篇相关的《黑马程序员——IO(Input Output)流总结(二)》,但愿对你工作学习有帮助,当然你在写写帮文库还可以找到更多《黑马程序员——IO(Input Output)流总结(二)》。

第一篇:黑马程序员——IO(Input Output)流总结(二)

IO(Input Output)流总结

(二)刚开始观看毕老师的视屏的时候,感觉一会儿输出流,一会儿输入流的,一会儿System.out,一会儿又转换流的。很晕。

最后毕老师给了一个总结,归纳出了IO操作的规律。感觉总结的非常好,虽然刚看第一遍的时候还是很晕,不过现在终于融汇贯通。

下面我就用自己的理解,总结一下IO流操作的一般规律:

在使用IO操作流之前,我们要问自己一下四个问题:

A.源和目的都有吗?(初步确定体系)

B.源和目的操作的是字符吗?(确定体系)

C.源和目的的设备都是些什么?(辅助确定具体对象)

D.需要提高输入和输出的效率吗?

补充:源的设备:内存,硬盘,键盘

目的的设备:内存,硬盘,控制台

当明确了以上几点之后我们就可以确定到底应该使用那一个流对象。

Demo1:拷贝一个文本文件的副本。

分析:

A.源和目的都有。

所以,源可以选择:Reader或者InputStream

目的可以选择:Writer 或者 OutputStream

B.操作的都是字符数据。

所以,源应该选择:Reader

目的应该选择:Writer

C.源的设备是:硬盘。目的的设备是:硬盘。

所以:源应该使用:FileReader

目的应该使用:FileWriter

D.需要提高输入和输出效率。

所以可以使用相应的装饰类。

源使用:BufferedReader

目的使用:BufferedWriter

具体代码如下:

BufferedReader bufr = new BufferedReader(new FileReader(“1.txt”));BufferedWriter bufw = new BufferedWriter(new FileWriter(“copy_1.txt”));

Demo2:将从键盘输入的数据存储到文件中。

分析:

A.源和目的都有。

所以,源可以选择:Reader或者InputStream

目的可以选择:Writer 或者 OutputStream

B.操作的都是字符数据。

所以,源应该选择:Reader

目的应该选择:Writer

C.源的设备是:键盘。目的的设备是:硬盘。

因为源是键盘所以应该使用System.in,但是键盘是字节流,但是我们使用的体系应该是Reader(字符)体系的。所以要使用InputSreamReader(转换流)将字节流转换为字符流在进行操作。目的应该使用:FileWriter

D.需要提高输入和输出效率。

所以可以使用相应的装饰类。

源使用:BufferedReader

目的使用:BufferedWriter

具体代码如下:

BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

BufferedWriter bufw = new BufferedWriter(new FileWriter(“copy_1.txt”));

转换流详解:

查阅api我们知道转换流是定义在字符体系中的,那么我们什么时候应该使用转换流呢?

InputStreamReader:是字节数据通向字符数据的桥梁。

当我们要将字节数据转换成字符数据时使用,在转换成字符数据时,我们必须指定字符编码方式,如GB2312、UTF-8等

如果我们转化的时候使用的编码是系统默认编码,那么我们可以使用FileReader。其实,FileReader就是对编码方式为系统默认的转换流(public InputStreamReader(InputStream in):创建一个使用默认字符集的 InputStreamReader。)的一个封装,这样使用起来比较简单。

OutputStreamWriter:是字符数据通向字节数据的桥梁。

当创建使用指定字符集的 OutputStreamWriter 时使用。

简单说就是,我们如果要输出一些文本到控制台上,那么我们知道控制台的标准输出流是System.out,是字节流,我们在操作时,就要将字符数据转化成字节数据,这样控制台才能正确显示,所以就用到了OutputStreamWriter。但是这个地方要注意,如果我们拿到一个文本他的编码方式是UTF-8,但是你的电脑是简体中文的。如果你在使用OutputStreamWriter的时候没有指明转换时使用的码表,那么系统就会按照系统默认的码表转换(一般是GBK)。这样肯定会出问题了,所以,记住了!当我们要指定编码方式的时候就使用转换流InputStreamReader和OutputStreamWriter。

Demo3:将从键盘输入字符的数据显示在屏幕上。

快速分析:

A.使用键盘,输入流就是System.in,但是输入的是字符,所以用到转换流:InputStreamReader(System.in)

B.输出到屏幕上,顾名思义就是控制台。所以输出流是System.out,因为是文本输出,所以使用OutputStreamWriter(System.out)

C.如果要提高输入输出效率,就得使用装饰类。

所以最终代码如下:

BufferedReaderbufr=

newBufferedReader(new InputStreamReader(System.in));

BufferedWriterbufw=

newBufferedWriter(new OutputStreamWriter(System.out));

如果要求改为将键盘输入的数据存入一个文件中,并按照UTF-8的编码形式。

BufferedReaderbufr=

newBufferedReader(new InputStreamReader(System.in));

BufferedWriterbufw=

newBufferedWriter(new OutputStreamWriter

(new PrintStream(“TransDemo.txt”), “UTF-8”));

第二篇:黑马程序员——IO(Input Output)流总结(一)

IO(Input Output)流总结

(一)IO流是处理数据之间数据传输的。

Java对数据的操作是通过流的方式。

Java中用于操作IO流的对象都放在java.io包中。

流的分类:按照操作数据分为:字符流和字节流。

按照流向分为:输入流和输出流。

输入流:输出流:

字符流:

ReaderWriter

|--BufferedReader|--BufferedWriter

|--inputStreamReader|--OutputStreamWriter

|--FileReader|--FileWriter

字节流:

InputStreamOutputStream

|--FileInputStream|--FileOutputStream

InputStreamOutputStream

|--FilterInputStream|--FilterOutputStream

|--BufferedInputStream|--BufferedOutputStream

在计算机中存储的都是1和0的序列。也就是二进制的有序序列,不论是文本、音乐或者是视频。

那么为什么要在流中定义字节流和字符流呢?

这个与我们的字符编码方式有关。我们都知道世界上有很多种的语言,比如:ASCII、GB2312、GBK、UTF-8和Unicode等。

如果一个文本文件使用GB2312编码的方式存储的,如果我们用Unicode的编码方式来读取,那么就会出现乱码。所以字符流是一种特殊的流,在java中就定义了专门处理字符的流对象。

当我们拿到一个API文档我们应该如何使用呢?

1,确定要使用的功能。

2,查阅API看有没有相关的功能类。

3,如果没有,就分析需要如何自定义一个出来,并且要使用到那些相关功能的类,这些类在API中有没有定义。

4,不论有或者没有需要自定义一个,我们都要先查阅相关功能类的根类,那么查阅一个API的时候我们要注意一些什么呢?

5,找到相关功能根类,先看一下它是一个类,还是接口,还是抽象类,如果是接口或

者是抽象类我们就不能直接使用这个类,而要使用这个类的子类。

6,但是,我们不用急于先看它有哪些子类,我们先看一下它到底暴露了什么字段、构造函数和方法。

7,在查看暴露的信息时,我们要注意几点:

a.如果是static修饰的,说明是静态的,我们不用new对象也可以直接使用。

b.我们要确定自己要使用的方法将会返回的数据的类型,是void呢、String呢、int呢、还是其他的。查找的时候就重点找返回这些类型的方法。(注意:如果我们使用的类是一个使用单例设计模式设计的,那么他就没有构造函数,我们就一般可以通过静态的getIstance()方法获取相应的对象,这时我们就要找返回值是对象类型的方法。)

8,如果在根类中找到了需要的方法,但是根类又不能创建对象,那么我们就看看,继承这个根类的子类有哪些,一般子类都继承了父类的方法,所以子类可以直接调用父类的方法,并且子类又定义了一些自身特别的方法。

9,找到需要的类创建对象,或者找到相关功能的对象自定义一个需要的类。

下面我们按照以上的方法来阐述IO流的学习:

字节流:

字节流的根类有:读取流(Reader)、写入流(Writer)

根类都是abstract(抽象)的,我们不能直接创建对象,但是我们可以看一看父类都定义了什么方法。

Reader:

int read()

读取单个字符。

int read(char[] cbuf)

将字符读入数组。

abstractint read(char[] cbuf, int off, int len)

将字符读入数组的某一部分。

intread(CharBuffer target)

试图将字符读入指定的字符缓冲区。

abstractvoid close()

关闭该流并释放与之关联的所有资源。

FileReader:Reader的子类,可以创建对象,专门用来操作字符数据流的。

Writer:

void write(char[] cbuf)

写入字符数组。

abstractvoid write(char[] cbuf, int off, int len)

写入字符数组的某一部分。

void write(int c)

写入单个字符。

void write(String str)

写入字符串。

void write(String str, int off, int len)

写入字符串的某一部分。

abstractvoid close()

关闭此流,但要先刷新它。

abstractvoid flush()

刷新该流的缓冲。

写入流(Writer)在每次调用write()方法的时候都要flush()(刷新)一次,当然Writer也不能创建对象,我们可以使用他的子类FileWriter,FileWriter是专门处理字符写入流的类。

FileReader 和 FileWriter 为我们提供了操作字符数据流的一般方法,其中比较高效的就是自定义一个数组,用这个数组作为临时存储区,每次读取一块(装满数组)数据,然后再将这一块数据写入相应的目的地。这样就提高了效率,如果每次读取一个字符然后写入一个字符,就很低效,是不可取的。

自定一个数组为我们提高了效率,但是每次使用都要写很多代码,所以开发者就将这个数组封装为了一个特殊的对象。那就是缓冲区!BufferedReader(字符读取缓冲区)和BufferedWriter(字符写入缓冲区)。他是用的是装饰设计模式,是再不改变原来已定义类的基础上增强类的功能。

补充:BufferedReader的子类LineNumberReader,增加了int getLineNumber():获得当前行号的功能,我们可以在使用缓冲区的同时读取行号。

装饰设计模式:

当想要对已有的对象进行功能增强时,可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。那么自定义的该类称为装饰类。

字符流学习完了,那么如果要学习字节流就会简单很多,我们通过查阅API知道:很多方法都似曾相识。所以,总结一下就是下面几点:

A.字节流分为:InputStream(读取流)和OutputStream(写入流)

B.字节流和字符流的功能基本相同,只不过传入的参数由字符流中的字节char,变成了字节中的byte。

C.字节流也具有缓冲区:

BufferedInputStream(字节读取缓冲区)和BufferedOutputStream(字节写入缓冲区)。方法与字符缓冲区相似。

第三篇:黑马程序员视频总结

面向对象:面向对象是相对于面向过程而言的。面向过程强调的是功能,面向对象将功能封装进对象,强调的是具有功能的对象。

类是对现实生活的描述。对象是一类事物实实在在存在的个体。

堆内存和栈内存:基本类型的变量和对象的引用存储在栈内存;用new创建的对象和数组存储在堆内存。

封装:隐藏对象的属性和实现细节,仅对外提供公共访问方法。原则:将不需要对外提供的内容都隐藏起来,将属性都隐藏,提供公共方法对其访问。好处:提高安全性,便于使用,提高重用性。

什么时候使用静态?成员变量:当对象中有共享数据时。成员函数:函数内部没有访问到非静态数据(对象的特有数据)。

帮助文档制作:/***/@author作者;@version 版本;@param 参数;@return 返回结果 命令:javadoc-d 文件夹-author-version xxx.java。将生成一系列网页。

静态代码块:static{}。用于给类进行初始化,只执行一次,优先于主函数。

Person p=new Person():

1、找到Person.class加载到内存。

2、执行static代码块。

3、在栈内存中开辟main()方法空间,并分配一个 变量p。

4、在堆内存中开辟实体空间。

5、进行属性的空间分配,并进行默认初始化。

6、对空间属性进行显示初始化。

7、实体的构造代码初始化。

8、调用对应的构造函数,进行构造函数初始化。

9、将实体空间首地址赋给p。单例:

class Single{

private Single(){} //私有化构造函数。

private static Single s = new Single();//静态方法要访问它,所以也要静态化。静态方法不能访问非静态的方法和属性。创建私有并静态的本类对象。

public static Single getInstance(){ //无法通过对象调用,只能是静态。定义公有并静态的方法,返回该对象。

return s;

}

}

//懒汉式:延迟加载方式。

class Single2{

private Single2(){}

private static Single2 s = null;

public static synchronized Single2 getInstance(){

if(s==null)

s = new Single2();

return s;

}

}

继承:提高代码复用性,并为多态打下基础。Java只支持单继承。多继承隐患:多个父类定义相同功能时,子类对象不确定要运行哪一个。重载:方法名相同,但参数不同的多个同名函数;

覆盖:子类重写父类的方法,要求方法名和参数类型完全一样(参数不能是子类),返回值和异常比父类小或者相同(即为父类的子类),访问修饰符比父类大或者相同

隐藏:父类和子类拥有相同名字的属性或者方法时,父类的同名的属性或者方法形式上不见了,实际是还是存在的。

多态:同一操作作用于不同的对象,可以有不同的解释,产生不同的执行结果。

内部类:内部类可以直接访问外部类的成员,包括私有。外部类必须建立内部类对象才能访问内部类成员。

异常体系:error和exception

==和equals()的区别:“==”和“!=”比较的是“栈”中的内容(对象的地址),而equals()比较的是“堆”中的内容(对象的内容)。

多线程:建立线程两种方法:

1、继承Thread类;

2、实现Runnable接口。继承接口避免了单继承的局限性。

线程对象.setDaemon(true)设置守护线程。线程启动前调用,当正在运行的线程只有守护线程时,java虚拟机退出。

当a线程执行b线程的.join()方法时,a会等待b线程执行完才会执行。

线程对象.setPriority()设置线程优先级。

StringBuilder不是线程安全的,速度快;StringBuffer线程安全,慢。

泛型是一个类型安全机制,用于解决安全问题。

集合:

为方便存储和操作对象,出现集合类。数组可以存储对象,但长度固定,集合长度可变;数组可以存储基本数据类型,集合只能存储对象。

Collection:List和Set

List:有序,元素可以重复,有索引。

ArrayList,底层数据结构是数组。查找速度快。删除元素用equals()判断

LinkList,链表,增删速度快。

Vector。线程同步,数组,查找速度快。

Set:无序。元素唯一。

HashSet:底层数据结构式哈希表。通过hashCode()和equals()方法保持唯一性。如果元素hashCode值相同才会判断equals是否为true;

TreeSet:底层是二叉树。可以对元素进行排序。按自然顺序就是compareTo()。

实现排序的两种方法:

1、实现Comparable接口,覆盖comapreTo(Object obj)方法。

2、实现Comparator接口,覆盖compare(Object,Object)方法。

Map:

Hashtable,底层哈希表,不可以存储null值或键。线程同步。效率低。

HashMap,哈希表,允许使用null值或键。不同步,效率高。

TreeMap。底层是二叉树,线程不同步。可以给键进行排序。

获取Map元素的两种方法:

1、Set keyset,将Map集合中的键存入Set集合;

2、Set> mapEntry,将Map集合中的映射关系存入Set集合。

Collections:java集合的工具类,用于操作集合类。

Arrays集合:用于操作数组的工具类。

1.5新特性:可变参数,int...arr

静态导入:import static java.lang.System.*;用于导入静态方法;import java.lang.*;用于导入类文件。

System类:getProperties()方法获得返回系统属性Properties(Map集合子类)对象。Runtime类:运行时操作类。单例设计模式。

Calendar类:抽象类,用getInstance()获得对象。

Math类。

IO流:

常用基类:派生子类用父类名做后缀

字节流:InputStream,OutputStream

字符流:Reader,Writer

字符流:FileWriter,FileReader,需要flush();

字符流缓冲区:BufferedReader,BufferedWriter;要结合流才能使用。需要flush(),关闭缓冲区就是关闭缓冲区的流对象。

LineNumberReader(FileReader)类,getLineNumber()方法可以获得行号

字节流:FileOutputStream,FileInputStream。操作多媒体文件。

转换流:InputStreamReader,OutputStreamWriter。属于字符流的子类。In(System.in),out返回字节流。

System.setIn(InputStream),System.setOut(PrintStream);改变标准输入输出。

File类:

合并流:SequenceInnputStream。用vector的elements()得到Enumeration。

切割文件:循环里边创建流、关闭流。讲一个文件分部分存储在几个文件中。

java.Awt:需要调用本地系统方法实现功能。

javax.Swing:完全由java实现,增强移植性。

Component:

1、Container:Window,Panel

布局管理器:

1、FlowLayout,Panel默认布局;

2、BorderLayout,Fram默认。

TCP和UDP:TCP要经过三次握手建立连接,传输大量数据,可靠协议,效率低。UDP不需要建立连接,不可靠协议,速度快。

Socket:网络服务的一种机制,网络通信就是Socket间的通信,数据在两个Socket间通信。TCP:Socket,ServerSocket

UDP:DatagramSocket,DatagramPacket

加强:

overload:重载,存在于父类和子类、同类中。只能通过不同参数样式重载。

override:重写,存在于父类和子类之间。方法名、参数、返回值相同。子类方法不能缩小父类方法访问权限。不能抛出更多异常。

可变参数:int...arr

For循环增强:for(int i:int[])

枚举:让某个变量的取值只能为若干个固定值中的一个。

反射:在运行状态能够知道类的所有属性和方法,并调用对象的任意一个方法。获取类信息以及调用对象的方法。

类加载器:负责加载java类的字节码到虚拟机中。每个类加载器加载类时先委托给其上级加载器,当所有祖宗类加载器都没有加载到类,回到发起者类加载器时,还没加载到类,抛出ClassNotFoundException异常。

JavaBean:有set和get方法获得类属性的特殊java类。用于传递数据信息。

内省:IntroSpector,java语言对Javabean属性、事件的一些缺省处理方法。

Beanutils工具包

注解:@Override表示当前方法是覆盖父类的方法。

@Deprecated表示当前元素是不赞成使用的。

@SuppressWarnings 表示关闭一些不当的编译器警告信息。

Java系统默认三个类加载器:BootStrap,ExtClassLoader,AppClassLoader

创建动态类的实例对象:

1、通过实现的接口告诉要实现的动态类要实现哪些方法。

2、产生的类的字节码要有一个关联的类加载器对象。

3、执行代码的对象InvocationHandler。

代理:用Proxy类的getProxyClass(classLoader,interface)获得动态类的字节码文件。用反射获得构造器。用构造器的newInstance()InvocationHandler接口的对象做参数获得一个类对象。InvocationHandler对象重写pubic Object invoke(Object proxy,Method method,Object

[] args)方法返回method.invoke(target,args)。

创建动态代理对象步骤:

1、实现InvocationHandler 接口创建自己的调用处理器。重写invoke方法。

2、用Proxy.newProxyInstance(classLoader,new Class[]{Interface.class},handler}方法获得代理类实例。

Bank:

NumberManager类:产生客户

Private int lastNumber;

Private List queueNumber;

int synchronized generateNewManager():产生新客户号码。客户线程调用。

int synchronized fetchServiceNumber():取走客户号码。窗口线程调用。List是共享数据。需要互斥。

NumberMachine类:号码管理器,采用单例设计模式

private NumberManager commonManager;用get()返回对象。

private NumberManager expressManager;用get()访问。

private NumberManager vipManager;用get()访问。

Enum CustomerType COMMON,EXPRESS,VIP;

ServiceWindow类:窗口

private int windowId;窗口号码

enum CustomerType type;

public void start(){Executors.newSingleThreadExcutor().execute(new Runnable(){publicvoid run(){}})};根据type启动相应的窗口服务。

MainClass:main()函数类

开启5个普通窗口。

一个快速

一个vip

Executors.newScheduledThreadPool(1).scheduleAtFixedRate(NewRunnable(){重写run},0,1,TimeUnit.SECONDS)。

第四篇:【黑马程序员】Java之debug总结二

【黑马程序员济南】Java之debug总结二

之前详细描述了4种debug方式,现在简绍第5种,不足之处,敬请指正:(源码在文章末尾处)五.maven项目debug

第一步:首先创建一个maven项目,如图所示:

第二步:debug运行前设置

黑马程序员济南中心 编著

执行完上面的步骤,会出现如下弹出框

黑马程序员济南中心 编著

Source配置如下

黑马程序员济南中心 编著

黑马程序员济南中心 编著

黑马程序员济南中心 编著

第三步:Debug运行,上面配置完成后,直接debug运行即可,如下图

第四步:打断点测试结果

黑马程序员济南中心 编著

希望能对不会使用maven进行debug的猿友们有所帮助,第六种方式我会尽快补上

maven-debug.zip

黑马程序员济南中心 编著

第五篇:黑马程序员自荐信

自荐信_XXX_151********

姓名:XXX

电话:151********

邮箱:********n2009@126.com

尊敬的老师:

你好,我叫XXX,今年24岁,就读于XXXX,XXXX专业,将于2012年毕业。性格稍内向,善于交流,看待事情能够理性认识,善于思考,有团队合作精神。在学校的这三年多的时间里,由于专业需要,对计算机接触较多。在开设的课程中学过C语言、C#、java等编程语言,对编程语言有一定的了解。在接触java程序语言和J2ME手机游戏开发的学习中,对java产生了强烈的兴趣,并对java学习有了一定的基础。通过“黑马程序员训练营”的官网,我了解到了javaee+3G课程体系所包含的知识面广,是经过对java前景分析和现在就业所需技术要求而制定的,对我们这些即将参加就业、想参加java方面工作的人来说是最好的强心剂。课程安排科学合理,有助于学员深化对java的学习,使学员掌握到真正前沿的技术。我深信,“黑马程序员训练营”的讲师是java培训和开发方面最棒的,这也是我钟情于“黑马程序训练营”的原因之一。由于家里生活拮据,不想让父母操心、给家里增加经济负担,是“黑马程序员”给了我一个机会、给了我一份保证。

作为一名理科生,我有着很强的求知欲,勤奋,有上进心,对于坚信的事情能够坚持到底。在平时学习过程中,善于独立思考,遇到问题会尝试各种方法去解决(网络、老师、同学都是我的获得知识的途径)。平时喜欢看一些和自己专业的书籍,乐于了解一些最前沿的科技和未来的发展趋势。注重的基础知识的同时,喜欢探索新知识,在收获知识的同时也收获着乐趣。学习是一辈子的事情,也是一件乐事,就算将来学校的生活结束了,学习也永远不会落下。

我非常期待能成为“黑马程序员训练营”的一员,如果这个愿望能实现,我将以最大的热情投入到“黑马程序员训练营”的学习中去,用自己的努力去实现的自身价值,用自己的成绩回报“黑马程序员训练营”。我坚定工作后的第一件事就是努力工作,用工资偿还培训期间的费用,绝不辜负“黑马程序员训练营”对我的信任和老师的培养!请给我一份信任,我将以自己的自己的行动去回报。

择是我的期望,给我一次机会还你一份惊喜。

非常感激你能在百忙之中翻阅我的自荐信。祝你工作顺利,事业蒸蒸日上!

此致

敬礼

自荐人:XXX

2012年02月17号

下载黑马程序员——IO(Input Output)流总结(二)五篇范文word格式文档
下载黑马程序员——IO(Input Output)流总结(二)五篇范文.doc
将本文档下载到自己电脑,方便修改和收藏,请勿使用迅雷等下载。
点此处下载文档

文档为doc格式


声明:本文内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:645879355@qq.com 进行举报,并提供相关证据,工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。

相关范文推荐

    【黑马程序员】Java基础总结

    【黑马程序员】Java基础总结 黑马程序员的javaEE课程主要分为2个部分:java基础+java就业。今天就简单的给大家总结一下咱们java基础的知识。 注:Java采用Unicode符号集,每个......

    黑马程序员:Java集合简单总结

    黑马程序员:Java集合简单总结 在Java语言中,学好集合是非常重要的,下面简单的对集合进行总结,以便大家学习,有问题再相互交流。 集合框架图 在集合框架图中可以看出,Collection接......

    黑马程序员自荐信[五篇模版]

    黑马程序员自荐信在当今社会中,需要使用自荐信的场合越来越多,自荐信可以帮助我们更好地提出请求。你还在为写自荐信而苦恼吗?以下是小编为大家整理的黑马程序员自荐信,仅供参考......

    黑马程序员基础测试题

    黑马程序员基础测试题 1、 已知一个int数组, 编程从数组中获取最大数. 2、 编写一个方法(名字自定,但要符合Java编码规范),方法内打印一字符串,并在main方法内调用它。 3、 环......

    【黑马程序员】Java之debug总结三

    【黑马程序员】Java之debug总结三 之前写了"Java之debug总结一","Java之debug总结二"共总结了5种debug方式,现在简绍第6种,不足之处,敬请指正:(源码在文章末尾处) 本文以chr......

    黑马程序员:AJAX入门系列(★)

    黑马程序员:AJAX入门系列 什么是AJAX? AJAX是”Asynchronous JavaScript and XML”的缩写(异步的JavaScript和XML),即一种实现无页面刷新获取服务器数据的混合技术。 XML是什么......

    黑马程序员C语言教程:《C语言常用字符串接口总结》

    《C语言常用字符串接口总结》 1)字符串操作 strcpy(p, p1) 复制字符串 strncpy(p, p1, n) 复制指定长度字符串 strcat(p, p1) 附加字符串 strncat(p, p1, n) 附加指定长度字......

    黑马程序员_PHP_课程同步笔记day05:CSS介绍(二)

    【黑马程序员】PHP课程同步笔记day05:CSS介绍(二) CSS内边距属性:padding填充 Padding:一个数字,指的是四个方向是一样的(上右下左) Padding的四个属性:  Padding-top(上内边距),p......