670 likes | 932 Views
第 2 章 Java 语言基础. 数据类型 变量 运算符 表达式和语句 控制结构 字符串 数组. 2.1 数据类型. Java 定义了 4 类共 8 种基本类型,它们的分类及关键字如下: 整型 byte , short , int , long 浮点型 float , double 逻辑型 boolean 字符型 char. 字节型 (byte). 短整型 (short). 字符型 (char). 整数类型. 整型 (int). 长整型 (long). 数值类型. 基本数据类型. 单精度浮点型 (float).
E N D
第2章 Java 语言基础 数据类型 变量 运算符 表达式和语句 控制结构 字符串 数组
2.1 数据类型 • Java定义了4类共8种基本类型,它们的分类及关键字如下: • 整型 byte,short,int,long • 浮点型 float,double • 逻辑型 boolean • 字符型 char
字节型(byte) 短整型(short) 字符型(char) 整数类型 整型(int) 长整型(long) 数值类型 基本数据类型 单精度浮点型(float) 实数类型 双精度浮点型(double) 布尔类型(boolean) Java数据类型 空类型(null) 类(class) 复合数据类型 接口(interface) 数组 数据类型 Java 用类String , StringBuffer 表示字符串(C++用之符串数组)
2.1.1 整型 表3.1 Java语言的四种整型 • 29 int , byte,short • 201020L
2.1.2 浮点型 表3.2 Java的两种浮点型 • 2364.769 或 456.3D • 34564.01f float f=12345.08745f; System.out.println(f); 结果:12345.088
2.1.3.字符型 • Unicode编码 • 单引号 char c1;c1 = ‘b’;c1 = ‘中’;c1 = ‘\u0041’;
int a=5 , b; b = a >4; if (b ) { a ++ ; }else { a -- ; } int a=5 boolean b; b = a >4; if (b ) { a ++ ; }else { a -- ; } • 2.1.4 逻辑型 • true / false • 注意:C: 0 /1
简单数据类型的包装类 • 简单数据类型 包装类 • boolean Boolean • char Character • byte Byte • short Short • int Integer • long Long • float Float • double Double
Integer.MIN_VALUE • Integer.MAX_VALUE • Float.MIN_VALUE … • Integer.parseInt( 参数 ) • Float.parseFloat( 参数) • .. int iData; iData = Integer.MAX_VALUE;
2.1.6 常量 • 1.整型常量 • 2.浮点型常量 • 单精度浮点常量(后跟一个字母f或F) • 双精度浮点常量(后跟一个字母d或D,可省略) • 逻辑型常量 • true——真 • false——假 • 字符型常量 • Unicode 16位 • A : 0x0041 (C: 0x41)
5.字符串常量 • “JAVA你好” 共12个字节 • 单引号,双引号区别: “A” ‘A’ • 注意:字符串常量是使用双引号括起来的字符序列, • 最后字符不是‘\0’。 • 如: “abcdef“ • java or C 各占多少字节
练习: double d1; d1 = 3434.125f; f ? int d2; d2 = 0x1f; d2 = 012; ?? int a1=20; a1 占用多少字节? char c1; c1 = ‘\u0041’; int 3data ,_cnt; 3data = 3; ? _cnt = 4; char c2; c1 = ‘B’; c1 占用多少内存? int b1; b1 = 5>4 ; b1?
2.2 变量 使用变量的原则:先声明后使用。 变量的三个基本要素:名字、类型和值。
1.变量声明 格式: <类型><变量名>[=<初值>][,<变量名>[=<初值>]……] 例如: int i,j,k; 在声明变量的同时可以对变量进行初始化,即赋初值。例如, int i=0;
2.变量的赋值 • 格式: • 变量名=值 ; • 举例: • boolean b=true; //声明boolean型变量并赋值 • int x,y=8; //声明int型变量 • float f=2.718f; //声明float型变量并赋值 • double d=3.1415; //声明double型变量并赋值 • char c; //声明char型变量 • c=’\u0031’ ; //为char型变量赋值 • x=12; //为int型变量赋值
2.2.4 常量的声明 • 用关键字final标识,通常final写在最前面。 • <final><数据类型><常量标识符>=<常量值>; • 例如: • final int MAX=10; • final float PI=3.141593f; 注意 C: const int count = 1000;
final int m=2; int d2=3; d2 = d2 + m; m=m+1; 1 float f=2.718 ; 2
2.1.5 数据类型转换 1. 数值型不同类型数据的转换 • (1)自动类型转换 • ①转换前的数据类型与转换后的类型兼容。 • ②转换后的数据类型的表示范围比转换前的类型大。 • 优先关系 • 低 高 byte、short、char int long float double
public class autoTypePromot{ public static void main(String args[]){ int a = 10; float b = 3 ; b = a + 3.2 ; } } 23.65 默认为Double public class autoTypePromot{ public static void main(String args[]){ int a ; float b = 23.65 ; a = b ; } }
【例1】数据类型的自动转换。 //app3_1.java 类型自动转换 public class app3_1 { public static void main(String args[]) { int a=155; float b=21.0f; System.out.println(”a=”+a+”,b=”+b); //输出a,b的值 System.out.println(”a/b=”+(a/b)); //输出a/b的值 } } 输出结果为: a=155,b=21.0 a/b=7.3809524
(2) 强制类型转换 格式: (欲转换的数据类型)变量名 一般不建议,因为可能丢失信息。 例如 double d=3.14159; int a; a = (int) d ;
改错: class lx24_1 { public static void main(String args[]) { float f1 = 10.51 ; } } 改错: class lx24_2 { public static void main(String args[]) { int i1 = 10 , i2; float f1 = 10.51f , f2; f2 = i1 ; i2 = f1; } }
【例2】整型与浮点数据类型的自动转换。 //app3_2.java 整数与浮点数的类型转换 public class app3_2 { public static void main(String args[]) { int a=155; int b=9; float g,h; System.out.println(”a=”+a+”,b=”+b); //输出a,b的值 g=a/b; //将a除以b的结果放在g中 System.out.println(”a/b=”+g+”\n”); //输出g的值 System.out.println(”a=”+a+”,b=”+b); //输出a,b的值 h=(float)a/b; //先将a强制转换成float类型后再参加运算 System.out.println(”a/b=”+h); //输出h的值 } }
程序执行结果如下: a=155,b=9 a/b=17.0 a=155,b=9 a/b=17.222221
3 隐含强制转换 • byte ,short • byte a =28 ; • short b = 120;
4. 字符串型数据与数值型数据相互转换 (1)字符串转换成数值型数据 表3.7 字符串转换成数值型数据的方法
例如: String MyNumber=“1234.567”; //定义字符串型变量 float MyFloat=Float.parseFloat( MyNumber ); (2)数值型数据转换成字符串 例如: int MyInt=1234; //定义整形变量MyInt String MyString="“ + MyInt; //将整型数据转换成了字符串 或:int data = 2011; string s1; s1 = Integer.toString( data ) ; s1 = String.valueOf( data);
补充: 输入、输出 • 一 输出:使用System.out 对象进行输出。 • System.out.Println( [参数]):输出文本并换行。 • System.out.Print(参数):输出文本不换行。 • 例: • int a =6; • System.out.pringln( “a=” + a ); • System.out.pringln( );
二 输入: • 1 使用System.in对象输入。 • int System.in.read() : 从键盘读入一个字符, • 返回ASCII码 • 需要异常处理: • try----catch 异常:IOException
class ReadDemo { //读入一个字符 public static void main(String args[]) { char c1; c1 = (char) System.in.read(); System.out.println( c1); } } class ReadDemo { public static void main(String args[]) { char c1; try { c1 = (char) System.in.read(); } catch( IOException e){ System.out.println( “read error”); } System.out.println( c1); } }
2 读入其他类型的数据 • 1 读入字符串 • String s1; • InputStreamReader sr = • new InputStreamReader( System.in) ; • BufferedReader br = new BufferedReader (sr); • s1 = br.readLine(); • 异常处理 • 2 转换成其他类型 • int Integer.parseInt( String s ) ; //转换成整形 • float Float.parseFloat( String s) ; • double Double.parseDouble( String s) ; • String String.valueOf( 数值类型); //转换成字符串
读入字符串 import java.io.*; class hello1 { public static void main(String args[]) { String s1; try{ InputStreamReader sr = new InputStreamReader( System.in) ; BufferedReader br = new BufferedReader (sr); s1 = br.readLine(); System.out.println( s1); } catch(IOException e){ System.out.println( e.toString() ); } } }
例3.3】从键盘输入数据。 //app3_3.java 由键盘输入字符串 import java.io.*; //加载java.io类库里的所有类 public class app3_3 { public static void main(String args[]) throws IOException { BufferedReader buf; String str; buf=new BufferedReader(new InputStreamReader(System.in)); System.out.print(”请输入字符串;”); str=buf.readLine(); System.out.println(”您输入的字符串是:”+str); } }
练习: • 编写一个程序,输入两个整数,输出两数的和。 • 编写程序,输入园的半径,输出园的面积及周长。
2.3 运算符 • 算术运算符 +、-、*、/、%、++、-- • 关系运算符 >、<、>=、<=、==、!= • 逻辑运算符 !、&&、||、&、| • 位运算符 >>、<<、>>>、&、|、^、~ • 赋值运算符 =、及其扩展赋值运算符,如+=、/=等。 • 条件运算符 ? : • 其他运算符号 包括分量运算符.、下标运算符[ ]、实例运 • 算符instanceof、内存分配运算符new、强制类型转换运算 • 符(类型)、方法调用运算符()等。
2.3.1算术运算符 1.二元算术运算符 二元算术运算符
2.一元算术运算符 一元算术运算符
2.3.2关系运算符 关系运算符 注意:关系表达式返回 True / false
2.3.3 逻辑运算符 逻辑运算符 简洁运算,也称短路运算。
int d=5 ; boolean b1 = true , b2,b3; b2 = d >7 & (b1=d>9) ; System.out.println( b1 ); System.out.println( b2 ); b3 = d >7 && (b1=d>9) ; System.out.println( b1 ); System.out.println( b3 ); int d=5 ; //短路运算 boolean b1 = true , b2,b3; b2 = d <8 | (b1=d>9) ; System.out.println( b1 ); System.out.println( b2 ); b3 = d <8 || (b1=d>9) ; System.out.println( b1 ); System.out.println( b3 );
【例3.6】 关系运算符和逻辑运算符的使用。 //app3_6.java 关系运算符和逻辑运算符的使用 public class app3_6 { public static void main(String args[]) { int a=25,b=7; boolean x=a<b; //x=false System.out.println(”a<b=”+x); int e=3; boolean y= a/e>5; //y=true System.out.println(”x^y=”+(x^y)); if(e!=0 & b<0) System.out.println(”b/0=”+b/0); else System.out.println(”a%e=”+a%e); int f=0; if(f!=0 && a/f>5) System.out.println(”a/f=”+a/f); else System.out.println(”f=”+f); } }
其运行结果为: a<b=false x^y=true a%e=1 f=0
2.3.3 位运算符 表3.12 位运算符
2.3.4 赋值运算符 • 1. 赋值运算符 • 格式: • 变量或对象=表达式 赋值运算符右端的表达式可以还是赋值表达式,形成连续赋值的情况。例如: a=b=c=8;
2.扩展赋值运算符 在赋值符“=”前加上其他运算符,即构成扩展赋值运算符,例如:a+=3等价于a=a+3。
2.3.5条件运算符 格式: <表达式1> ? <表达式2> : <表达式3> 1 “表达式1”是一个结果为逻辑值的布尔表达式2 功能:先计算<表达式1>的值, 当<表达式1>的值为true时,则将<表达式2>的值作为整个表达式的值; 当<表达式1>的值为false时,则将<表达式3>的值作为整个表达式的值。 例如: int a=1,b=2,max; max=a > b ? a : b; //max获得a,b之中的较大值 System.out.println("max="+max); //输出结果为max=2