丁保国的博客

收集整理工作生活,点点滴滴

  :: :: 博问 :: 闪存 :: :: :: :: 管理 ::

第二讲 Java中的数据和运算

 

主要内容

Java输入输出的初步运用

Java的标识符和保留字

Java的基本数据类型

Java基本数据类型转换

Java中的运算符

 

Java程序的输入输出

问题:读取一个整数,输出该数的平方

算法

步骤一:读取一个整数字符串

步骤二:将字符串转换成整数Integer.parseInt(s)

步骤三:运算处理

步骤四:输出结果

 

程序清单[Square.java]

import javax.swing.*;

 

public class Square{

   public static void main(String args[]){

     String s=JOptionPane.showInputDialog("请输入一个整数:");

     int n=Integer.parseInt(s);

     int m=n*n;

     System.out.println("你输入的数是:"+s);

     System.out.println("其平方值是:"+m);

   }

}

程序解析

²     JOptionPanejavax.swing包中的类

²     showInputDialogJOptionPane的方法:显示一个输入对话框

 

²     System.out.println(…)显示输出。

[注意]可以“+”号连接不同类型数据。

思考

1.      如何交互输入数据?

2.      JoptionPaneshowInputMessage方法输入的是什么类型的数据?

3.      一个数字组成的字符串如何转化成整数?

4.      Java程序如何向字符窗口输出数据?

 

练习:输入一个圆半径,输出其面积。

 

Java的标识符和保留字

标识符的定义规则

Java程序中,包、类、属性、方法、对象、变量、符号常量、数组等等都要有名称。这名称即为“标识符”。

标识符的定义规则

²       由字母、数字、_$组成

²       开头字符必须是字母、下划线或$不可以数字开头

[注意]大小写敏感。mynameMyname是两个不同的标识符。

 

定义三原则:见名知义、规范大小写、不可用Java保留字

 

练习:从以下字符串中挑出合法的Java标识符。

2tow

Mary5

else

Hello world

bob

do

cheese_eat

Hello!

 

 

保留字(关键字)

保留字(reserved word):是 Java 语言规定了特定含义的标识符。

对于保留字,用户只能按照系统规定的方式使用,不能自行定义。

保留字一律用小写字母表示。

abstract

for

private

break

finally

return

byte

final

static

boolean

if

switch

catch

import

short

case

implements

synchronized

class

instanceof

super

char

interface

try

continue

int 

true

do

length

this

default

long

throw

double

new

threadsafe

else

null

throws

extends

native

transient

false

package

void

final

public

while

float

protected

……

 

Java的基本数据类型

指定变量的数据类型可确定变量所需分配的内存尺寸。

 

char ch;

float x;

int a,b,c;

布尔型——boolean

布尔型常量:truefalse (它们不对应于任何整数值!)

布尔型变量的定义如:boolean b=true;

 

字符类型——char

字符常量:用单引号括起来的一个字符,如aA;

C相同,Java也提供转义字符,如下图:

转义字符

描述

\ddd

138进制数所表示的字符(ddd)

\uxxxx

1416进制数所表示的字符(xxxx)

\u0061表示a

\'   \"

单引号字符和双引号字符

\\

反斜杠

\r

回车

\n

换行

\t

横向跳格

\f

走纸换页

\b

退格

 

字符型变量的定义如:char c=a;

说明:Java中的字符型数据是16位无符号型数据,它采纳Unicode集。

 

练习:编程测试16进制数41,51对应的字符,并相隔一个tab位输出。

 

整型

整型常量可用三种进制表示

十进制整数:如:123,-4560

八进制整数:0ddd        (注意:ddd<=377)

0123表示十进制数83,-011表示十进制数-9

十六进制整数:以0x0X开头

0x123表示十进制数291,-0X12表示十进制数-18

 

练习:分析程序运行结果。

public class DataTest{

   public static void main(String[] args){

      int x=010;

      System.out.println("x="+x);

      int y=0x10;

      System.out.println("y="+y);    

   }

}

 

整型变量有byteshortintlong

数据类型

字节数

所占位数

数的范围

byte

1

8

-2727-1

short

2

16

-215215-1

int

4

32

-231231-1

long

8

64

-263263-1

注意:在进行处理时应注意变量的范围

byte x=129;  出错!

byte x=(byte)129; 结果x的取值是-127

原因:整数在内存中以补码保存。129—10000001-- -127

 

思考

1.      Java中一个字符数据开销字节数?

2.      Java中怎样给出一个八进制整常数?

3.      Java中怎样给出一个十六进制整常数?

4.      Java中如何输出数据?

5.      Java表达整型的数据类型与C相比异同点?

 

浮点型(实型)

实型常量有两种表示形式

²       十进制数形式:由数字和小数点组成,如0.123, .123, 123.,123.0

²       科学计数法形式:如:123e3123E3

其中eE之前必须有数字,且eE后面的指数必须为整数。

说明:单精度常量以fF为后缀。双精度常量以dD作后缀(默认)

实型变量

数据类型

所占位数

数的范围

float

32

3.4e0383.4e038

double

64

1.7e3081.7e308

 

字符串型

字符串常量是用双引号作为起止符的字符序列。如:Hello

字符串变量定义如:String s1,s2;  String s1=Hello;

练习:试分析下面程序中的各变量

public class Assign {

  public static void main(String[] args){

     int  x ,  y ;

     float  z = 1.234f ;

     double  w = 1.234 ;

     boolean  flag = true ;

     char  c ;

     String  str ;

请加入语句:

在第一行输出xyzw的值

在第二行输出cflagstr的值

 

     c = 'A';

     str ="bye";

     x = 12 ;

     y = 300;

  }

}

思考

1.      如何给出一个单精度常数?

2.      字符常量和字符串的定界符分别是什么?

3.      Java中一个int型数据开销字节数?

4.      Java中用什么类型的变量存储一个逻辑值?

 

Java基本数据类型转换

自动类型转换

整型、实型、字符型数据可以混合运算。步骤:先转化为同一类型,再运算。

转换总是从低级到高级,按下图所示:

--------------------------------------------->

byteshortcharà int à long à float à double

思考

1、x+y的值是什么类型?

2、x+y+z的值是什么类型?

3、a+b的值是什么类型?

4、a-x-y的值是什么类型?

5、x+c是值是什么类型?

int x;

byte y;

long z;

float a;

double b;

char c;

 

强制类型转换

高级数据要转换成低级数据,需用到强制类型转换,如:

y=(byte)x;

x=(int)(a+b);

a=(float)b;

 

阅读程序,分析运行情况

public class CharandInt1{

  public static void main(String[] aa){

     char y='a';

     System.out.println(y);

  }

}

 

public class CharandInt2{

  public static void main(String[] aa){

     int x=2;

     char y='a';

     System.out.println(y+x);

  }

}

[思考] 如何修改程序使之输出结果为”c”?

 

class Test1{

  public static void main(String[] aa){

     char a='\u0041';

     int b=a;

     float c=b;

     double d=c;

     System.out.println(a+"\t"+b+"\t"+c+"\t"+d);

  }

}

 

class Test2{

  public static void main(String[] aa){

     double e=65.5;

     float f=e;

     int g=f;

     char h=g;

     System.out.println(e+"\t"+f+"\t"+g+"\t"+h);

  }

}

 

Java中的运算符

算术运算符

双目运算符

运算符

示例

含义

+

op1 + op2

加法运算

-

op1 - op2

减法运算

*

op1 * op2

乘法运算

/

op1 / op2

除法运算

%

op1 % op2

模运算(取余)

说明:

1)JAVA对“+”运算进行了扩展,字符串连接、数字与字符串连接

:  String s;

      s="s="+4*5;     

2) JAVA中的"%"取模运算,可对浮点数进行。符号同第一个操作数。

52.3%10à2.3

class TestMod{

  public static void main(String[] aa){

     System.out.println(10%3);

     System.out.println(10%-3);

     System.out.println(-10%3);

     System.out.println(-10%-3);

  }

}

 

自增自减运算符

运算符

示例

含义

前缀 ++

++ x

1 后再引用

前缀 --

-- x

1 后再引用

后缀 ++

x ++

先引用,再加 1

后缀 --

x --

先引用,再减 1

说明:

1++--运算符只能用于变量。错例5++++(a+b)

2++--运算时结合方向自右向左-i++相当于-(i++)

3) 两个+(-)之间不能有空格

4) 应避免使用复杂的表达式

 

算术表达式:用算术运算符与括号将运算对象连接起来的、符合Java规则的式子。

运算级别*/%+-,“左结合”原则。如:n * -2, -n / -2

 

赋值运算符

基本赋值运算

形式: <变量> =<表达式>

作用:将右边表达式的值计算赋给左边的变量。

赋值语句:赋值表达式加上分号即可。

public class S3 {

public static void main(String[] args){

  int a;

  int b;

  int c=(a=5)+(b=13);

  System.out.println(a+"  "+b+"  "+c);

 }

}

复合赋值运算

形式 <变量><简单运算符>=<表达式>

à<变量>=<变量><简单运算符>(<表达式>)

分别举例:

运算符

示例

含义

+=

count += 2

count = count + 2

-=

count -= 2

count = count - 2

*=

count *= 2

count = count * 2

/=

count /= 2

count = count / 2

 

类型转换

赋值时如果赋值号两边类型不同,则有如下两种可能:

²       自动转换。条件:等号右式类型比左边变量类型简单。

²       出错。   出错信息: possible loss of precision

 

关系运算符

运算符

示例

含义

==

op1 == op2

等于

!=

op1 != op2

不等于

op1 < op2

小于

op1 > op2

大于

<=

op1 <= op2

小于等于

>=

op1 >= op2

大于等于

注意:

[1] "= ="不要写成"="

 

关系表达式

op1 <关系运算符> op2

说明:

1)    Java,任何类型的数据(包括简单类型和复合类型),都可以通过"==""!="来比较是否相等。

2)    浮点数的比较小心慎用

3)    不同类型的数值量以及字符之间可以进行各种大小比较

class T1{

  public static void main(String[] aa){

     char x='4';

     int y=4;

     if (x==y)System.out.println(y);

     else System.out.println((char)y);

     }

}

4)    关系运算的结果是truefalse(而不是10TF!)

5)    关系运算符优先级低于算术运算符,高于赋值运算符

 

逻辑运算符

运算符

示例

含义

&&

op1 && op2

逻辑与

||

op1 || op2

逻辑或

!

! op

逻辑非

 

1)      逻辑运算的截断性。

class Test {

  public static void main(String[] args){

     int f=0;

     if (f!=0 && 3/f>5)System.out.println("111");

     else System.out.println("000");

 

  }

}

思考:表达式 f!=0 && 3/f>5是否会发生除0溢出错误?

2)      优先级如下图示(从高到低)

!

算术运算

关系运算

&&

||

=

 

条件运算符(? : )

e1? e2:e3

意义:若e1为真,则取值e2;为假取值e3

例:

int a=1;

int b=4;

int max=a>b?a:b;

说明:

1)      e1的类型必须为boolean

2)      e2e3有相同的数据类型

 

练习:输入三个整数,输出其中的最大数(MaxValue.java)

 

Java运算符的优先级

运算符的优先级

 

 ()

 

++ -- !   单目+   单目-

 

 

*   /   %

 

+   -

 

<   >   <=   >=

 

= =   !=

 

&&

 

||

 

? :

 

=   +=   -=   *=   /=   %=

 

变量的作用域

即变量何时可访问,何时不能。有如下几个要点:

²       方法中声明的变量只在方法内访问

²       花括号内的变量在花括号里,及其内含的花括号里可访问

class T1{

   public static void main(String[] aa){

      {

        int x=1;

        System.out.println(x);

        x++;

      }

      System.out.println(x);

   }

}

 

 

练习:输入一个半径(实数),输出圆面积。

import javax.swing.*;

public class CircleArea{

public static void main(String[] args){

    String s=JOptionPane.showInputDialog("请输入半径:");

    float r=Float.parseFloat(s);

                

    System.out.println(a);

}

}

 

实验一

1.    调试一个例程,理解Java程序的编辑、编译和执行方法。试观察源程序文件、字节码文件的扩展名。

2.    读取一个实型数,输出该数的平方。

3.    输入一个姓名,输出“Welcome, <姓名>

4.    分析和调试程序,初步理解日期信息的获取:

import java.util.*;

public class Day {

   public static void main(String[] args){

      Calendar c= Calendar.getInstance();

      System.out.print("今天的日期是:");

      int y=c.get(c.YEAR);

      int m=c.get(c.MONTH)+1;

      int d=c.get(c.DATE);

      System.out.println(y+"-"+m+"-"+d);

   }

}

5.    仿照上题,输出当前时间。(HOUR,MINUTE,SECOND)。

 

 

posted on 2007-07-21 10:27  丁保国  阅读(1396)  评论(5编辑  收藏  举报