第一章java语言基础

合集下载

第1章Java 语言基础知识

第1章Java 语言基础知识
第1章Java 语言基础知识
2
目录
1.1 Java语言与面向对象的程序设计 1.2 Java5和Java6的新特色 1.3 Java程序概述 1.4 基本数据类型与表达式 1.5 数组的概念 1.6 数组的创建和引用 1.7 本章小结
3
1.1 Java语言与面向对象的程序设计
• Java语言是一个面向对象的程序设计语言。 • 除了面向对象的特点以外,Java语言还在安全性、
19
1.3.1 Java开发环境(续)
• Java 平台
Java 程序 Java APIs
Java 虚拟机
计算机系统
• Java APIs (应用程序接口)
▫ 经过编译的,可在程序中使用的Java代码标准库。
• Java VM(虚拟机)
▫ Java 程序由Java虚拟机程序执行(或解释执行)。
1.3 Java程序概述
}
1.1 Java语言与面向对象的程序设计
8
1.1.1 面向对象的程序设计思想(续)
• 面向对象技术给软件发展带来的益处
▫ 可重用性 ▫ 可靠性
• 面向对象语言的基本特征
▫ 抽象和封装 ▫ 继承性 ▫ 多态性
1.1 Java语言与面向对象的程序设计
9
1.1.2 Java语言的特点
• 面向对象 • 安全性
▫ Servlet用到的包在J2EE的API中能找到 ▫ 所有的servlet都必须实现Servlet接口
1.3 Java程序概述
36
1.3.4 Servlet举例(续)
——例1-3
程序首先构建HttpServletRequest,并建立一个数据表 单;点击submit按钮后,servlet再次被调用,并产生一个 含有表单的网页。

《Java语言程序设计(一)》课后习题答案(课程编号04747)

《Java语言程序设计(一)》课后习题答案(课程编号04747)

《Java语⾔程序设计(⼀)》课后习题答案(课程编号04747)第⼀章 Java语⾔基础 (5)1.1 指出JA V A语⾔的主要特点和JA V A程序的执⾏过程。

(5)1.2 说出开发与运⾏JA V A程序的重要步骤。

(5)1.3 如何区分应⽤程序和⼩应⽤程序? (5)1.4 说出JA V A源⽂件的命名规则。

(5)1.6 JA V A语⾔使⽤什么字符集?共有多少个不同的字符? (5)1.7 JA V A语⾔标识符的命名规则是什么? (6)1.8 JA V A有那些基本数据类型,它们的常量⼜是如何书写的? (6)1.9 指出下列内容哪些是JA V A语⾔的整型常量,哪些是浮点数类型常量,哪些两者都不是。

(6)第⼆章运算和语句 (7)2.1 Java的字符能参加算术运算吗? (7)2.2 占字节多的变量能直接赋值给占字节少的变量么? (7)2.3 试⽤Java语⾔表达式描述以下数学计算式或逻辑条件: (7)2.4 设在求以下表达式之前,整型变量a的值是4,试指出在求了以下表达式之后,变量a、b和c的值。

(7)2.6 若⼀个数恰好等于它的因⼦之和,则这个数称为“完全数”。

编写程序求1000之内的所有完全数。

(7)2.7 编写输⼊正实数x,求平⽅不超过x的最⼤整数n,并输出。

(8)2.8 输⼊正整数n,输出由n⾏n列星号字符组成的三⾓形图案。

(11)2.9 设有整型变量x和y的值分别为5和110。

试指出执⾏了以下循环语句后,变量x和y的值分别多少? (12)2.10求⼩于999的所有⽔仙花数。

(12)2.11 编程序解百鸡问题:鸡翁⼀,值钱五;鸡母⼀,值钱三;鸡雏三,值钱⼀。

百钱买百鸡。

求鸡翁、鸡母和鸡雏各⼏何? (13)2.12 编写程序,按下⾯的公式计算⾃然对数底e的值:e=1+1/1!+1/2!+1/3!+1/4!+......(13)2.13 编写程序,⽤如下公式计算圆周率PI的近似值:PI=4-4/3+4/5-4/7+4/9-4/11...(14)2.14 回⽂整数是指正读法和反读相同的整数,编写⼀个程序,输⼊⼀个整数,判断他是否为回⽂整数。

JAVA基础练习

JAVA基础练习

JAVA基础练习第⼀章Java语⾔基础⼀、基本练习1.计算两个变量的乘积创建⼀个Java类,在main()⽅法中定义两个局部变量,并输出这两个变量的乘积。

2.测试成员变量与局部变量的有效范围编写Java程序,声明成员变量age与局部变量name,⽐较这两个变量的区别,并添加相应的注释。

3.⾃动类型转与强制类型转换的应⽤编写Java程序,定义⼀个double型的变量和float型的变量,将double 型的变量加上float型的变量*10的积,赋值给另⼀个double型的变量和float型的变量。

4.解决成员变量与局部变量重名的问题编写Java程序,当成员变量与局部变量重名时,输出成员变量的值。

运⾏结果:实例的运⾏结果如图1所⽰。

5.请举例说明前置运算符与后置运算符的区别编写Java程序,应⽤前置运算符和后置运算符实现⾃增与⾃减运算,并输出计算结果,从⽽⽐较前置运算符与后置运算符的区别。

运⾏结果:实例的运⾏结果如图1所⽰。

图1运⾏结果6.加密可以这样简单——将指定字符译成密码将字符串“mrsoft”译成密码,密码规律是:⽤原来的字母后⾯第4个字母代替原来的字母。

例如,字母m后⾯的第4个字母是q,⽤q代替m。

运⾏结果:实例的运⾏结果如图1所⽰。

图1运⾏结果7.⽤三元运算符判断奇数和偶数编写Java程序,使⽤三元运算符“?:”判断指定的整数是奇数还是偶数。

8.⽤三元运算符判断库存状态编写Java程序,使⽤三元运算符“?:”判断库存状态,如果库存数量⼩于2,显⽰库存不⾜,否则显⽰库存数量。

9.没有不可能——0也可以作为除数编写Java程序,实现以0作为除数的除法运算和求余运算。

10.⽤最有效的⽅法算出2×16等于⼏编写Java程序,⽤最有效的⽅法算出2×16的结果。

第⼆章线程控制⼀、基本练习1.⽤if语句判断奇数和偶数编写Java程序,使⽤if语句实现判断变量x是奇数还是偶数。

运⾏结果:实例的运⾏结果如图1所⽰。

第1章 Java语言概述

第1章 Java语言概述

第1章Java语言概述本章知识目标:❑了解面向对象程序设计的特性。

❑掌握Java应用程序和Applet程序的调试过程。

❑了解Java的开发与运行环境。

❑了解Java语言的特点。

Java语言从1995年问世至今,得到众多厂商的支持,成为软件开发的主流技术。

Java 是面向对象的程序设计语言,拥有跨平台、多线程等众多特性,在网络计算中得到广泛应用。

1.1 面向对象程序设计的特性早期的编程语言如Fortran、C等都是面向过程的语言,面向过程编程的一个明显特点是数据与程序是分开的。

但随着计算机软件的发展,程序越做越大,软件维护也日益困难。

面向对象编程贴近于人类思维方式,面向对象的软件开发将事物均看作对象,对象有两个特征:状态与行为,对象可以通过自身的行为来改变自己的状态。

最新的程序设计语言一般为面向对象的语言,面向对象程序设计具有如下四大特性。

1.封装性(Encapsulation)面向对象的第一个原则是把数据和对该数据的操作都封装在一个类中,类的概念和现实世界中的“事物种类”是一致的。

例如,电视机就是一个类,每台电视机都有尺寸、品牌、频道等属性。

我们可用on/off开关来开启电视,通过更改频道让电视机播放不同的节目。

对象是类的一个实例化结果,对象具有类所描述的所有属性以及方法。

对象是个性化的,在程序设计语言中,每个对象都有自己的存储空间来存储自己的各个属性值,有些属性本身又可能由别的对象构成。

每个对象都属于某个类。

面向对象程序设计就是设计好相关的类,类中有属性和方法。

在统一建模语言UML中使用如图1-1所示的符号来描述对象和类的结构,其中,属性用来描述对象的状态,而方法则用来描述对象的行为。

2.继承性(Inheritance)继承是在类、子类以及对象之间自动地共享属性和方法的机制。

类的上层可以有父类,下层可以有子类,形成一种层次结构,如图1-2所示。

一个类将直接继承其父类的属性和方法,而且继承还具有传递性,因此,它还将间接继承所有祖先类的属性和方法。

java语言第1章

java语言第1章

Mankind person1=new Mankind(); Mankind person2 =new Mankind(); =“张三”; person1.sex=1; person1.age=21; person1.song(“两只蝴蝶”); person1.dance(“拉丁舞”); =“李静” person2.sex=0; person2.age=20; person2. song(“丁香花”); person2. dance(“华尔兹”);
只有将创建的实例赋值给引用变量,这两个实 例才能象上述那样,可以使用各自的属性和方法,来
描述各自具体的特点,显示两个对象的具体差异。
下面是可以运行调试的java程序
public class Mankind {
String name; int sex; int age; void song(String x) { System.out.println(“My song is x”); } void dance(String x) { System.out.println(“My dance name is ”+x); }
=“张三”; person1.sex=1; person1.age=21; person1.song(“两只蝴蝶”); person1.dance(“拉丁舞”); 兹”);
=“李静” person2.sex=0; person2.age=20; person2. song(“丁香花”); person2. dance(“华尔
例题:Mankind.java

底片
对象(或实例)
洗好的照片
橡皮图章 建房方案
印好的图案 建好的房子
5.类的实例变量与类的实例的关系

第1章Java语言基础

第1章Java语言基础
1.3 Java面向对象编程简单说明 1.4 Java控制结构 1.5 数组和ArrayList类 1.6 main方法
1.1 Java编程平台和两类Java程序 1.1.1 Java语言介绍
1.Java 语言的发展
Java 2分为以下3个体系。
① J2SE:Java 2 Software Development Kit,Standard Edition;Java 2开发的标准版,适用于一般计算机的Java 程序开发和程序运行平台。
② java:字节码解释器,用来运行 Java应用程序。 ③ app1etviewer:运行嵌入Java小应 用程序的网页,来运行Java小程序。
2.使用JCreator编写、编译和 运行程序 3.使用Eclipse编写、编译和 运行程序
1.1.3 两类可运行的Java程序
① Java Application,称为Java应用 程序,是包含main方法的可运行程序; ② Java Applet,称为Java小应用程 序。
1.2.3 运算符和表达式
(1)运算符 (2)操作数 (3)表达式
1.算术运算符
2.自增、自减运算符
自增运算符“++”和自减运算符“−−” 是单目运算符
3.关系运算符
4.逻辑运算符
逻辑与“&”和逻辑或“|”是双目运算 符
5.三目条件运算符
三目条件运算符的一般形式为: <逻辑表达式1> ? <表达式2> : <表达式3>
2.Java语言的特点
Java语言是简单、面向对象、多线程 和分布式的网络编程语言,
1.1.2 Java编程环境说明
最基本的Java编程环境包括:Java应 用编程接口(API)和Java虚拟机。

自考04747Java语言程序设计(一)自学辅导资料

4747 Java语言程序设计(一)第一章 Jave语言基础1.1 Java语言的特点领会Java语言的特点、关键字1010-11.Java语言采用多种机制来保证可移植性,其中最主要的是______。

虚拟机1110-11.Java语言是一种 ____强类型语言___ 语言,它约束程序员必须遵守规定编写程序,能让编译器检测出程序中尽可能多的错误。

1.2 Java应用程序和小应用程序识记Java应用程序与小应用程序的特点和区别11.一个应用程序必须在某个类中定义的方法是______。

main()1201-11.能在浏览器上执行的Java程序被称为小应用程序。

1.3 Java程序的开发过程11.Java程序的字节码文件的扩展名是_________。

Class1001-11.Java的编译程序先将Java源程序翻译成与机器无关的__________。

字节码1101-11.Java源文件的扩展名是_____.java____。

1210-11. 如果Java源文件中有多个类,那么只能有一个__public____类。

1404-11.类Testll经Java编译程序编译后,产生的文件是______。

Test11.class1.4 标识符和关键字简单应用:Java程序的标识符命名规则、注释、基本数据类型标识符可以用来标识文件名、变量名、类名、接口名和成员方法名等,其构造规则如下:1)标识符由Java字母和Java数字组成;2)首字符必须是Java字母;3)除去关键字、false、true和null;4)所有标识符是区分大小写的。

注释:1)行注释//2)块注释/* …. */3)文档注释/** …*/1404-1.以下标识符中,不是..Java语言关键字的是A.wait B.new C.long D.switch1.下述字符组合不能作为Java程序标识符的是()A.Aa12 B.大x C.y小 D.5x1.下面供选字符序列中,不属于...Java语言关键字的是()A.goto B.null C.false D.native1.在下述字符串中,不属于...Java语言关键字的是( C )A.float B.new C.java D.return1110-1.下面供选字符序列中,不属于...Java 语言关键字的是 ( )A. throwB. synchronizedC. protectD. try1010-1.以下是关于Java语言关键字的叙述,其中正确的是( )A.关键字可以用来描述类的成员类型,但是不能描述普通变量B.关键字由字母(包括英文字母、下划线字符、美元字符、文字字符)和数字组成C.关键字不可以用作变量、方法、类或标号的标识符D.break和main都是Java语言的关键字1.5 基本数据类型0开头表8进制常量,数字只能(0-7)1.下列字符组合不能作为Java整型常量的是( )A.078B.0x3ACBC.5000D.0x3ABC1.在Java语言中,用于标记回车符的转义字符是A.\b B./b C.\n D./n1001-12.表达式¨23 & 18’’的值是__________。

第一章-Java基础笔记

第⼀章-Java基础笔记Java语⾔的概述Java是⼀门⾯向对象的语⾔,Java相对于C语⾔来说学习相对简单,它主要的三⼤特点就是:封装、继承、多态,并且只需要进⾏⼀次源码编译,在任何装有对应版本的JVM 虚拟机环境的计算机下运⾏;Java的三个版本JavaSE主要⽤于桌⾯应⽤的开发JavaME主要⽤于嵌⼊式系统的开发JavaEE主要⽤于企业级的WEB端开发和服务器开发Java环境介绍JDK - 提供了开发者的⼀些⼯具包,并包含了[JRE和JVM]JRE - Java的运⾏环境,提供了运⾏时需要的类库,并包含了[JVM]JVM - Java的虚拟⼀块内存区域,⽤于执⾏Java的代码Java跨平台交互图Java代码的运⾏机制后缀点java的⽂件会通过 javac命令进⾏⽂件的编译成⼀个能够被JVM读懂的字节码⽂件,通过加载、校验、初始化的过程都内存中,通过JVM寄存器读取⽂件中的⾏号,进⾏执⾏相关代码;注释注释是为了在编写程序时对某个类、⽅法或是⼀段代码进⾏功能作⽤的说明,它不会被编译成代码执⾏,只是起到⼀个描述作⽤,便于对代码的理解;Java中的注释分为3种:单⾏注释://多⾏注释:/* */⽂档注释:/** */对注解的内容⽣成JavaDoc⽂档DOS命令进⼊到要⽣成Doc⽂档的层级⽬录,执⾏:javadoc -encoding UTF-8 -charset UTF-8 ⽂件名称/*** @Author JavaCat7* @Description 这是⼀个⽂档注释*/public class Demo{/*** @Parameter args 对参数的描述* @Description 这是⼀个⽂档注释*/public static void main(String[] args){//这是⼀个单⾏注释System.out.println("Hello Java");/*这是多⾏注释这是多⾏注释*/}}标识符每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;规范:每个⼈都有名字,⽽标识符是为了给代码中的类、接⼝、⽅法、变量取⼀个名字,但它们的明⽩是有着严格规范的;**规范:**1.严格区分⼤⼩写;2.开头可以是$ 或 _ 或 A-Z a-z的字母组成,也可以汉字(不会这么⼲);3.可以由数字、字母或者是 $ 或 _ 组成,但数字不能⽤于开始;4.不可以包含特殊字符;5.不能以Java语⾔中的保留字作为命名;6.类名采取⼤驼峰命名法;7.⽅法和变量采取⼩驼峰命名法;8.常量采取⼤学加_进⾏命名;基本数据类型Java是强类型计算机语⾔,所有的变量必须先定义才能使⽤,对于强类型⽽⾔主要就是指的数据安全,强类型的语⾔有很多,⽐如C、C++、python...计算机存储单位换算bit(位) - 是计算内部数据存储的最⼩单元,通过8个⼆进制位进⾏表⽰;byte(字节) - 是计算机中数据处理的基本单位,通常使⽤B来表⽰;8个bit(位) = 1B(字节)1024个B(字节) = 1KB1024个KB = 1MB1024个MB = 1GB....//整数类型byte a = 1;short b = 2;int c = 3;long d = 4L;//⼩数类型float e = 5.0f;duble f = 6.0d;//字符类型char g = 'a';//布尔类型boolean h = true;boolean i = false;数据类型的转换各数值相关数据类型⽀持类型上的转换,既可以把排序级别较低的类型转换成排序级别较⼤的类型,也可以把排序级别较⾼的类型转换成级别较低的类型(但会造成数据的丢失);数据的转换强制类型转换 - 在要转换的变量前使⽤:要转换的对应数据类型如- (int)⾃动类型转换 - 在不同的数值数据类型运算中,它会以排序级别较⾼的数据类型作为基础⾃动转换int number1 = 128;//正常byte的值是 -128 - 127,强制把int类型转换成byte会造成数据的不精确byte number2 = (byte)number1;int number3 = 519;float number4 = 1.0f;//在运算过程中因为float的排序级别⽐int⾼,那么它会⾃动转换成float类型在完成运算float number5 = number3 + number4;变量,静态变量,常量及作⽤域变量是指可以变化的值,通过数据类型和变量名可以在内存中申请⼀块存储的空间,通过内存的引⽤地址可以设置改变内存中存储的值或者修改值,所有的变量必须先赋值才可以使⽤;成员变量成员变量是指在类中与⽅法同级的位置中定义的成员变量,在该位置定义的变量可以不⽤设置值就可以使⽤,因为它会对类进⾏初始化,并完成初始化赋值,就算不给他们赋值也会有默认的初始值,他们的默认初始值都是最⼩的单元;作⽤域成员位置的变量,可以在⾮静态⽅法的所有位置使⽤,如果要在静态⽅法中使⽤,需要先创建对象;public class Variable{int a; //默认为:0float b; //默认为:0.0char c; //默认为:''boolean d; //默认为:false}局部变量局部变量是指在⽅法内部定义的变量,必须要先完成初始化后,才可以被使⽤;作⽤域局部位置的变量,外部⽆法使⽤,只能在⽅法内部使⽤,可以和外部的变量名称相同;public class Variable{int number;public void method(){int number = 3;//可以和成员位置的变量名称相同}}静态变量静态变量是指被static关键字修饰的变量,被修饰的变量⼜称为类变量;作⽤域静态变量可以作⽤域与所有⽅法中,静态变量只能定义在类的成员位置;public class Variable{static int number ;public static void main(String[] arags){System.out.println(number);}public void method(){System.out.println(numbe);}}常量常量是指不能被改变的值,它在创建到成员位置必须要先完成赋值,⼀旦被创建它的值是不允许被更改的;作⽤域它的作⽤域和成员变量相同public class Variable{final int NUMBER = 3.1415926;}静态常量静态常量是指从属于类的常量,在完成初始化以后是不可以被修改的,并且被public所进⾏修饰;作⽤域它的作⽤域和静态变量相同运算符算术运算符int a = 5;int b = 2;int number = a + b; //number = 7;int number = b - a; //number = 3;int number = a * b; //number = 10;int number = a / b; //number = 2,只取整数;double number = a / (double)b; //number = 2.5int number = a % b; //number = 1;⾃增⾃减运算符int a = 1;int b;b = a++; //b = 1; 先把a的值赋值给b,后a进⾏ +1 操作;b = a--; //b = 2; a前⾯进⾏了⾃增那么就是2,先把2赋值给b,然后进⾏ -1 操作;b = ++a; //b = 2; 前⾯a进⾏了⾃减那么就是1,先对a进⾏⾃增加1,然后在赋值给b;b = --a; //b = 1; 前⾯a是2,先对a进⾏⾃减1,在赋值给b;赋值运算符int a = 5;//把 5 赋值给 a;int b = 2;//把 2 赋值给 b;a += b; // a = 7(a+b的结果在赋值给a);a -= b; // a = 3;a *= b; // a = 10;a /= b; // a = 2;a %= b; // a = 1;关系运算符int a = 5;int b = 2;a > b; //truea < b; //falsea >= b; //falsea <= b; //truea == b; //falsea != b; //true逻辑运算符boolean a = true;boolean b = false;a &&b = false;//都true则true,第⼀个条件为false就不会在看第⼆个条件,直接返回falsea ||b = true;//⼀个条件为true则true,第⼀个条件为tre就不看第⼆个条件,直接返回true! a = false;//取反a &b = false;//2个条件都要执⾏a |b = true;三元运算符int a = 5;int b = 5;a ==b ? "等于":"不等于"; //为true返回第⼀个,为false返回第⼆个流程控制语句If语句if语句就是判断条件是否成⽴,成⽴就执⾏if中的代码,不成⽴就不进⼊;boolean flag = true;if(flag){System.out.println("...");}if...else语句if...else语句就是根据判断的条件是否成⽴,成⽴⾛if语句,不成⽴⾛else语句;boolean flag = true;if(flag){System.out.println("成⽴");}else{System.out.println("不成⽴");}if...else if语句if...else if⽀持多条件的判断,只会进⼊⼀个匹配的条件;boolean flag = true;boolean fail = false;if(flag){System.out.println("条件匹配");}else if(fail){System.out.println("条件匹配");}else{System.out.println("条件都不匹配");}switch条件控制语句witch语句从JDK1.7开始可以⽀持匹配:String字符串;注意事项:每个case 后⾯必须跟⼀个数值常量或字符串常量⽤于匹配;匹配的语句后⾯需要加上break关键字,防⽌case穿透;String week = "星期⼀";switch(week){case "星期⼀":System.out.println("今天是星期⼀");break;case "星期⼆":System.out.println("今天是星期⼆");break;case "星期三":System.out.println("今天是星期⼆");break;default:System.out.println("今天星期⼏都不是");}循环控制语句for循环语句for(初始值,条件表达式,更新)for(int i = 1 ; i <= 10 ; i++){System.out.println(i);}增强for循环for(接收类型的变量,表达式)int [] arrays = {1,2,3,4,5,6,7,8,9,10};for(int i : arrays){System.out.println(arrays);}while循环语句while(条件表达式)int number = 1;while(number <= 100){System.out.println(number);number ++;}do...while循环语句do{先把语句执⾏⼀遍}while(条件表达式);boolean flag = true;do{System.out.println("先执⾏⼀遍");flag = false;}while(flag);break和continue关键字break关键字结束循环的意思;for(int i = 1; i <= 100; i++){if(i == 10){System.out.println("打印10后结束循环");break;}}continue关键字跳过当前循环,进⼊下⼀次循环;for(int i = 1 ; i <= 10; i ++){if(i % 2 == 1){continue;}System.out.println("打印:"+i);}⽅法概述:⽅法就相当于使⽤多⾏代码进⾏组合去实现的⼀个功能⽚段,对代码进⾏封装利⽤,可实现多次调⽤;⽅法的定义修饰符返回值⽅法名称(形参形参名称){⽅法体}public class Function{public static void main(String[] arags){}public void method1(){}public void method2(String name,int age){}public static void method3(){}public int method03(){int a = 3;return a;}public int method04(int a,int b){if(a == b){System.out.println(a + "和" + b + "相等");return -1;}return a > b ? a : b;}}⽅法的重载⽅法的重载是指⽅法名称相同,传递的参数类型不同,个数不同,顺序不同与返回值⽆关;这样的⽅法被称为⽅法的重载;public class Function{public int max(int a,int b) {return a > b ? a : b;}public double max(double a,double b){return a > b ? a : b;}}形参和实参形参是指在()内部的参数,实参是指被真实传递的参数;public class Function{public static vid main(String[] args){Function function = new Function();function.max(3,5);}public int max(int a,int b) {return a > b ? a : b;}}可变参数在⽅法的()中我们有时候不知道要传递多少参数,那么我们可以传递⼀个数据类型紧跟后⾯加上...来表⽰;但需要注意的是⼀个⽅法中指允许⼀个可变参,如果有其他类型的参数,那么可变参数需要写在最后⾯;可变参数本质上就是⼀个数组;public class Function{public void method(String name,int... numbers){for(int num : numbers){System.out.println(num);}}}递归递归的本质就是⾃⼰调⽤⾃⼰,它可以解决⼀些业务,但效率和开销较⼤,对⼀些⽐较⼩的运算可以使⽤;//递归求3的阶乘public class Founction{public static void main(String[] args){}public int founction(int number){int result = 1;if(number == result){return result;}return number * founction(number - 1);}}数组数组就是⼀组数据的集合,Java中的数组必须存储和数据类型相符合的值,不允许与定义的数据类型不匹配;⼀旦数组被创建出来,它的长度就不允许被改变,数组有下标(索引)的概念,都是从0开始,如果操作的数据超过数组的长度那么就会报出下标索引越界异常[ IndexOutofBoundsException ];数组的定义int[] array = new int[3];int array[] = new int[3];int array[] = {1,2,3};数组的内存模型图数组的遍历⽅式int[] arr = new int[10];//⽅式⼀for (int i = 0; i < arr.length ; i ++) {System.out.println(arr[i]);}//⽅式⼆for (int num : arr) {System.out.println(num);}⼆维数组int[][] arr = new int[3][2];String[][] strArr = {{"hello","hello"},{"hi","hi","hi",{"java","java","java","java"}}Arrays⼯具类Arrays数组的⼯具类,是jdk已经帮我们提供好的⼀套数据⼯具类,⽅便我们对数据相关进⾏⼀些操作;int[] arr = {3,51,1,33,82,22,55,53};Arrays.toString(arr);//把数组变成⼀个字符串Arrays.sort(arr);//对数组内容进⾏升序排列Arrays.fill(arr,0);//把数组的内容全部进⾏替换为0常见算法冒泡排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//冒泡排序算法public static void popArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每次⽐较⼀轮,需要减少1次⽐较的次数for (int j = 0; j < arr.length - i - 1; j++) {//如果前⾯的数据⽐后⾯⼤,那么就交换位置if (arr[j] > arr[j + 1]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}选择排序public static int[] arr = new int[]{5, 2, 7, 4, 6, 9, 8, 13, 19, 11, 17, 15};//选择排序public static void selectOrderArithmetic(int[] arr) {//⽐较的轮数是数组长度-1for (int i = 0; i < arr.length - 1; i++) {//每⽐较⼀次,需要减少1次⽐较的次数,会把⼩的先往前排for(int j = i+1;j<arr.length;j++){if(arr[i]>arr[j]){int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}}}System.out.println("最终结果是:" + Arrays.toString(arr));}⼆分查找public static int[] arr = new int[]{1, 2, 3 , 4, 6, 7, 8, 13, 19};//2分查找法public static void branchFind(int [] arr,int number){int startNode = 0;int endNode = arr.length-1;int middle = 0;while (startNode <= endNode){//中间的指针由开始节点和结束节点计算得来middle = (startNode+endNode)/2;if(number == arr[middle]){System.out.println("找到了");break;}else if(number < arr[middle]){endNode=middle-1;System.out.println(number+"⼩于中间值,结束节点变更为中间节点-1"); }else if(number > arr[middle]){startNode = middle+1;System.out.println(number+"⼤于中间值,开始节点变更为中间节点+1"); }else{System.out.println("没有找到该元素");break;}}}。

自考-java程序语言设计考试大纲

第一章Java语言基础1、Java语言的特点达到“领会”层次。

2、Java应用程序与小应用程序的特点和区别达到“识记”层次。

注释要求达到“简单应用”层次。

3、Java程序的开发环境能达到“简单应用”层次。

4、Java程序的标识符命名规则达到“简单应用”层次。

5、Java语言的关键字达到“领会”层次。

6、Java语言的基本数据类型达到“简单应用”层次。

第二章运算和语句1、理解常用运算符的语义,要求达到“识记”层次。

2、常用运算符,名手算述运算符、自增自减运算符、关系运算符和逻辑运算符,要求达到“综合应用”层次。

对条件运算和其他运算,要求达到“领会”层次。

3、Java语言语句的书写形式和语句的语义,要求达到“综合应用”层次。

4、使用包语句和导入语句,要求达到“识记”层次。

5、阅读Java程序,指出简单程序的功能或输出结果,编写简单的程序,要求达到“简单应用”层次。

第三章面向对象编程基础1、面向对象的基本概念:抽象、对象、消息、类、继承、封装、接口、多态性,要求达到“领会”层次。

2、类的声明、成员变量(实例变量、类变量)和方法(类方法和实例方法),构造方法、方法重载,要求达到“综合应用”层次,类的内存模型,要求达到“识记”层次。

3、声明对象、创建对象、对象的使用,要求达到“综合应用”层次。

4、对类的成员能设置访问权限:私有、共有、受保护、友好,要求达到“简单应用”层次。

5、继承声明新类的方法,多态性的概念,要求达到“综合应用”层次。

6、Java面向对象的其他设施:final类和final方法,abstract类和abstract方法,super关键字和this的用法,相关类之间的is-a和has-a关系,要求达到“识记”层次。

7、接口的概念,接口声明,接口使用,要求达到“综合应用”层次。

8、小应用程序与Applet类的关系,小应用程序结构和执行过程,要求达到“识记”层次。

init()方法、start()方法、stop()方法、destroy()方法、paint()方法和repaint()方法,要求达到“简单应用”层次。

Java语言程序设计第一章


14
面向对象与类的概念 (3)
继承与多态 (续)
– 多态机制把不同的子类对象都当作父类类型看待, 屏蔽了不同子类对象之间差异。
– 比如,以Vehicle类为父类,实现两个子类:Truck 类和Car类,均继承父类的“加速”方法。但是实 际上货车和轿车的加速程序是不同的。因此,加速 方法应该在子类中根据不同车型重新定义。当发布 命令:“A汽车加速”。命令中并没有指定该汽车 是货车还是轿车。程序运行过程中,多态机制会自 动判断A汽车的类型,如果A车是货车则执行货车 的加速方法,是轿车的话则执行轿车的加速方法。
22
Java程序运行过程
23
编写Java程序的注意事项
最基本的程序至少包含一个类。 一个源文件中最多定义一个公共类(public class),并
且该公共类的命名要与源文件名相同,区分大小写。 程序从 main( ) 方法开始执行,关键字 static 表示无需
创建类的实例,可以直接调用 main( ) 方法,关键字 void表示main( ) 方法在执行时不返回任何值。 整个类及其所有成员都是在一对大括号中(即 { 和 } 之间)定义的,它们标志着类定义块的开始与结束。
5
Java EE (Java 2 Platform,Enterprise Edition)
JSP、Servlet、JavaBean JDBC、EJB、XML Struts、Spring、Hibernate、Ajax、WebService
6
Java ME (Java 2 Platform,Micro Edition)
7
Java的特性 (1)
平台无关性
.java
编译
.class
Java字节码文件
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第一章java语言基础1.java标识符的命名规则A. 标识符只能由数字,字母,下划线_ ,美元符号$ 构成,其中不能以数字开头。

B. 不能以关键字为标识符。

C. 区分大小写。

D. 命名规范:第一个单词首字母大写其后的单词首字母大写,最好能见名知意。

这种命名方式为峰驼标识2.java中的关键字(所有关键字都是小写的)Abstract:表明类或者成员方法具有抽象属性Assert:用来进行程序调试boolean:基本数据类型之一,布尔类型Break:提前跳出一个块Byte:基本数据类型之一,字节类型Case:用在switch语句之中,表示其中的一个分支Catch:用在异常处理中,用来捕捉异常Char:基本数据类型之一,字符类型Class:类Cons:保留关键字,没有具体含义Continue:回到一个块的开始处Default:默认,例如,用在switch语句中,表明一个默认的分支Do:用在do-while循环结构中Doubl:基本数据类型之一,双精度浮点数类型else:用在条件语句中,表明当条件不成立时的分支Enum:枚举Extends:表明一个类型是另一个类型的子类型,这里常见的类型有类和接口Final:用来说明最终属性,表明一个类不能派生出子类,或者成员方法不能被覆盖,或者成员域的值不能被改变Finally:用于处理异常情况,用来声明一个基本肯定会被执行到的语句块Float:基本数据类型之一,单精度浮点数类型For:一种循环结构的引导词Goto:保留关键字,没有具体含义If:条件语句的引导词Implements:表明一个类实现了给定的接口Import:表明要访问指定的类或包Instanceof:用来测试一个对象是否是指定类型的实例对象Int:基本数据类型之一,整数类型Interface:接口Long:基本数据类型之一,长整数类型Native:用来声明一个方法是由与计算机相关的语言(如C/C++/FORTRAN 语言)实现的new :用来创建新实例对象package:包Private:一种访问控制方式:私用模式Protected:一种访问控制方式:保护模式Public:一种访问控制方式:共用模式Return:从成员方法中返回数据Short:基本数据类型之一,短整数类型Static:表明具有静态属性Strictfp:用来声明FP_strict(单精度或双精度浮点数)表达式遵循IEEE 754算术规范Super:表明当前对象的父类型的引用或者父类型的构造方法Switch:分支语句结构的引导词Synchronized:表明一段代码需要同步执行This:指向当前实例对象的引用Throw:抛出一个异常Throws:声明在当前定义的成员方法中所有需要抛出的异常Transient:声明不用序列化的成员域Try:尝试一个可能抛出异常的程序块Void:声明当前成员方法没有返回值Volatile:表明两个或者多个变量必须同步地发生变化While:用在循环结构中3.数据类型A.八种基本数据类型一个字节=8位:由8个1或0组成(位数不够补0),第一个数字代表正负,0为正 1为负.B.引用数据类型(默认值为null)数组类接口4.简单了解进制快捷进制例:65//如何能得出65?==》1+64;反之也能求出65。

64 32 16 8 4 2 11 0 0 0 0 0 15.字符编码转码:cmd中调用native2ascii方法(回车),输入要转换的内容(回车)可转换成unicode码。

字符如果采用解码和编码不一致则会乱码。

6.数据类型整数型有3种表达方式十进制:八进制:以0开始十六进制:以0x开始7.基本类型的转换●Java语言中整数型默认为int类型;如果要声明称long类型则在变量后加L;如果变量值没有超过int类型的取值范围L则可加可不加。

(一个整数诺没有超出某一类型(该类型比int低的)的取值范围,则可直接将该整数赋值给改类型;主要注意byte的取值范围是-128~127(256个),char类型中a的ascii值为97后面的往后推)●Java语言中浮点类型默认为duoble类型,声明为float类型的变量必须在变量后加f。

Java语言中boolean类型比较特殊不能装换成其他类型。

A.默认转换:容量小的会默认转换成容量大的(浮点型比整型大,不看容量)byet==>short,char==>int==>long==>float==>double:byte,short,char之间计算不会互相转换,首先转换成int例:byte b=10;short s=20;int i=b+s //成立byte b1=b+s //不成立b+s默认为int类型不能复制给byteB.强制类型转换:只要不超出取值范围可以将整数值直接赋值给byte,char,short(在多种类型混合运算过程中,首先将所有的数据转换成最大的那种在运算)例:long l=1000;byte b=(byte)(int)(l/100)//l/100为long类型转换为int再转换成byte;诺l/100没有扩号则前面的括号优先l被转换成int在转换成byte,而100默认为int将无法赋值。

8.运算符位运算符程序中的所有数在计算机内存中都是以二进制的形式储存的。

位运算说穿了,就是直接对整数在内存中的二进制位进行操作。

shl运算<<a shl b就表示把a转为二进制后左移b位(在后面添b个0)。

例如100的二进制为1100100,而110010000转成十进制是400,那么100 shl 2 = 400。

可以看出,a shl b的值实际上就是a乘以2的b次方,因为在二进制数后添一个0就相当于该数乘以2。

通常认为a shl 1比a * 2更快,因为前者是更底层一些的操作。

因此程序中乘以2的操作请尽量用左移一位来代替。

定义一些常量可能会用到shl运算。

你可以方便地用1 shl 16 - 1来表示65535。

很多算法和数据结构要求数据规模必须是2的幂,此时可以用shl来定义Max_N等常量。

shr运算>>和shl相似,a shr b表示二进制右移b位(去掉末b位),相当于a除以2的b次方(取整)。

我们也经常用shr 1来代替div 2,比如二分查找、堆的插入操作等等。

想办法用shr代替除法运算可以使程序效率大大提高。

最大公约数的二进制算法用除以2操作来代替慢得出奇的mod运算,效率可以提高60%。

例用最有效的方式算出2*8 2 << 3,因为将一个数左移n位,就相当于乘以了2的n次方,那么,一个数乘以8只要将其左移3位即可,而位运算cpu直接支持的,效率最高,所以,2乘以8等於几的最效率的方法是2 << 3。

◆算数运算符:int m=10;int e=m++;int x=++m;++出现在后面则=优先,所有先赋值e=10在+1,m=11(先赋值在自加),++出现在前面则先++,x=12,m=12.int z=10;System.out.print(z++);==>System.out.print(xxx=z++);所有输出z为10.◆关系运算符和布尔运算符&:逻辑与|:逻辑或:!:逻辑非(取反)^:逻辑异或(不一致为true)&&:短路与(前部分为falst时则后部分表达式不会被执行)||:短路或(前部分为true时则后部分表达式不会被执行)◆赋值类运算符+=; -=;*=;/=; %=;追加:例int i=10,i+=10等同于i=i+10;i=20 基本赋值类型和扩展类运算符区别:扩展运算符不改变运算结果类型。

例:byte b=10;i +=10;//通过i=i+10;//不通过,i是byte类型的而结果是int类型的。

两者虽然一样可是扩展运算符不改变运算结果类型。

+号:1)做加法运算(两边都为数字类型则做加法运算)2)字符串连接(+任意一端为字符串类型则为字符串连接)例:int a=10;int b=20;System.out.println(“a+b=”+a+b); //输出的为a+b=1020System.out.println(“a+b=”+(a+b)); //输出的为a+b=30第一次输出从左到右为字符串连接作用,所以当不知道优先级的时候就用括号括起来。

若要输出10+20=30;则System.out.println(a”+”b”=”(a+b)); 使用加号连接System.out.println(a+”+”+b+”=”+(a+b)); +起连接作用需要连接什么就把什么放到+”;“++”;”+中看出现的位置。

条件运算符:(三目运算符)语法:boolean类型表达式?表达式1:表达式2诺boolean表达式结果为true,则整个表达式结果为表达式1的结果,反之为表达式2的结果。

System.out.println((10<20)?’对’:’错’);9.控制语句①if和if eles语句1.语法:第一种结构:if(boolean表达式){java语句;}如果语句只有一条可以省略{}(并不推荐知道即可)if(boolean表达式)java语句;第二种结构:if(boolean表达式){java语句;}else{java语句;}第三种结构:if(boolean表达式){java语句;}else if(boolean表达式){java语句;}else if(boolean表达式){java语句;}第四种结构:if(boolean表达式){java语句;}else if(boolean表达式){java语句;}else if(boolean表达式){java语句;}else{java语句;}注意:在if语句中只要有一个分支执行,则整个if语句结束。

②switch语句1.语法:switch(int类型){case int类型:java语句;java语句;break;case int类型:java语句;java语句;break;defalut: //未履行java语句;}注意:break;语句可以没有.defalut语句也可以没有(不推荐且defalut 一般放最后)break;语句如果没有,则发生case穿透现象。

switch语句会根据表达式的值从相匹配的case标签处开始执行,一直执行到break语句处或者是switch语句的末尾。

如果没有break语句,那么就会从表达式的值相匹配的case标签处开始执行,一直执行到switch语句的末尾,这种从其中的一个case处开始,忽略后面的值的匹配,直接运行case的内容的现象就是穿透的现象。

相关文档
最新文档