【黑马程序员】Java基础 : Java语句笔记(共8篇)
篇1:【黑马程序员】Java基础 : Java语句笔记
【黑马程序员】Java基础 : Java语句笔记
摘要: Java基础—java语句这些是黑马程序员java基础入门的一个很重要的内容。今天主要给大家简单讲解一下Java基础—java语句,以后会慢慢讲解黑马程序员的课程内容!
关键语句介绍
一、while 语句 一般形式:
whi l e(条件表达式){ 语句体 ……… } 执行过程:
条件表达式为真,执行语句体。否则,退出!
二、do while 语句 一般形式: do { 语句体 …….} while(条件表达式);执行过程:
先执行一次语句体,判断 条件表达式是否为真,为真再执行do语句中的语句体。为假,退出。
需要注意:与whi l e语句区别
黑马程序员合肥中心 编著
1.while(条件表达式)后面有分号;2.不管条件表达式是否为真,语句体均会执行一次。
三、for 语句 一般形式:
for(子句 1;子句 2;子句 3){ 语句体 …… } 执行过程:
四、break、cont inue 语句 break 退出所在循环 : int stopHere = 5;for(int i=1;i<8;i++){ if(i == stopHere){ break;} System.out.println(“i = ” + i);
黑马程序员合肥中心 编著
} //打印结果:5,6,7,8均没有打印出来。
需要注意的一个问题: int stopHere = 5;for(int i = 1;i < 8;i + +){ if(i = = stopHere){ / /语句体 } break;System.out.println(“i = ” + i);} 这个时候编译器会报错:无效的 System.out 输出语句。冷静分析一下:
break 语句会结束循环,所以不会再去执行 System.out 输出语句。编译会认为你在多此一举,sorry 报个错!
continue 退出本次循环,不会退出整个循环: int skipHere = 5;for(int i = 1;i < 8;i + +){ if(i = = skipHere){ continue;}
黑马程序员合肥中心 编著
System.out.println(“i = ” + i);} / /打印结果:除了5没有打印出来。
i = 1 i = 2
五、switch 语句 一般形式: switch(常量){ case 表达式1:语句体1;break;case 表达式2:语句体2;break;.....default : 语句体n;break;}
执行过程: 执行过程:
case 根据自己的表达式看是否匹配常量,如果匹配就执行语句体,否则执行 default 语句。
case 执行类似于并行操作,不是顺序操作。所以各个表达式的值不可以相同。
黑马程序员合肥中心 编著
哪个 case 匹配常量就会执行自己的语句体,不会再去寻找其他 case 语句。注意:
<1> case 穿透:省去break关键字
[AppleScript] 纯文本查看 复制代码 ?
01 /**
02 * @author 传智播客 03 */
04 int i = 10;05 switch(i){ 06 case 10:
07 System.out.println(“ A”);08 //break;09 case 5: System.out.println(“ B”);11 //break;12 case 7: System.out.println(“ C”);14 //break;15 default : System.out.println(“ error”);17 break;18 }//打印结果:A B C error
<2> 在 Java 编程中 switch 括号中的常量的数据类型只可以为 int 类型或者是 byte、char、short(因为 byte、char、short 可以自动提升为 int),常量类型不可以是 long、float 和 double 等数据类型。<3> 多个 case 可以合并 , 相当于 “ 或 ”,例如下面 i 等于 10、5、7 都可以执行打印语句。
[AppleScript] 纯文本查看 复制代码 ?
01 /**
02 * @author 传智播客 03 */
04 int i = 5;05 switch(i){ 06 case 10: 07 case 5: 08 case 7:
09 System.out.println(“ C”);10 break;11 default : System.out.println(“ error”);13 break;
黑马程序员合肥中心 编著 }//打印结果:C <4> default 语句可以省,但是不推荐,他后面的 break 可省 <5> case 或者 default 子句中可以写多条语句 case 7: System.out.println(“ C”);if(i == 5){ System.out.println(“ i = ” +i);} break;<6> case 或者 default 子句中还可以嵌套 switch 或者其他语句
六、return 语句
终止方法的运行并指定要返回的数据。两种形式:
<1> return 表达式;
<2> return ;没有任何数据直接返回,结束函数(方法)的执行。
七、if 语句
一般形式:
1.if(条件表达式){ 语句体} 2.if(条件表达式){ 语句体} else{语句体 } 3. if(条件表达式1){ 语句体} else if(条件表达式2){语句体 } else {语句体 }
特别注意:形式3,else与其最近的上个if 配对。例子:
[AppleScript] 纯文本查看 复制代码 ?
黑马程序员合肥中心 编著
01 /**
02 * @author 传智播客 03 */
04 public class TestIF {
05 public static void main(String[] args){ 06 int i = 30;07 if(i < 20){
08 System.out.println(“<20”);09 } else if(i < 50){ System.out.println(“<50”);11 } else if(i < 80){ System.out.println(“<80”);13 } else System.out.println(“>=80”);15 System.out.println(“黑马程序员!”);16 }
如果大家想学习java基础的知识,欢迎大家可以去传智播客官网http:///去了解java基础知识!
黑马程序员合肥中心 编著
篇2:【黑马程序员】Java基础 : Java语句笔记
1、二维数组 格式:
Int[][] arr=new int[2][3];[2]代表1维数组的个数; [3]代表1维数组有三个元素; 内存图:
分析:
通过对内存图分布可知,首先在栈内存中加载main函数,开辟空间,定义一个变量arr,在堆内存中通过New创建一个数组实体int[2],并分配其地址值为0x0045,数组元素值进行默认初始化为Null;然后把地址值赋值给栈内存中的arr.在堆内存中开辟两块空间,分别用来存放二维数组中的数组元素,分配其地址值分别为0x0056、0x0089,然后对将地址值传给二维数组中的元素,所以说对内存中二维数组存储的是一维数组的地址值。最后变量通过二维数组的地址0x0045指向二维数组。
注意:二维数组中必须指定长度、以及实体没有对二维数组进行初始化时默认为null;
2、对二维数组的遍历(大圈套小圈思想)For(int x=0;x
3、面向对象的理解:
特点:
1、面向对象就是更符合人们思考习惯的一种思想。
2、从面向过程的执行者,转变成了面向对象的指挥者
3、面向对象将复杂的事情简单化了。
其实面向对象是一种思想,是面向过程而言,将复杂的事情变的更简单了。通过把大象放到冰箱里这个列子来理解面向对象的概念
面向过程:把冰箱门打开、存储大象、关闭冰箱;强调的过程注重行为; 面向对象:冰箱.打开、冰箱.存储、冰箱.关闭;强调的是冰箱这个对象。
面试题:你怎么理解面向对象?
首先说面向对象的特点:它是一种思想,它让复杂的问题简单化,它把执行者变成了指挥者。
然后举例子来说明,最牛的就是结合实际场景来说:其实面试官你就是在用面向对象的思想在思考问题,为什么这么说?因为公司业务蒸蒸日上,需要招更多的人来完成项目,所以才在这里招聘人员,你需要找一些具备专业编程经验的人,来帮公司完成工作,那么我就是那个对象,因为我具备专业编程能力,你就是那个指挥者,指挥我来做事,至于我怎么去完成编程任务,你是不需要去知道,你只要结果了就可以了,这其实就是把你之前的工作简化了,你不必再事必躬亲了。这就是面向对象思想的体现。
同时可以结合去饭店吃饭,在家做事等等列子来说明面向对象的思想。
扩展:OOP:面向对象编程。
OOA面向对象分析。
OOD:面向设计。还有面向接口、面向框架、面向对象的语言:C++、JAVA、C#
4、在实现功能,先找java当中是不是提供好了相关的对象,没有对象自己造一个对象。比如说公司招聘人员找不到人的时,这时公司就需要自己在公司内部培养人,也就是自己造对象。
5、类和对象关系:
a)类到底是什么?
类就是对现实生活中事物的描述,描述中包含了该类事物的共性内容。Class Car(){ Int num;String color;Void run(){} } 在类中定义的变量和函数都称为类中的成员。成员:
成员变量---属性 成员函数---行为
b)什么是对象?
对象就是该类事物实实在在存在的个体。
Eg:现实生活中的对象:张
三、李四
想要描述:提取对象中的共性内容,对具体的抽象。
描述时:这些对象的共性有姓名年龄性别学习java的功能。对象也可以理解为其实就是个容器,用来存储更多的数据,存储的都是每一个对象特有的数据,而类就是这些数据所属的属性。
用java语言来描述一个小汽车
描述事物:无非就是描述事物的属性和行为 属性:轮胎数、颜色 行为:运行 Eg: Class Car { String color=“red”;Int num=4;Run(){ System.out.println(color+“"+num);} } Class CarDemo { Public static void main(String[] args){ Car c=new Car();C.color=”bule“;C.num=5;C.run();m
Car c1=new Car();C1.num=8;C1.color=”green“;C1.run();} } 重点:分析上述代码在内存中的分布:
复习的时候写内存分析:
6、成员变量和局部变量的区别:
1、源代码中定义位置不同:
成员变量:定义在类中,在整个类中有效。局部变量:定义在函数中,在局部范围内有效。简单一句话:作用范围不一样,成员变量作用于整个类中,局部变量作用于函数中,或者语句中。
2、在内存中的位置和事件不同:
生命周期不同:
成员变量:随着对象的创建的而出现在堆内存中,随着对象被回收而消失。
局部变量:随着变量所属局部区域的运行,而出现在栈内存中,随着所属区域运行结束而释放。
3、变量使用的初始化:
成员变量:因为堆内存中都有默认初始化值,对于引用型变量默认值就是null;局部变量:因为在栈内存中都没有默认初始化值,必须手动初始化后才可以参与运算。
7、匿名对象:
即没有名字的对象,简化书写用的。基本使用:
1、当对对象的方法只调用一次时,可以用匿名对象来完成
这样写比较简化,如果对一个对象进行这个成员的调用,必须给这个对象起个名字
2、可以将匿名对象作为实际参数进行传递。一旦对对对进行多个成员操作时。必须要对对象起个名字。
Eg: Main(){ Show(new Car())} Public static void show(Car c)
{ C.num=3; C.color=”back";C.run();}
8、面向对象三个特征:
封装:
是指隐藏对象的属性和实现细节,仅对外提供公共访问方式,凡是面向对象必须有封装性。
特点: 将变化隔离 便于使用 提高复用性 提高安全性
原则:
1、将不需要对外提供的内容都隐藏起来。
2、把属性都隐藏,提供公共方法对其访问。在代码中的体现:
1、将成员变量都私有化,并通过共有的方法对其进行访问,这两个方法是:setXxxgetXxx
2、只要不准备对外提供的全部都封装起来,3、私有仅仅是封装的一种表现形式,函数是最小的封装体。方法需要私有吗?
Public static void selectSort(){ Swap();} Private void swap()//此处私有是因为位置置换不用提供给用户。{ } 代码实现: Class Person { Private int age;//为了不让其他程序直接访问age属性,避免错误的数据,可以使用一个关键字来完成private私有,它是一个权限修饰符。
Public void setAge()//对外提供函数是可以控制你输入的参数。//一个成员变量通常对应的两个方法、{ If(a>130||a<0){ Age=a;
Speak();} Else System.out.println();} Public void getAge(){ Return age;}
篇3:【黑马程序员】Java基础 : Java语句笔记
1、计算机常识:包括了软件的简单划分:系统软件 windos等和应用软件 QQ、迅雷等
2、人机交互方式:图形化界面GUI、命令行方式CLI:
3、常用的命令:cd:进入目标路径、cd..退出当前路径、mk:创建文件、rd:删除文件,dir:列出当前目录、cls:清屏、exit:退出dos窗口 cd回到根目录 rds删除根目录下所有的文件(这里是比较牛的地方,因为windos都是从里到外的删除,在dos命令下必须首先删除里面的文件保证没有任何文件下才能删除当前的文件目录)*:代表通配符、notepad:记事本;
4、Help/?为dos中寻找帮助的工具,可以帮助列出所有的dos命令
5、Java的三种技术架构:javaSE:标准版:是为了开发桌面和商务应用程序提供的解决方案 javaEE:企业版:为了开发企业环境下的应用程序而提供的一套解决方案;javaME:小型版:是为了开发电子消费品和嵌入式设备提供的解决方案;
6、Java的简单特性:跨平台性(平台在此所指的是操作系统,而操作系统指的是平台)怎么做到跨平台?因为有jVM的出现,只要计算机上安装上虚拟机就可以运行不同的程序 jVM作用:能解释java语言的程序;
正是因为有了JVM才使java语言具备了良好的移植性;
7、java语言的开发环境:
JRE:java Runtime Enviroment Java运行环境:包括javaJVM和核心类库 简单:JRE=JVM+核心类库
JDK:java Development kit java 开发工具:包括java工具包 比如:javac 编译器 java 运行 总的说来就是一句话:使用JDK开发完的程序交给JRE运行;
8、下载JDk和安装JDK 详细见:下载JDK和安装JDK专题 下午:
1、环境变量的配置: 三个步骤:下载安装、配置环境变量、javac编译运行(如果dos窗口显示出javaJVM中所有的参数信息代表已经配置成功)
2、path环境变量有什么作用?用于记录应用程序所在的路径;
3、配置Path环境变量目的:为了方便任何情况下都能执行应用程序
4、区别:不用找路径了,windos找路径
5、临时配置环境变量:Set path:
6、在原有的基础上添加新的参数值:set path=E:javaJDKjdk1.7_0_3bin%path%:注意后面的部分(注意:配置时要尽量配置在前端,否则JDK会优先运行其他程序)
7、Java程序:
Class Demo { Public static void main(String[] args){ System.out.println(“HelloWorld!”);} } 从上面的程序中可得:
1、java文件的扩展名为:.java
2、javac 对该java文件进行编译;
3、java对生成的class文件进行运行;
类就是存储代码的地方; 关键字:class
类名的书写规范:英文和数字的组合,英文单词第一个字母大写 如果有几个组成,每个英文字母的首字母大写(回忆变量名书写规范----已经忘记了)
------自己写好的文件称之为源代码或者源文件,必须翻译成计算机能识别的文件
NoSuchMethodError:main ;没有main方法(缺少主函数)
回忆最常见的几个异常(已经忘记,java面试中这么一道题:说出你经常遇到的异常,至少五个)----------------public static void main(String[] args)main函数可以保证该类独立运行; 它是程序的入口; 它会被JVM所调用; argments:args;参数
作用:可以让一个类可以独立运行;
java程序的主函数,程序的开始;执行的起始点;
面试题:一个java程序中是否只能有一个main函数?(自己查找--已经忘记)可以重载main()函数(重载和覆盖知识点已经忘记,晚上补齐)补习:
重载:什么是重载:Overload表示同一个类中可以有多个名称相同的方法,重载的特点:参数列表的方法各不相同(参数个数和参数列表)
为什么用重载:是静态多态性,即同名不同参,好比一个人可以用不同的餐具一样; 重写:override覆盖一个方法,并且对其重写,以求达到不同的作用,-------------System.out.println("");println与print的区别:前者换行也就是回车,后者没有回车; 作用:显示效果不一样;
java的输出语句:输出在控制台上;
java对应的程序就是java虚拟机
弄清楚编译时期和运行时期出现的机制和错误:(后期的异常机制中涉及到)------------初学者在初学的时候遇到的问题:
1、文件名保存错误;
2、目录不对 eg:只进入了盘符,没有进入文件中;
3、扩展名保存不对;eg:123.java.txt扩展名隐藏; 解决方法,用dir查看文件详细信息,显示其扩展名;
4、主函数找不到;
5、编译失败;
8、classpath:类文件路径 set classpath=c:myclass 将java的类文件告诉系统,java虚拟机在执行时就会制定的目录下查找; 作用:简单一句话:告诉java虚拟机要运行类文件的位置; 没告诉位置就在当前文件下找,告诉位置就去告诉位置查找!
set classpath=c:mycalss;多了一个分号,表示告诉虚拟机按照所指定的目录下查找的java程序,如果没找到会在当前目录下再次查找;
一般情况下不加分号;如果加分号和自己指定的意愿有悖; set calsspath=.;c:myclass表示当前路径和指定的目录;
9、path与classpath的区别?
path是用于定义系统中的可执行程序的所在路径。方便于执行系统中的执行文件,比如 exe bat。
classpath用于定义java的类文件class文件的所在路径。是为了让jvm去classpath路径下查找要运行的java程序。
10、明明看到类名,但是运行时找不到类文件,只有两种情况:
1、类名写错,只要源文件和类名相同可以避免此错误;
篇4:【黑马程序员】Java基础 : Java语句笔记
之前写了“Java之debug总结一”,“Java之debug总结二”共总结了5种debug方式,现在简绍第6种,不足之处,敬请指正:(源码在文章末尾处)本文以chrome浏览器为例
六.前台debug 主要:debug js代码(1.jsp中嵌入的js代码 2.js文件中的js代码)第一步:首先创建一个web项目,需要有一个jsp页面和js,如下图:
第二步:在test.js,index.jsp中填充内容,如图示: index.jsp
黑马程序员济南中心 编著
test.js
第三步:把项目发布到tomcat服务器中,并启动tomcat服务器
第四步:在浏览器上访问index.jsp,使用“F12”打开chrome开发者工具,如下图:
黑马程序员济南中心 编著
选中“Source”,点击,出现如下界面
黑马程序员济南中心 编著
点击“[url=]encode测试[/url]”按钮进行测试
以上为外部js代码测试,测试过程中可以修改js的内容,“Ctrl+s”保存后,可以立马生效,断点会从第一行从新开始.黑马程序员济南中心 编著
内部js测试步骤类似于上面的步骤,只是在选择资源的时候不是选择“test.js”,而是选择“index”,选择后页面如下图:
测试步骤和外部js一样
比较外部js和内部js的区别: 外部js,可以进行动态的修改, 修改之后立马生效,并且可以立马进行测试.内部js,不可以动态修改,用起来有点不方便
以上以我用过的所有debug方式,希望对大家有所帮助
篇5:【黑马程序员】Java基础 : Java语句笔记
考试宣言: 同学们, 考试考多少分不是我们的目的!排在班级多少的名次也不是我们的初衷!我们考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了, 那么不用怕, 考完试后, 导师讲解的时候你要注意听!那时候学会了, 记住了, 也一样不影响你高薪就业!
本套题共40道不定项选择题,其中单选30道,多选10道。单选2分/题,多选4分/题。多选题不全对半分,全对满分。
1.所有异常的父类是()A a)Throwable类 b)Error类
c)Exception类
d)RuntimeException类
2.下列关键字能和try一起使用的有()CD a)final b)finalize c)finally d)catch
3.实现下列哪个接口,可以启用序列化功能()b a)Runnable接口
b)Serializable接口 c)Comparable接口 d)Comparator接口
4.当方法遇到异常(编译时异常)又不知如何处理时,下列哪种说法是正确的()C a)捕获异常(try{…}catch{…})b)抛出异常(throw 异常对象)c)声明异常(throws 异常类型)d)嵌套异常
5.如何自定义一个异常类()AB a)让这个类继承Exception b)让这个类继承RuntimeException c)让这个类继承Comparator d)让这个类继承Comparable
6.可以用来操作路径的类是()a a)File b)FileStream c)OutputStream d)FileReader
7.File类中,创建多级目录,可以通过以下那个方法()d a)create()b)createNewFile()c)mkdir()d)mkdirs()
8.下列哪一个import命令可以使我们在程序中创建输入/输出流对象()B a)import java.sql.*;b)import java.io.*;c)import java.net.*;d)import java.util.*;
9.下列关于Java中文件输入输出的说法正确的是()A a)在Java中,文件的输入输出功能是通过流来实现的
b)如果要把数据写入一个文件中,需要创建一个输入流对象 c)字符流在某些方面比如图片的处理,比字节流更方便x d)可以通过Reader r = new Reader(“c:java.txt”);创建一个输入流对象
10.获取指定目录下所有的文件,可以通过哪个方法实现:()D a)b)c)d)
list()getDir();listFile()listFiles()11.下面用字符流能成功拷贝的文件有()BC a)java基础自测题.doc b)学生考试答案.xml c)Student.java d)学生信息表.xlsx
12.看下面程序,加入xxx.txt里面有一个文字”a”,请问该程序输出结果是()D public static void demo1()throws FileNotFoundException, IOException {
InputStream is = new InputStream(“xxx.txt”);
int x = is.read();
System.out.println(x);} a)A b)a c)97 d)编译报错
13.如果我想保留a.txt中原有的内容,在后面追加写入数据,下面创建输出流对象写法正确的是()B a)FileOutputStream fos = new FileOutputStream(“a.txt”);
b)FileOutputStream fos = new FileOutputStream(“a.txt”,true);c)BufferedOutputStream bos = new BufferedOutputStream(“a.txt”,true);d)OutputStreamWriter osw = new OutputStreamWriter(new InputStream(“a.txt”,true),”gbk”);
14.下面关于字节流说法不正确的是()BC a)字节流拷贝文件时一次读取一个字节 b)字节流拷贝文件时一次读取两个字节
c)字节流使用完后需要关,内存输出流使用完后也必须要关闭 d)FileOutputStream没有缓冲区,而FileWriter有缓冲区
15.判断一个文件的大小我们可以使用哪个方法(AD)
a)File类的length()方法
b)File类的available()方法
c)FileInputStream类的length()方法 d)FileInputStream类的available()方法
16.已知 海贼王全集.avi 这个文件有20Gb 的大小,复制该文件最快的方式是()D a)
FileInputStream fis = new FileInputStream(“双元.jpg”);
FileOutputStream fos = new FileOutputStream(“copy.jpg”);
int b;
while((b = fis.read())!=-1){
fos.write(b);
}
fis.close();
fos.close();b)
c)
d)
FileInputStream fis = new FileInputStream(“致青春.mp3”);FileOutputStream fos = new FileOutputStream(“copy.mp3”);byte[] arr = new byte[fis.available()];
fis.read(arr);
fos.write(arr);
fis.close();fos.close();
FileInputStream fis = new FileInputStream(“xxx.txt”);FileOutputStream fos = new FileOutputStream(“yyy.txt”);
byte[] arr = new byte[1024];int len;while((len = fis.read(arr))!=-1){ fos.write(arr,0,len);}
fis.close();fos.close();
FileInputStream fis = new FileInputStream(“xxx.txt”);FileOutputStream fos = new FileOutputStream(“yyy.txt”);
byte[] arr = new byte[1024*8];int len;while((len = fis.read(arr))!=-1){
fos.write(arr,0,len);}
fis.close();fos.close();17.BufferedInputStream这个类是哪个设计模式的体现()B a)单例设计模式 b)装饰设计模式 c)工厂设计模式 d)适配器模式
18.下面说法正确的是()D a)OutputStream是个接口 b)Writer是个接口
c)BufferedOutputStream是FileOutputStream的父类x d)Reader是InputStreamReader的父类
19.下列关于Java I/O中字符输入流Reader类中的read方法描述错误的是?(A)
a)read()方法的返回值类型为char类型 b)read()方法的返回值类型为int类型
c)read()方法的返回值如果为-1,表示到流的末尾
d)read(char[] cbuf)方法表示将读到的多个字符存入字符数组cbuf中
20.下列哪些选项是Java I/O中字符输出流FileWriter类中的write方法?()ABCD a)write(char[] cbuf)写入字符数组
b)write(char[] cbuf, int off, int len)写入字符数组的某一部分 c)write(int c)写入单个字符 d)write(String str)写入字符串
21.假设存在xxx.txt文件,内容为”大家好”,以下代码运行的结果为?(A)public class Test { public static void main(String[] args)throws IOException {
FileReader fr = new FileReader(“xxx.txt”);
FileWriter fw = new FileWriter(“zzz.txt”);
int c;
while((c = fr.read())!=-1){
fw.write();
}
fr.close();
fw.close();} } a)b)c)d)
编译报错
程序正常运行,zzz.txt文件中的内容为”大家好” 程序正常运行,但是没有生成zzz.txt文件 程序正常运行,但是zzz.txt文件中是乱码
22.FileWriter类直接继承哪个类?(A)
a)OutputStreamWriter b)Writer c)BufferedWriter d)InputStreamReader
23.关于自定义字符数组拷贝文件的说法错误的是?()AC a)自定义的数组越大越好
b)自定义的数组既不能太大,也不能太小
c)可以使用FileReader类的available()方法的返回值作为数组的大小
d)建议定义为1024的整数倍,但不能太大,防止内存溢出
24.假设xxx.txt文件中存了2000个汉字,下列程序运行后输出的结果是?(B)
public class Test { public static void main(String[] args)throws IOException {
FileReader fr = new FileReader(“xxx.txt”);
FileWriter fw = new FileWriter(“yyy.txt”);
int count = 0;
char[] arr = new char[1024];
int len;
while((len = fr.read(arr))!=-1){
count++;
fw.write(arr,0,len);
}
fr.close();
fw.close();
System.out.println(count);} }
a)1 b)2 c)3 d)4
25.下面的哪个类代表字节输入流到字符输入流转换的桥梁?()A a)InputStreamReader b)OutputStreamWriter c)FileReader d)BufferedReader
26.BufferedReader读取一行时,判断该行是否结束的标志是什么?()AD a)
r b)
null c)
-1 d)
rn
27.缓冲流是否需要关闭()B a)否 b)是
c)以上答案都不对 d)关不关都可以
28.以下代码运行后输出的结果是?(A)
public class Test { public static void main(String[] args)throws IOException {
System.out.println(fun(5));} public static int fun(int num){
if(num == 1){
return 1;
}else {
return num * fun(num2)+ fun(num-1);
} } } a)34 b)13 c)21 d)5
30.为了提高读写性能,用下面的哪些流?()ABCD a)BufferedInputStream b)BufferedOutputStream c)BufferedReader d)BufferedWriter
31.下列关于Java I/O中哪个流可以将多个文件中的内容合并到一个文件中(序列流)?(cC a)SequenceOutputStream b)InputStreamReader c)SequenceInputStream d)OutputStreamWriter
32.下面的哪个流表示内存输出流?()A a)ByteArrayOutputStream b)ByteArrayInputStream c)ObjectInputStream d)ObjectOutputStream
33.下面说法正确的是?()b a)可以通过ByteArrayOutputStream和ByteArrayInputStream实现文件的复制)b)不可以通过ByteArrayOutputStream和ByteArrayInputStream实现文件的复制 c)用ByteArrayOutputStream和ByteArrayInputStream实现文件的复制,会出现乱码 d)用ByteArrayOutputStream和ByteArrayInputStream实现文件的复制,不会出现乱码
34.下面说法错误的是?()D a)ByteArrayOutputStream内部封装了字节数组
b)new ByteArrayOutputStream()利用空参构造创建对象时,内部的数组的大小为32 c)toByteArray()以字节数组的形式返回数据 d)以上说法都不对
35.关于对象操作流的描述正确的是?()A a)ObjectOutputStream流是将对象以Object类型写入到文件中 b)ObjectOutputStream流是将内容写入到Object对象中 c)ObjectInputStream流是读取Object对象里的内容
d)ObjectInputStream是从文件中读取一个对象出来,读出来是Object类型的,需要进行强制类型转换
36.ObjectOputStream类中的哪个方法可以将对象写入到文件中?()C a)write(Object obj)b)append(Object obj)c)writeObject(Object obj)d)objectWrite(Object obj)
37.下列选项中哪个不属于I/O流?()C a)FileWriter b)FileReader c)Properties d)PrintStream
38.下列说法不正确的是()D a)Properties 类表示了一个持久的属性集L b)Properties 可保存在流中或从流中加载L c)属性列表中每个键及其对应值都是一个字符串L d)以上说法都不对
39.以下代码运行后输出的结果是?()C public class Test { public static void main(String[] args)throws IOException {
Properties prop = new Properties();
prop.setProperty(“name”, “张三”);
prop.setProperty(“tel”, “***”);
Enumeration
while(en.hasMoreElements()){
String key = en.nextElement();
String value = prop.getProperty(key);
System.out.print(value + “:”);
} } } a)b)c)d)name:tel tel:name 张三:***: ***:张三
40.关于Properties类中的load和store方法说法正确的是?()AB a)load方法从流中读取属性列表,键值对,加载到Properties对象中 b)store方法将Properties对象中的键值对,写入到流中
c)load方法将Properties(Properties)对象中的内容加载到文件中
篇6:Java语法基础for语句练习
语句的嵌套应用
累加求和,计数器
循环嵌套
一、语句的嵌套应用
语句嵌套形式。其实就是语句中还有语句。形式多种多样,没有固定的格式和套路。
1、打印偶数
for(int x=1;x<=10;x++)
{ if(x%2==1)
continue;
System.out.prinln(“x=”+x);
}
二、累加求和,计数器
1、获取1~10的和,并打印。
思路://1,定义变量用于存储不断变化的和。
int sum = 0;
//2,定义变量,记录住不断变化的被加的数。
int x = 1;
//3,定义循环,重复加法的过程。
用while来体现
while(x<=10)
{
sum = sum + x;
x++;
}
System.out.println(“sum=”+sum);
循环注意:
一定要明确哪些语句需要参与循环,哪些不需要
复制代码 代码如下:
class ForTest2
{
public static void main(String[] args)
{
//用for来体现。
int sum = 0;
for(int x=0; x<=10; x++)
{
sum += x;
}
System.out.println(“for sum = ”+sum);
}
}
小例子的小小总结:其实这就是累加思想。
原理:通过变量记录住每次变化的结果。
通过循环的形式,进行累加动作。
2、1~100之间 7的倍数的个数。并打印。
思路:
1,先对1~100进行循环(遍历)通过循环的形式。
2,在遍历的过程中,定义条件。只对7的倍数进行操作。
3,因为7的倍数不确定,只要符合条件,就通过一个变量来记录住这个变化的次数。
步骤:
1,定义循环语句,选择for语句。
2,在循环中定义判断。只要是7的.倍数即可。使用if语句。条件:7的倍数 x%7==0;
3,定义变量,该变量随着7的倍数的出现而自增。
复制代码 代码如下:
class ForTest3
{
public static void main(String[] args)
{
int count = 0;
for(int x=1; x<=100; x++)
{
if(x%7==0)
//System.out.println(“x=”+x);
count++;
}
System.out.println(“count=”+count);
}
}
小小示例的总结:
这就是计数器思想。通过一个变量记录住数据的状态变化。也许通过循环完成。
三、循环嵌套。
1,打印一个长方形。
复制代码 代码如下:
class ForForDemo
{
public static void main(String[] args)
{
/*
****
****
****
*/
for(int x=0; x<3; x++)//
{
for(int y=0; y<4; y++)
{
System.out.print(“*”);
}
System.out.println;//只有一个功能就是换行。
}
System.out.println(“-------------------”);
}
}
****
****
****
对于打印长方形总结:外循环控制的行数。内循环控制的是每一行的列数。也就是一行中元素的个数。
2,打印一个直角三角形,脚尖朝下。
复制代码 代码如下:
class ForForDemo
{
public static void main(String[] args)
{
/*
*****
****
***
**
*
发现图形有很多行,每一个行有很多列。
要使用嵌套循环。原理:形象说法:大圈套小圈。
*/
//int z = 5;
for (int x=0; x<5 ;x++ )//x<5:因为外循环控制行数。一共5行。
{
for (int y=x; y<5 ;y++)
{
System.out.print(“*”);
}
System.out.println();
//z++;
}
}
}
通过该示例小小总结:发现图形有很多行,每一个行有很多列。
要使用嵌套循环。原理:形象说法:大圈套小圈。
3,打印正三角、杨辉三角、九九乘法表
/*
*
**
***
****
*****
1
12
123
1234
12345
九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
*/
复制代码 代码如下:
class ForForTest
{
public static void main(String[] args)
{
/*
*
**
***
****
*****
*/
for (int x=0; x<5 ;x++ )
{
for (int y=0 ; y<=x ; y++ )
{
System.out.print(“*”);
}
System.out.println();
}
System.out.println(“----------------------”);
/*
1
12
123
1234
12345
*/
for (int x=1; x<=5; x++)
{
for (int y=1; y<=x;y++ )
{
System.out.print(y);
}
System.out.println();
}
System.out.println(“----------------------”);
/*
九九乘法表
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
*/
for (int x=1; x<=9 ; x++)
{
for (int y=1; y<=x; y++)
{
System.out.print(y+“*”+x+“=”+y*x+“t”);
}
System.out.println();
}
}
}
通过正三角、杨辉三角、九九乘法表得出一些不是规律的规律:
所谓不是规律的规律:
尖朝上,可以改变条件。让条件随着外循环变化。
尖朝下,可以初始化值,让初始化随着外循环变化。
4,打印菱形(◇)或称为金字塔
/*
----*
---* *
--* * *
-* * * *
* * * * *
* * * * *
-* * * *
--* * *
---* *
----*
*/
复制代码 代码如下:
class ForForTest2
{
public static void main(String[] args)
{
for (int x=0; x<5 ;x++ )
{
for(int y=x+1; y<5 ; y++)
{
System.out.print(“ ”);
}
for(int z=0; z<=x ; z++)
{
System.out.print(“* ”);
}
System.out.println();
}
}
}
5、练习:3000米长的绳子,每天减一半。问多少天这个绳子会小于5米?不考虑小数。
复制代码 代码如下:
class ForTest4
{
public static void main(String[] args)
{
int day = 0;
for(int x=3000; x>=5; x/=2)
{
day++;
}
System.out.println(“day=”+day);
}
}
篇7:【黑马程序员】Java基础 : Java语句笔记
表定义语句 创建表: 基本形式:
Create table [if not exists] 表名(列定义列表,[索引或约束列表])[表选项列表];说明:
1.上述列表都是指”多项并列项”,每一项之间用(,)分开 2.其中中括号部分是可以省略的 列定义:
每一个列定义的基本形式:
列名
列类型
[列属性列表] 说明:
1.列类型,就是数据类型,其中还可能会需要跟类型有关的相应设定。2.列属性有6个,相互之间用空格隔开就可以:
a)Auto_increment:表示自增长,用于整数类型。一旦设定了此属性,则也同时要求设定一个”key”属性,就是后面那2个:primary key或unique key b)Primary key:表示主键,用于唯一确定一行的数据
c)Unique key :表示唯一键,用于设定某个字段的值在所有行中是唯一的(不可重复的)d)Not null :表示不能为空(非空属性)e)Default XX值:设定默认值,当该字段没有赋值或赋值为NULL时,自动获得该值
黑马程序员济南中心 编著
f)Comment ‘字段说明文字’:表示一种可以解释该字段含义,但又不属于”注释”的内容。
索引:
索引是一种数据库内部为了加快数据查找(搜索)速度的内部机制,其设定某个字段”有索引”,则该字段作为条件(比如where age=22)进行查找就会极大提高其速度。
索引设定形式:
通用形式:索引类别(字段名1,[字段名2],[字段名3]....);//至少一个字段 索引类别有:
普通索引:key [索引名](字段列表)
就只有索引的作用
唯一索引:unique key [索引名](字段列表)具有索引作用,而且具有唯一性 主键索引:primary key(字段列表)
具有索引作用,而且具有主键特性 外键索引:foreign key[索引名](字段列表)reference 其他表(对应字段列表)具有索引作用,而且具有对应其他表的字段值的作用(外键作用)全文索引:fulltext key [索引名](字段列表)具有索引作用,但mysql对中文无法正常发挥作用 索引的弊端:
降低(减慢)增删改数据的效率(速度)约束:
约束是指数据库中预先设定的对数据的”规定”,”要求”,”条件”等等
约束,是指在”建表”的时候,预先设定好的,以期对”后续写入数据”进行”检查”来决定是否满足设定的约束条件,结果有两种可能:满足写入成功,不满足写入失败。
有以下几种约束:
黑马程序员济南中心 编著
唯一约束
: unique key(字段列表)主键约束
:primary key(字段列表)外键约束
:foreign key(字段列表)references 其他表(对应字段列表)非空约束
:not null 默认约束
:default XX值 检查约束
:check(某字段的条件)说明: 1.前3个约束,其实同时也是索引,无需额外设定 2.非空约束和默认约束是”字段属性”,无需额外设定 3.检查约束mysql不支持该功能。。
表选项:
表选项是对一个表的额外属性的设定,多个设定之间用逗号(,)隔开 如下几个选项可设定:
Auto_increment = 自增长数字的起始值 Charset = 字符编码名 定
Collate = 排序规则名
//可以不设定,使用数据库级别的设定
//可以不设定,默认为1
//可以不设定,就是使用数据库级别的设Comment = ‘表说明文字’ Engine = 存储引擎名 存储引擎
存储引擎其实就是将”成千上万”的数据,存入到硬盘(文件)的内部机制(方式).不同的存储引擎在性能(速度),功能,资源消耗方面有所不同。
//可以不设定,默认是”InnoDB”
黑马程序员济南中心 编著
一个重要的观念:没有一个性能最好,功能最全,资源消耗最小的存储引擎。主要存储引擎如下:
修改表: 总体思想:
1.修改表是一个表建立之后的补救工作,不应该当做一个”常规工作”.2.建表能完成的事情,修改表几乎都能完成 3.语法:
Alter table 表名 修改项1,修改项2.....;其中,修改项可以包括:
字段:可以增删改 索引(约束):可以增删; 表选项:只能修改(从新设定)
黑马程序员济南中心 编著
删除表:
drop table 【if exists】 表名;
其他相关语句:
显示所有表: show tables;
显示某表的结构: desc 表名; 或:describe 表名; 显示某表的创建语句:show create table 表名; 重命名表:rename table 旧表名 to 新表名; 删除索引:drop index 索引名 on 表名。
篇8:【黑马程序员】Java基础 : Java语句笔记
入学千锋好程序员大数据高端班有一个月了,首先学习的是Java语言基础阶段,以下是我在这一月中的学习经验,希望对迷茫的Java爱好者有所帮助:
第一步:首先要做好学习前的准备工作:Java语言一般用于大型的服务器程序开发,所有有必要了解如下内容:Unix开发环境Unix系统原理、Unix开发环境、Unix常用命令。熟练掌握Unix常用命令;熟练构建下的Java开发环境。
第二步:然后进入Java语言基础的学习阶段,学习任何一门语言都要打好基础,曾经学过高级程序语言(C,C++等)来说,Java语言基础有自己的特点,但是基本规律都是相通的,如:算法基础、常用数据结构、企业编程规范。掌握常见的数据结构和实用算法,培养良好的企业级编程习惯。
第三步:掌握Java语言基础后接下来就是面向对象语言的共性:Java面向对象面向对象特性:封装、继承、多态等。掌握面向对象的基本原则以及在编程实践中的意义;掌握Java面向对象编程基本实现原理。
第四步:JDK核心API语言核心包、异常处理、常用工具包、集合框架。熟练掌握JDK核心API编程技术;理解API设计原则;具备熟练的阅读API文档的能力;JavaSE核心异常处理、多线程基础、IO系统、网络编程、Swing组件、JVM性能调优(JVM内存结构剖析、GC分析及调优、JVM内存参数优化)、Java泛型、JDK新特性。熟练掌握JavaSE核心内容,特别是IO和多线程;初步具备面向对象设计和编程的能力;掌握基本的JVM优化策略。XML XML语法、XML解析(SAX、DOM)、Dom4j组件、Digester组件。熟练掌握XML语法规则;理解DOM模型;熟悉Java对XML的各种解析方式。
第五步:SQL语言SQL语句基础和提高、SQL语句调优。熟练的掌握SQL语句;掌握一定的数据库查询技巧及SQL语句优化技巧。Oracle数据库开发Oracle体系结构及系统管理、Oracle数据库高级编程、数据库设计基础。掌握Oracle体系结构及核心编程技术
第六步:连接数据库:JDBC JDBC核心API(Connection、Statement、ResultSet)、JDBC优化技术(缓存技术、批处理技术、连接池技术)。理解JDBC作为规范的设计原则;熟练掌握JDBC API;具备使用JDBC对数据库进行高效访问的能力。
第七步:软件工程基础软件过程和软件活动;需求设计、概要设计、详细设计基本原则和文档规范;配置管理的基本概念和必要性;CVS基本操作;Ant简介理解软件过程的普遍概念和基本的软件活动;理解迭代的意义;掌握Ant、CVS等常用配置管理及部署工具。
第八步:OOAD及设计模式面向对象基本设计原则、工厂模式、策略模式、适配器模式、代理模式等、门面模式。理解面向对象设计的一般原则;理解重用的意义;掌握常见的设计模式。
第九步:HTML/CSS HTML基本文档结构、掌握CSS基础语法、关于HTML文档块、链接、列表、表格、表单等。掌握HTML基本原理;掌握CSS各种选择器及常见样式设置;熟练使用HTML常用元素。
JavaScript核心JavaScript语言基础(数据类型、函数、对象、闭包)、Java DOM编程、事件模型、JavaScript面向对象编程。深入理解JavaScript语言原理;熟练的使用JavaScript对HTMLDOM进行编程;熟练掌握JavaScript对象对象封装技巧,为后续的JavaScript学习打下坚实的基础。
Servlet/JSP Servlet生命周期及Servlet服务器、Tomcat部署配置、JSP语法、自定义标记、JSTL和EL表达式、JSP新特性、Java Web设计模式。透彻理解Servlet核心原理;熟练掌握Servlet API;透彻理解JSP引擎工作原理;透彻理解标记库原理;熟悉常见的Java Web设计模式;为后续的Java Web开发打下坚实的理论基础。
第十步:Ajax Ajax基础、XHR对象、Ajax设计模式、JSON技术掌握Ajax的基本通信原理;掌握基于XML和JSON的Ajax数据规则。
第十一步:JavaScript框架JQuery、JQuery插件、DWR。掌握JQuery核心API;了解JQuery基本设计原则;了解多种JQuery插件;掌握DWR的基本原理及应用技巧。
第十二步:ssh三大框架的学习,这是企业实际应用的框架模型:
1.Struts 2.1.6 Struts2核心控制流程、Ognl、Action、Interceptor、,Result、FreeMarker、Struts2标记库、Struts2扩展、Struts2应用技巧(输入验证、消息国际化、文件上传和下载、防止重复提交等)。熟练掌握Struts2核心要件,特别是Interceptor和Result;掌握基于模板技术的Struts2 UI组件;掌握基于Ognl的数据共享方式、掌握Struts2各种定制及扩展方式;熟练掌握基于Struts2的Web开发技巧。
2.Hibernate 3.2.1 ORM概念、Hibernate核心API、Hibernate实体映射技术、Hibernate关系映射技巧、HQL查询、OSCache及Hibernate缓存技术。重点掌握Hibernate多种关联映射技巧及其实用背景,做到在合适的时候使用合适的关联方式;掌握多种Hibernate查询技巧及优化技术。
3.Spring 2.5 Spring Ioc基础、Ioc注入技巧、对象高级装配(自动装配、模板装配、组件扫描特性、FactoryBean、对象生命周期)、Spring AOP原理、AspectJ、Spring JDBC支持、Spring事务及安全管理;Spring整合Hibernate、Spring整合Struts、Spring MVC简介。深入理解Ioc和AOP的基本原理和实现方式;熟练掌握SpringIoc及AOP实现方式;熟练掌握Spring事务管理;熟练掌握Spring与其他组件的整合技术。
相关文章:
Java从入门到精通读书笔记—c++程序员学java01-20
2025年对领导意见和建议评价 领导个人评价意见建议报告(大全15篇)01-20
对医院领导班子的评价意见和建议(三篇)01-20
Java程序员就业形势分析01-20
黑马程序员java教程01-20
java程序员笔试面试题01-20
成都java培训机构哪家好?Java程序员应该具备哪些知识01-20
java程序员求职信01-20
长沙java培训:java程序员面试题01-20