赞
踩
一个简单的程序:
- package testProgram; //java的类都在包中
- //默认import java.lang.System类
- public class ComputeArea {
- public static void main (String[] args) {
- //变量定义
- double radius;
- double area;
- //指定半径
- radius = 10.0;
- //计算面积
- area = radius * radius * 3.14159;
- //显示结果
- System.out.println("The area for the circle of radius " +
- radius + " is " + area);
- }
- }
标准输入/输出流• System.out :标准输出流类 OutputStream 的对象• System.in : 标准输入流类 InputStream 的对象Scanner 类( java.util.Scanner )Scanner scanner = new Scanner(System.in);
//构造函数Scanner的参数类型也可为java.io.File,这时Scanner从文件读取数据
double d = scanner.nextDouble( );
下列方法用于读入不同类型数据:nextByte( )、nextShort( )、nextInt( )、nextLong( )、nextFloat( )、nextDouble( )、next( ) (读入一个字符串)
- package test; //类必须在一个包中
- import java.util.Scanner;
- public class TestScanner {
- public static void main(String[ ] args) {
- // Create a scanner
- Scanner scanner = new Scanner(System.in);
-
- // Prompt the user to enter an integer
- System.out.print("Enter an integer: ");
- int intValue = scanner.nextInt();
- System.out.println("You entered the integer: " + intValue);
-
- // Prompt the user to enter a double value
- System.out.print("Enter a double value: ");
- double doubleValue = scanner.nextDouble();
- System.out.println("You entered the double value: " + doubleValue);
-
- System.out.print("Enter a string without space: ");
- String string = scanner.next();
- System.out.println("You entered the string: " + string);
- }
- }
标识符命名规则:(与C/C++相比多了一个$符号)
- 标识符是由字母、数字、下划线(_)、美元符号($)组成的字符序列。
- 标识符必须以字母、下划线(_)、美元符号($)开头。不能以数字开头。
- 标识符不能是保留字。
- 标识符不能为true、false或null等事实上的保留字(参见英文维基网)。
- 标识符可以为任意长度,但编译通常只接受前128字符。
例如:$2, area, radius, showMessageDialog 是合法的标识符; 2A, d+4 是非法的标识符
Java保留字:
abstract default if package this
assert do goto private throw
boolean double implements protected throws
break else import public transient(非序列化)
byte enum instanceof return true
case extends int short try
catch false interface static void
char final long strictfp(严格浮点) volatile
class finally native(本地方法) super while
const float new switch
continue for null synchronized
和C/C++一样。
变量(variable)用于保存数据输入、数据输出和中间值。可以向变量赋予类型匹配的值。
声明变量语法:
datatype variableName; 或者 datatype v1, v2, … , v3;
例如:
int x; double radius, area;
一经初始化就不能再改变的量,与C/C++不同的是,Java中的常量是真的无法改变,不像C/C++中可以利用指针修改。
- final datatype CONSTANT_NAME = value;
-
- //注意常量的声明和初始化必须同时完成
-
- final double PI = 3.14159;
与C/C++相同
variable = expression;
其中expression是包含字面量(literal)、变量、方法调用和操作符的表达式。赋值语句的结果是将表达式的值赋值给左边的变量。
例如:
- x = 1; //右边表达式是整数字面量
- x = 5 * (3 / 2) + 3 * 2; //右边表达式是整数字面量+操作符组成的算术表达式
- x = y + 1; //右边表达式是整数字面量+变量+操作符组成的算术表达式
- area = radius * radius * 3.14159; //右边表达式是变量+操作符组成的算术表达式
- y = Math.random() ; //右边表达式是方法调用组成的表达式
赋值表达式的结果等于表达式的值。赋值表达式是右结合的。
例如:
i = j = k = 1; //等价于 k = 1; j = k; i = j;
同时完成变量声明和初始化
datatype variable = expression;
例如:
- int x = 1; //某些变量在申明时必须同时初始化:final int m=0;
- int x = 1, y = 2;
有一点与C/C++有区别: 局部变量在使用前必须赋值int x, y; // 若是类的成员变量,x, y 有默认值 =0y = x + 1; // 局部变量无默认值则错error
传值调用(Call by value)和引用调用(Call by reference)的性质和C++完全一样。
由于传值调用和传引用调用的性质不一样,因此在Java里区分值变量和引用变量非常重要
由于Java取消了指针等,进而也就没有像C++那样用int &i;来区分引用变量的语法,同时也为了简单化,因此采用规定的方式来区别值变量和引用变量:变量为值变量还是引用变量取决于其类型。
Java中的引用和C/C++中一样本质上是指针,通过引用变量可以访问对象,但你不能对引用变量本身做任何操作。通过引用变量进行的操作,实际上是对被引用对象的操作。
- Circle c;
- //c本身存贮的是对象的地址。
- //当c没有引用(指向)任何对象时,c的值为null;
- //当c指向对象时,c的值是对象的引用(地址)
- //在Java里我们不能对c本身的值进行任何操作(甚至不能读)
- Circle c = new Circle();
和C/C++差不多。
整数byte 8位带符号整数(-128 到 127)short 16位带符号整数(-32768 到 32767)int 32位带符号整数 (-2147483648 到 2147483647)long 64位带符号整数(-9223372036854775808 到 9223372036854775807)浮点数float 32位浮点数(负数 -3.4×10^ 38 到 -1.4×10^ -45 正数 1.4×10^ -45 到 3.4×10^ 38)double 64位浮点数(负数 -1.8×10^ 308 到 -4.9×10^ -324 正数 4.9×10^ -324 到 1.8×10^ 308 )
和C/C++一样
加(+)、减(-)、乘(*)、除(/)、求余(%):注意+,-的优先级较低
int a = 34 + 1; // 35 double b = 34.0 – 0.1; // 33.9 long c = 300 * 30; // 9000 double d = 1.0 / 2.0; // 0.5: 此处为浮点除 int e = 1 / 2; // 0: 此处为整除 byte f = 20 % 3; // 2: 取余数整数相除的结果还是整数,省略小数部分。
int i = 5 / 2 // 2 int j = -5 / 2 // -2
和C/C++一样:
字面值(literal)是直接出现在程序中的常量值。
int i = 34; long k = 100000L;整数字面值:以0开头表示八进制,如 035 ;以 0x 或 0X 开头表示十六进制,如 0x1D,0X1d ;以 1-9 开头表示十进制,如 29后缀字母:以l或 L 结尾表示 long 类型,如 29L ;无后缀表示 int 类型。浮点数字面值:浮点数是包含小数点的十进制数,后跟可选的指数部分。如18. 1.8e1 .18E2后缀字母:以d或D结尾或者 无后缀表示double 类型;以 f 或 F 结尾表示 float 类型
操作符 举例 等价于
+= i += 8 i = i + 8
-= f -= 8.0 f = f - 8.0
*= i *= 8 i = i * 8
/= i /= 8 i = i / 8
%= i %= 8 i = i % 8
- int i =10; //i=++i + ++i; 结果为23
- int newNum= 10 * i++; //newNum = 100, i = 11
- int newNum= 10 * ++i; //newNum = 110, i = 11
和C/C++略有不同:大转小必须强制类型转换,否则报错。
如果二元操作符的两个操作数的数据类型不同,那么根据下面的规则对操作数进行转换:数据转换总是向较大范围的数据类型转换,避免精度损失。
byte i = 10; long k = i * 3 + 4; //i变成int参与右边表达式计算,计算结果转long double d = i * 3.1 + k / 2; //i转double, k/2转double
将值赋值给较大取值范围的变量时,自动进行类型转换。
byte < char < short < int < long < float < double
将值赋值给较小取值范围的变量时,必须使用强制类型转换(type casting)。
(datatype)variableName
例如:
- float f = (float)10.1; // 10.1是double类型 ,double > float
- int i = (int)f; // 10
- int j = (int)-f; // -10
- double d = 10; //自动进行类型转换:10是int型字面量,int < double
整数操作时,除数不能为0。整数除0产生ArithmeticException异常。
浮点数操作 上溢至Infinity(正无穷和下无穷),下溢至0(数值绝对值太小而无法表示)。浮点数除0等于Infinity(Java 预定义的符号)。
0.0除0.0等于NaN(Not a Number,Java预定义的符号)
和C/C++不同,Java中的char表示16位的单个Unicode字符
char类型的字面值
以 两个单引号界定 的单个 Unicode 字符。如 :' 男 ',' 女 '可以用 \ uxxxx 形式表示, xxxx 为十六进制。如 :'\u7537', '\u5973'转义字符表示: \n \t \b \r \f \\ \' \"
- String message = "Welcome " + "to " + "java"; // Welcome to Java
- String s = “Chapter” + 2; // Chapter2:2,自动转成字符串
- //String s1 += "Supplement" + 'B'; // SupplementB
- String s1 = "Supplement"; // SupplementB
- s1 += 'B'; // SupplementB
- message += " and Java is fun"; // Welcome to Java and Java is fun
- int i = 1;
- int j = 2;
- System.out.println("i + j = " + i + j); // i+j=12
- System.out.println("i + j = " + (i + j)); // i+j = 3
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。