102
上上上上上上上上上上上上上上上 第第第 第第第 . Java . Java 第第 第第

第二讲 . Java 基础

  • Upload
    rasha

  • View
    286

  • Download
    0

Embed Size (px)

DESCRIPTION

第二讲 . Java 基础. 内容. Java 平台 Java 程序结构 Java 注释 Java 语法 Java 程序语言的数据类型 运算符 字符串 标准输入输出 控制结构 大数处理 数组 编码过程. 1. Java 平台. debug. “WRITE ONCE, RUN ANYWHERE!”. pretty portable. Program in Java. Java Compiler. Java Bytecode. Java Virtual Machine. Java Virtual Machine. App1. App2. - PowerPoint PPT Presentation

Citation preview

Page 1: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

第二讲第二讲 . Java. Java 基础基础

Page 2: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 2

内容内容 Java 平台 Java 程序结构 Java 注释 Java 语法 Java 程序语言的数据类型 运算符 字符串 标准输入输出 控制结构 大数处理 数组 编码过程

Page 3: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 3

1. Java 1. Java 平台平台

Java Virtual Machine

Programin Java

JavaCompiler

JavaBytecode

Java Virtual Machine

“WRITE ONCE, RUN ANYWHERE!”debug

pretty portable

Page 4: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 4

Intel PowerPC SPARC

LinuxWindows OS X Solaris Linux

Java Virtual Machine (Java 虚拟机 )

App1 App2 App3 App4 App5

Page 5: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 5

虚拟机是 Java 程序运行的统一平台 Java Virtual machine abstracts away the details

of the underlying platform and provides a uniform environment for executing Java “byte-code”

The Java compiler (javac) compiles Java code into byte-code ( 编译程序编译 Java 源程序为字节码 ) Bytecode is an intermediate form which can run

on the JVM JVM does the translation from byte-code to

machine-code in a platform dependent way.

Page 6: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 6

Core Language (核心语言 ) Ints, array, objects, loops and conditionals Moderately sized language

Can run on small devices

Class Libraries (类库 ) This is where the power of Java really emerges String, ArrayList, HashMap, … Networking, Graphics, XML, Database

connectivity, Web Services…. Re-use at it’s best (so far).

Page 7: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 7

Page 8: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

2. Java2. Java 程序结构程序结构

Page 9: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 9

一个一个 JavaJava 程序的基本框架结程序的基本框架结构构

Java Application 程序:例 : HelloWorld.java

public class HelloWorld

     {

    public static void main (String[] args)

      { System.out.println(“Hello! World !” ); }

     } Java 程序由一个或多个独立的类组成,但其中必须有一个公有

类(如: HelloWorld ),而且源代码文件必须与这个公有类的名字相同(如: HelloWorld.java )

Java 的类可以由一个或多个方法组成,其中公有类中的 main方法可用作程序运行的入口。

Page 10: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 10

Java Java 程序的编辑、编译和运行过程程序的编辑、编译和运行过程

Java 程序编译通过,会自动生成一个包含了这个源程序字节码的同名 .class 文件。该文件可以通过 Java 虚拟机运行。

开始使用 JDK :

javac HelloWorld.java 编译器  编译出 HelloWorld.class

java HelloWorld 解释器 运行主类

Page 11: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 11

Java Programs (Java Java Programs (Java 程程序序 ))

You have to create a class! (创建一个类 ) You run the class (对类进行操作 )

for this to work, the class must have a method named main() that is declared as

public static void main( Strings[] args) if you don't do this right, you see

something like this when you try to run a class:

Exception in thread "main"

java.lang.NoSuchMethodError: main

Page 12: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 12

public static void public static void main()main()

public: This method can be accessed (called) from outside the class.

static: This method does not require that an object of the class exists. static methods are sort-of like "global" methods, they are always available (but you have to use the class name to get at them).

void: no return value.

Page 13: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 13

main(Strings[] arg)main(Strings[] arg)

main() will be passed an array of Strings corresponding to any command line parameter values.

If you ran a program (class) like this:java Foo hi there dave

then Foo.main() would be passed an array (with length 3) of String objects. The values would be "hi", "there" and "dave". args[0] is the String "hi", …

Page 14: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 14

简单的 简单的 Java Java 程序程序/* 评论 / 注释 */包含文件 import java.io.*; import java.util.*;public class class_name{ 主函数 public static void main( String[] args ) { 函数体开始 声明部分 执行部分 } 函数体结束}

Page 15: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 15

撰写规范的程序代码撰写规范的程序代码 // 程序说明 package 包的名称 import 类的名称 类修饰符 class 类的名称

构造方法 类成员:方法 (按照以下访问特性次序排列)

public protected private protected private

类成员:域 (按照以下访问特性次序排列) public protected private protected private

静态变量(即使用 static 修饰符的。按照以下访问特性次序排列) public protected private protected private

常量 (即使用 static final 修饰符的)

Page 16: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 16

Java Java 分隔符分隔符 Java 分隔符组成:

圆点 --“.” 、分号 --“;” 、花括号 --“{}” 、空格 --“ ”

Java 分隔符作用: Java 语句必须以分号作为结束标记 Java 允许用花括号“ {}” 将一组语句括起来,形成一个语句块 (block)

Java 程序源代码中各组成部分之间可以插入任意数量的空格,包括换行。

Page 17: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 17

完整 完整 Java Java 程序的基本元程序的基本元素素

1. 评论 / 注释语句 (/* */, // etc.) 2. 包含文件 (import java.io.*, …) 3. 赋值语句 (int i, float sum=0) 4. 简单输入 / 输出语句 (in, out) 5. 算术运算和逻辑操作 (+,-,*,\,) 6. 序列结构 7. 选择结构 (switch ~ case ~break, if ~

else) 8. 循环结构 (do~while, while, for, ) 9. 类和程序调用

Page 18: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

3. Java3. Java 注释注释

Page 19: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 19

JavaJava 注释注释 Java 语言中定义了三种注释形式:

// 单行注释 ---- 注释到行尾 /* 单行或多行注释 */ /** 可以用于文档化处理的单行或多行注释 */

JDK 中提供了一个文档自动生成工具 javadoc, 在自定义类中 public 的成员前以 /**…*/ 形式加入的注释内容均可被自动提取到生成的说明文档中。用法: somepath\javadoc source.java

Page 20: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

4. Java4. Java 语法语法

Page 21: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 21

java java 语言的关键字语言的关键字 Java 中一些赋以特定的含义、并用做专门用途的单词称为关键字( keyword )

所有 Java 关键字都是小写的, TURE、 FALSE、NULL 等都不是Java 关键字 ;

goto和 const 虽然从未使用,但也被作为Java 关键字保留;

true, false, null 虽被用做专门用途,但不是Java 关键字;

Page 22: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 22

Class Type: package, class, abstract, interface, implements, native, this, super, extends, new, import, instanceof, public, private, protected,

Data Type: char, double, enum, float, int, long, short, boolean, void, byte,

Control Type: break, case, continue, default, do, else, for, go to, if, return, switch, while, throw, throws, try, catch, synchronized, final, finally, transient, strictfp

Storage Type: register, static Other Type: const, volatile,

Page 23: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

5. Java5. Java 程序语言的数据类型程序语言的数据类型

Page 24: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 24

JavaJava 数据类型划分数据类型划分

数据类型

基本数据类型

引用数据类型

数值型

字符型 (char)

布尔型( boolean )

整数类型 (byte, short, int, long)

浮点类型 (float, double)

类 (class)

接口 (interface)

数组

Page 25: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 25

(1)(1) 基本数据类型基本数据类型 Java 中定义了四类 / 八种基本数据类型

逻辑型 ---- boolean 字符型 ---- char 整数型 ---- byte, short, int, long 浮点数型 ---- float, double

Page 26: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 26

数据类型 关键字 占用位数 缺省值 取值范围

布尔型 boolean 8 false True,false

字节型 byte 8 0 -128 ~ 127

字符型 char 16 ‘\u0000’

‘\u0000’ ~ ‘ \uFFFF’

短整型 short 16 0 -32768~ 32767

整型 int 32 0

见教材长整型 long 64 0

浮点型 float 32 0.0F

双精度型 double 64 0.0D

Page 27: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 27

逻辑型逻辑型 boolean 类型适于逻辑运算,一般用于程序流程

控制 boolean 类型数据只允许取值 true 或 false ,不

可以 0 或非 0 的整数替代 true和 false 。 用法举例:

boolean b = false;if(b==true) {

//do something}

Page 28: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 28

字符型字符型 char 型数据用来表示通常意义上“字符” 字符常量是用单引号括起来的单个字符

char c = 'A';

Java 字符采用 Unicode 编码,每个字符占两个字节,因而可用十六进制编码形式表示

char c1 = '\u0061';

Java 语言中还允许使用转义字符 '\' 来将其后的字符转变为其它的含义

char c2 = '\n'; // 代表换行符

Page 29: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

6. Java6. Java 变量与标识符变量与标识符

Page 30: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 30

变量变量

程序执行中数值可变的数据称为变量。变量包括变量名和变量值。

变量名 用标识符命名 , 对应一定数量的内存存贮单元 , 其单元数视变量类型而定。

标识符 符合一定命名规则的字符串序列。

Page 31: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 31

变量声明与赋值变量声明与赋值

Page 32: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 32

标识符标识符 (1)(1)

Java 语言中,为各种变量、方法和类等起的名字称为标识符

Java 标识符的命名规则: 应以字母、下划线、美元符开头 后跟字母、下划线、美元符或数字

Java 标识符大小写敏感,长度无限制

Page 33: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 33

Java 标识符举例

合法的标识符 不合法的标识符

HelloWorld class

DataClass DataClass#

_983 98.3

$bS5_c7 Hell World

Page 34: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

7. 7. 运算符运算符

Page 35: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 35

算术运算算术运算

ExampleExample----------------------

3 + 5 4

Num * 5Sum / CountCount % 4

-----------------------Count ++Count

OperatorOperator----------------

DefinitionDefinition----------------

AdditionSubtraction

MultiplicationDivision (quotient)

Division (remainder)-----------------------

IncrementDecrement

Page 36: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 36

关系运算关系运算

ExampleExample----------------------Num1 < 5Num1 <= 5Num2 > 3 Num2 >= 3

Num1 == Num2Num1 != Num2

OperatorOperator----------------

<

DefinitionDefinition----------------

Less thanLess than or equal to

Greater thanGreater than or equal to

Equal toNot equal to

Page 37: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 37

对象相等性对象相等性//: c03:Equivalence.java

public class Equivalence { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1 == n2); System.out.println(n1 != n2);

}} ///:~

/: c03:EqualsMethod.java

public class EqualsMethod { public static void main(String[] args) { Integer n1 = new Integer(47); Integer n2 = new Integer(47); System.out.println(n1.equals(n2));

}} ///:~

//: c03:EqualsMethod2.javaclass Value { int i;}

public class EqualsMethod2 { public static void main(String[] args) { Value v1 = new Value(); Value v2 = new Value(); v1.i = v2.i = 100; System.out.println(v1.equals(v2)); }} ///:~

Page 38: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 38

逻辑运算逻辑运算

ExampleExample----------------------

! ( Num1 < Num2 )(Num1 < 5 ) && (Num2 > 10 )(Num1 < 5 ) || (Num2 > 10 )

OperatorOperator----------------

!&&

DefinitionDefinition----------------

NOTANDOR

注意:只能将 AND , OR, NOT 施加于 boolean 型上,否则出错

Page 39: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 39

位运算符位运算符

ExampleExample----------------------

2&3=22|3=32^3=1~2=-3

OperatorOperator----------------

&^~

DefinitionDefinition----------------

ANDOR

EXCLUSIVE ORONE’S COMPLEENT

Page 40: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 40

位移运算符位移运算符

ExampleExample----------------------i=2;i<<2=8i=2;i>>2=0

i=-1;i>>>2=1073741823

OperatorOperator----------------

<<

>>>

DefinitionDefinition----------------

左移右移

无正负右移

Page 41: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 41

赋值运算赋值运算 Meaning

----------------------Store 5 in NumNum = Num + 5Num = Num 5 Num = Num * 5Num = Num / 5Num = Num % 5

OperatorOperator----------------

==+==*=/=

%=

Example Example ---------------- Num = 5 Num += 5 Num = 5 Num *= 5 Num /= 5 Num %= 5

Page 42: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 42

if-else if-else 三元运算符三元运算符

ExampleExample----------------------

i<10?i*100:i*10

OperatorOperator----------------boolean-exp?value0:value

DefinitionDefinition----------------

评估 boolean-exp 的值,决定使用 value0 还是

value

Page 43: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 43

StringString 上的上的 ++

Java 不允许程序员实现自有的重载运算符 + 字符串连接 如果表达式中有 String ,其他类型转变为

String

Page 44: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 44

转型运算符转型运算符 Java 允许将任意基本型别转型为另一个任意基本型别, boolean例外

class 型别不允许转型,同一族系,子类对象可以转型为父类对象

public class Concatenation { public static void main(String[] args) { String mango = "mango"; String s = "abc" + mango + "def" + 47; System.out.println(s); }} /* Output:abcmangodef47*///:~

Page 45: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

8. 8. 字符串字符串 : String: String

Page 46: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 46

String Class (String Class ( 字符串字符串 ))

创建字符串常量 String 对象 : String 类的构造函数 public String( );

public String(String value); public String(StringBuffer buffer); public String(char value[] ); 创建 Sring 类的对象分两步:声明和创建 String s; s=new String(“agah”); or s=“java”

Page 47: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 47

import static net.mindview.util.Print.*;

public class Immutable { public static String upcase(String s) { return s.toUpperCase(); } public static void main(String[] args) { String q = "howdy"; print(q); // howdy String qq = upcase(q); print(qq); // HOWDY print(q); // howdy }} /* Output:howdyHOWDYhowdy*///:~

Java 中字符串是不能被修改的

Page 48: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 48

String Class (String Class ( 字符串字符串 ))

字符串常量的操作:public boolean startsWith(String prefix);public boolean endsWith(String suffix);public int length( )public int indexOf(int ch)public int indexOf(int ch,int fromIndex);public int indexOf(String str);public int indexOf(String str,int fromIndex);public int lastIndexOf(String str);public int lastIndexOf(String str,int fromIndex);public int compareTo(String anotherString);public boolean equal(Object anObject);public boolean equalsIgnoreCase(String anotherString);public String concat(String str);….

Page 49: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

9. Java9. Java 标准输入输出简介标准输入输出简介

Page 50: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 50

Scanner (Scanner (标准输入标准输入 ))

Scanner – gets values from the standard input and assigns them to Object

import java.util.Scanner

Scanner stdin = new Scanner( System.in );

stdin.next(), nextFloat(), nextInt(), nextLine()….

hasNext(); hasNextFloat(), ……

Page 51: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 51

import java.util.*;

public class BetterRead { public static void main(String[] args) { Scanner stdin = new Scanner(System.in); System.out.println("What is your name?"); String name = stdin.nextLine(); System.out.println(name); System.out.println( "How old are you? What is your favorite double?"); System.out.println("(input: <age> <double>)"); int age = stdin.nextInt(); double favorite = stdin.nextDouble(); System.out.println(age); System.out.println(favorite); System.out.format("Hi %s.\n", name); System.out.format("In 5 years you will be %d.\n", age + 5); System.out.format("My favorite double is %f.", favorite / 2); }}

Page 52: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 52

System.out.print (System.out.print (标准输标准输出出 ))

System.out.print – prints to the screen. Can also accept variables and print their

values. %c – unicode character %d – Integral (as decimal) %b – Boolean vale %s – String %f – a float %e – a float (in scientific notation) %x – Integral(as hex) %% - the ‘%’ character (in printf)

Page 53: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 53

//: strings/SimpleFormat.javapublic class SimpleFormat { public static void main(String[] args) { int x = 5; double y = 5.332542; // The old way: System.out.println("Row 1: [" + x + " " + y + "]"); // The new way: System.out.format("Row 1: [%d %f]\n", x, y); // or System.out.printf("Row 1: [%d %f]\n", x, y); }}

Page 54: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 54

//: strings/Receipt.javaimport java.util.*;public class Receipt { private double total = 0; private Formatter f = new Formatter(System.out); public void printTitle() { f.format("%-15s %5s %10s\n", "Item", "Qty", "Price"); f.format("%-15s %5s %10s\n", "----", "---", "-----"); } public void print(String name, int qty, double price) { f.format("%-15.15s %5d %10.2f\n", name, qty, price); total += price; } public void printTotal() { f.format("%-15s %5s %10.2f\n", "Tax", "", total*0.06); f.format("%-15s %5s %10s\n", "", "", "-----"); f.format("%-15s %5s %10.2f\n", "Total", "", total * 1.06); } public static void main(String[] args) { Receipt receipt = new Receipt(); receipt.printTitle(); receipt.print("Jack's Magic Beans", 4, 4.25); receipt.print("Princess Peas", 3, 5.1); receipt.print("Three Bears Porridge", 1, 14.29); receipt.printTotal();

} }

空格和左对齐,缺省右对齐,加 - 后左对齐

Page 55: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

10. 10. 流程控制流程控制

Page 56: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 56

Statements (Statements ( 语句语句 ))

Page 57: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 57

if-else statement (if-else statement ( 选择选择结构结构 ))

Page 58: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 58

switch statement (switch statement ( 选择选择结构结构 ))

Page 59: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 59

while loop (while loop ( 循环结构循环结构 ))

Page 60: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 60

for loop (for loop ( 循环结构循环结构 ))

Page 61: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 61

do-while loop (do-while loop ( 循环结构循环结构 ))

Page 62: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 62

returnreturn

指明某个函数即将传回之值,并令该指立即被传回

Page 63: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

11. Java11. Java 语言大数处理语言大数处理

Page 64: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 64

BigInteger BigInteger 和 和 BigDecimalBigDecimal

如果开发人员仅仅需要处理 64 位以下的二进制数,他们只需要使用 long或者 int 类型,如果开发者需要处理超过 64 位的二进制数,那么他们将需要使用 java.math.BigInteger 类

BigDecimal 由一个任意精度的整数值和一个非负的整数标度组成,整数标度代表小数点右边的十进制数字的个数 ( 用 BigDecimal 表示的数值大小是 intVal/10**scale) Import java.math.BigInteger, BigDecimalMethod:

- ValueOf() - add() - subtract() - multiple() - divide() - mode()

- compareTo()

Page 65: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

12. Java12. Java 数组数组

Page 66: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 66

数组数组 数组( Array )是在基本数据类型的基础上发展而来的一种较高级

的数据结构类型,它是相同类型变量的集合,可以使用共同的名字对它进行引用。本节将具体对 Java 中的数组问题进行介绍。

一维数组 int month_days[ ]; int[ ] month_days = new int[30]

第一步,首先必须定义变量所需的类型 第二步,必须使用运算符 new 来为数组所要存储的数据分配内存,

并将它们分配给数组变量

Page 67: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 67

多维数组多维数组 在 Java 中,多维数组实际上就是“数组的数组”。在定义多维数组

变量时,要将每个维数放在它们各自的方括号中。

例如,下面的语句声明了一个名为 twoD 的二维数组变量。

int twoD[][] = new int[4][5];

该语句分配了一个 4行 5 列的数组并把它分配给数组 twoD 。实际上这个矩阵表示了 int 类型数组的实现过程。

Page 68: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 68

多维数组多维数组 当给多维数组分配内存时,只需指定第一个(即最左边)维数的内存即可。你可以单独地对余下的维数进行内存分配。例如,下面的程序在数组 twoD被定义时给它的第一个维数分配内存,对第二维则是手工分配内存。

int twoD[][] = new int[4][]; twoD[0] = new int[5]; twoD[1] = new int[5]; twoD[2] = new int[5]; twoD[3] = new int[5];

Page 69: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

11. Java11. Java 程序开发程序开发

Page 70: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 70

(1)(1) 算法能力是软件核心能力算法能力是软件核心能力程序 (Program) = 算法 (Algorithm) + 数据结构 (Data Structure)

软件的价值 = 智力 IQ + 智力资产 IP (Intellectual Properties)

个人用算法创造的价值可能超过成千上万人所创造价值总和

更高层次、更复杂问题的问题求解需要更高层次的算法形式,如谓词逻辑、量子模型或其它设计和表示模型,算法表示是无止境

Page 71: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

(2)(2) 设计模式概论设计模式概论

Page 72: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 72

学习的模式学习的模式人类活动的许多领域的问题求解过程都与模式概念密切相关 事实上,教育的目的就是将学习的模式从一代传向下一代

想一下如何下棋的… ???学习开发软件就像学下棋一样

虽然失败的后果经常并没有那么戏剧性 !

Page 73: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 73

要成为一个象棋高手要成为一个象棋高手首先必须学习规则

棋子的名字,合法的移动等等 然后学习原理

棋子的大小,吃子的基本技术等等 但是,要想成为一个高手,你必须从其它大师的棋局中学习 这些棋局中包含了许多模式,你必须能够理解,记忆并且一次又一次的使用它

而这种模式是成百上千的

Page 74: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 74

成为一个编程高手成为一个编程高手首先学规则

算法,数据结构和程序语言 然后学习原理

结构化编程,模块化编程,面向对象编码等等 .

但是,要想真正掌握软件设计,你必须学习其它高手的设计 这些设计中包含了那些需要理解,记忆和重复使用的模式

而这样的模式也是成百上千的

Page 75: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 75

设计模式设计模式设计模式代表了对问题的解决方案,这些问题是在开发特定的软件时碰到的 “模式 ==某一背景下的问题 /答案对”

模式表达了软件设计中关键要素之间的静态和动态结构,以及它们之间的协作关系 它们尤其对解决非功能性的问题有用

模式使我们能够重用成功的软件体系结构和设计

Page 76: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 76

(3) Java (3) Java 语言的编程实践语言的编程实践

Java 语言是程序设计入门的主导语言 对 Java 语言基本成分和基本功能的了解 具备基本的数据表示方法和计算机的基本操作,就能完

成某些简单计算方法和算法的实现 在编写大量程序之后,才能感到运用自如

Page 77: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 77

(4)(4) 简单 简单 Java Java 程序的开发过程序的开发过程程

Program Designing & Coding for

Solving the Specific Problem

with JAVA programming languages

( 使用 JAVA 编程语言来进行程序设计, 综合运用 JAVA 的基本结构来编写解 决一定难度问题的程序 )

Page 78: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 78

编写 编写 Java Java 程序程序

在 Java 程序中,类是 Java 程序的最小组成单位,一 个程序由一个类 或 多个类组成,多个类可以包含在一

个或多个 Java 文件中 在 Java 程序中,每一个 Java 文件只能包含一个公有类,在应用程序中, Java 程序 必须包含一个公有类,

公有类包含一个公有函数 main(),称为主函数,公有类的文件名必须与类名一致

Page 79: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 79

Java Java 程序文件的结构程序文件的结构 版本和版本的声明 版权信息 文件名称 标识符 程序说明摘要 程序的版本号 程序的作者 程序的修改者 完成和修改日期 版本的历史信息

Page 80: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 80

Java Java 程序文件的结构程序文件的结构

Import 文件的结构 调用类库文件目录结构 Source File Directory Target File Directory

Page 81: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 81

Java Java 程序文件的版示程序文件的版示

版示虽然不会影响程序的功能,但会影响到程序的可读性。追求清晰、美观和简明的风格

行 空格 对齐 变量命名规则 类的版示

Page 82: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 82

JavaJava 输入输出输入输出 Java依据标准 I/O模式,提供了

System.in,System.out,System.err import java.io.*; 输出: system.out.println(“”) 输入:

Page 83: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 83

import java.io.*;class Input{static InputStreamReader in; static BufferedReader reader; static   {in=new InputStreamReader(System.in);    reader=new BufferedReader(in);   } 

 static String readString()  {String s="";   try     { s=reader.readLine();           }        catch(IOException e)     {System.out.println(e);      System.exit(0);      }    return s;  }   static char readChar()   {char ch='a';    try       {        String s=readString();        ch=s.charAt(0);              }      catch(Exception e)        {System.out.println(" 输入的数据类型不对,程序将退出 ");         System.exit(0);        }     return ch;      }    

   static int readInt()  {String s=readString();   int i=0;   try{     i=Integer.parseInt(s);     }   catch(Exception e)    {System.out.println(" 输入的数据类型不对,程序将退出 ");     System.exit(0);    }     return i;  } static double readDouble()  {String s=readString();   double d=0.0;   try   {d=Double.parseDouble(s);   }   catch(Exception e)    {System.out.println(" 输入的数据类型不对,程序将退出 ");     System.exit(0);    }     return d;  } static float readFloat()  {   String s=readString();   float f=0.0f;   try   {    f=Float.parseFloat(s);    }    catch(Exception e)    { System.out.println(" 输入的数据类型不对,程序将退出 ");      System.exit(0);    }     return f;  } }

Page 84: 第二讲 . Java 基础

上海交通大学计算机科学与工程系

(5)Java(5)Java 环境设置环境设置

Page 85: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 85

JavaJava 运行环境的安装与配置运行环境的安装与配置 编写并运行 Java 程序,需要 Java 开发工具包( JDK, Java Development Kit )的支持。因此在编写自己的第一个 Java 程序前,读者需要先在自己的机器上安装 JDK 。

到目前为止, JDK 的发展经历了 JDK 1.0、 JDK 1.1、 JDK 1.2、 JDK 1.3、 JDK 1.4 、 JDK 1.5、 1.6 等几个版本。

Page 86: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 86

Install Java 2 Platform on Your Install Java 2 Platform on Your Machine (Machine ( 安装 安装 Java 2 Java 2 平台平台 ))

Java Core Software (开发核心程序 ): Java Development Kit (JDK, such as JDK 1.6 or J2SE 6.0)

Can be installed on different platforms (能被安装在不同平台 ): Unix/Linux Windows Mac OS

Page 87: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 87

Installing JDK 1.6 (Installing JDK 1.6 ( 安装 安装 JDK 1.6)JDK 1.6)

Make sure you have space! (300 MB)

Download the appropriate file from

www.sun.com

Run the file (start the installation)

Page 88: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 88

Set Up PATH Environment Set Up PATH Environment Variable Variable

((设置执行路径和开发环境设置执行路径和开发环境 ))

Unix/Linux (C Shell) In ~/.cshrc, add script set path=(/usr/local/java/jdk1.6.0_06/bin $path) Windows XP

Working Directory: c:\my_java_program In c:\my_java_program: (临时性的 Java 开发环境 )SET PATH=c:\java\jdk1.6.0_06/bin;%PATH% 永久性的 Java 开发环境 Start – Control Panel – System – Advanced - Environment Variables – System Variables - Path

Add: c:\java\jdk1.6.0_06/bin

Page 89: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 89

Page 90: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 90

CLASSPATH Environment CLASSPATH Environment Variable (CLASSPATH Variable (CLASSPATH 环境变量环境变量 ))

The Java compiler and VM use the CLASSPATH environment variable to decide where to look for class definitions (Java code).

For now it's enough the Java will look in the "current working directory".

If your CLASSPATH is already set to something, you may need to add "." to it.

("." is the current directory ). 环境变量

Path ---- 用于指定操作系统的可执行指令的路径 CLASSPATH ---- 用于指定 Java 的类文件存放路径。

SET CLASSPATH=.;%CLASSPATH%

Page 91: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 91

CLASSPATHCLASSPATH 的设置的设置

Page 92: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 92

Test Java Development Test Java Development Environment (Environment ( 测试 测试 Java Java 开发环开发环

境境 ))

Use Command: path Use Command: java -version Use Command: javac -version

Page 93: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 93

Java 环境的有关工具

Java 提供了一些常用的语言工具,主要包括: 1、 java :解释器 2、 javac :编译器 3、 appletviewer :小应用程序浏览器 4、 javah :头文件生成器 5、 javadoc: API文档生成器 6、 javap :类文件反汇编器 7、 jdb: Java 语言调试器 8 、 jar: 压缩工具 …. 这些文件包括在 /java/bin/目录中,并可以在任何目录中运行,前提是设置了运行程序的相应系统路径。

Page 94: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 94

Java 环境的有关工具Sun JDK 命令行形式 Javac.exe——Java 编译程序,负责检查 Java 源程序是否有语法

错误并生成相应的字节码文件(基本名与源文件中类名同名、但扩展名为 .class )。

命令格式为: Javac 文件名 . java Java.exe——Java 解释器程序,负责解释执行 Java Application

字节码文件。 命令格式为: Java 文件名 Javadoc.exe—— 提取注释的工具,可查找置入在程序里的特殊注

释标记,还将毗邻注释的类名或方法名提取出来,以便用最轻的工作量,生成十分专业的 HTML 格式的 Java 程序文档。

AppletViewer.exe—— 模拟 WWW 浏览器运行 Applet 的应用程序,使用它调试程序,不需要反复调用庞大的浏览器。

命令格式为: AppletViewer 文件名 .html

Page 95: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 95

Installing Java Library Source Installing Java Library Source Code and Documents (Code and Documents (安装库函数安装库函数

和文档和文档 ))

Enter the JDK directory (进入目录 ): c:\program file\java\jdk1.6.0_06 Construct a sub-directory (建立一个子目录 ) src mkdir src Change directory to src cd src Running the command jar xvf ..\src.zip

Page 96: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 96

Java Class Libraries (Java Java Class Libraries (Java 内库内库 ))

Page 97: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 97

http://www.eclipse.org

Eclipse 是一个开放源代码的、基于 Java 的可扩展开发平台。就其本身而言,它只是一个框架和一组服务,用于通过插件组件构建开发环境。幸运的是, Eclipse 附带了一个标准的插件集,包括 Java 开发工具( Java Development Tools, JDT )

Page 98: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 98

Page 99: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 99

Page 100: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 100

Page 101: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 101

Page 102: 第二讲 . Java 基础

上海交通大学计算机科学与工程系23/4/21 102

小结小结 Java 平台 Java 程序结构 Java 注释 Java 语法 Java 程序语言的数据类型 运算符 字符串 标准输入输出 控制结构 大数处理 数组 编码过程