Java程序设计 2 基本程序设计

一个简单的程序:

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);
	}
}

标识符 

Java 中使用标识符(identifier) 来命名变量、常量、方法、类、包等实体。
标识符命名规则:(与C/C++相比多了一个$符号
  •         标识符是由字母、数字、下划线(_)、美元符号($)组成的字符序列。
  •         标识符必须以字母、下划线(_)、美元符号($)开头。不能以数字开头。
  •         标识符不能是保留字。
  •         标识符不能为true、falsenull等事实上的保留字(参见英文维基网)。
  •         标识符可以为任意长度,但编译通常只接受前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 有默认值 =0
        y = 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

递增和递减运算符和C/C++略有不同: ++, -- 结果均为右值。
        前缀表示先加(减 )1 后使用
        后缀表示先使用后加(减 ) 1
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表示一个字符序列,注意字符串是 String类(不是Java内置的数据类型) 实现的,是引用类型
        字符串的字面值是由双引号界定的 零个 或多个字符。
        "Welcom to java!"                
        ""
        连接运算:+, +=:加号用于连接两个字符串。 如果二个操作数一个是字符串,另一个不是字符串,则先将非字符串操作数转换成字符串,再执行连接操作。
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

 

  • 27
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值