Java(三)Java基本的程序结构

2014-11-24 02:25:38 · 作者: · 浏览: 0

1、注意

java 对大小写敏感

main 方法必须声明为 public

2、注释

单行://

多行:/* */

文档注释: /** */

3、数据类型

java 是一种强类型语言,意味着必须为每个变量声明一种类型。java中共有 8 种基本类型。每种类型长度固定,与机器无关。

注意:java 没有任何无符号类型

(1)整型: long :8字节 int :4字节 short :2字节 byte :1字节

(2)浮点型: double :8字节 float :4字节

float 类型有后缀 F,没有后缀时默认为 double 类型(加后缀 D 也一样)

(3)char 类型

char 类型用于表示单个字符。在 java 中,char 类型使用 UTF-16 编码描述一个代码单元,建议少用 char 类型。

(4)boolean 类型: 类型只有两个值: false 和 true,用来判定逻辑条件,与整型值之间不能相互转换

注意:c++ 中,数值或指针可以代替 boolean,整数0相当于 false,非0相当于 ture,java 中则不行。

4、变量

变量名大小写敏感,长度没有限制

(1)java中,不区分变量的声明与定义。

(2)利用 final 声明常量,const 是 java 的保留关键字,目前还未使用。

5、运算符

(1) c++ 中无法确定 >> 是算术移位还是逻辑移位,java 中消除了这种含糊性

java 中 , >>> 运算符将用 0 填充高位, >>运算符用符号位填充高位,没有 <<< 运算符

(2)数值类型之间的转换

\

上图为数值类型之间的合法转换,实心箭头表示无信息丢失的转换,虚心箭头有可能有精度损失< http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+ICAgICCjqDOjqce/1sbA4NDN16q7uzwvcD4KPHA+ICAgICAgICAgICAgICDT77eoJiMyNjY4NDvKvcrH1NrUssCousXW0Lj4s/bP69Kq16q7u7XExL+x6sDg0M2hozwvcD4KPHA+ICAgICAgICAgICAgICDI57n70qq21LihtePK/b340NDJ4cjr1MvL46OstcO1vdfuvdO9/LXE1fvK/aOsv8nS1Mq508MgTWF0aC5yb3VuZCC3vbeoo7o8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">double x = 9.992; int nx = (int)Math.round(x); // 变量 nx 的值为 10

(4)运算符级别:java与c++ 不同,不使用逗号运算符,不过 for语句中可以使用逗号分隔表达式

6、字符串

java 没有内置的字符串类型,在标准 java 类库中提供了一个预定义类 String。

(1)子串

String 类的 substring 方法可以从一个较大的字符串提取出一个子串(第二个参数时不想复制的第一个位置),如:

String aa = "Hello";

String s = aa.substring(0,3);

//s 为由字符 "Hel" 组成的字符串

(2)拼接

java 允许使用 + 号连接(拼接)两个字符串

String a = "Hello";
String b = "java";
String c = a + b; // c 为:Hellojava

int d = 8;
String e = "Hi" + d ;//字符串与非字符串拼接
//非字符串被转换成字符串, e 为 Hi8
System.out.pritln("The d is" + d);//常用于输出语句中

(3)不可变字符串

String类没有提供修改字符串的方法,可以先提取需要的字符,再拼接上替换的字符,如:

String aa = "Hello";

aa = aa.substring(0,3) + "P!";

// aa 为 Help!

(4)检测字符串是否相等

可以使用 equals 方法检测: s.equals(t) ,若 s与 t 相等,则返回 true ,否则返回 false。

一定不能使用 == 进行检测,它只能确定两个字符串是否放置在同一个位置上。(C++中的 string 类重载了 == 使其可以检测)

想要比较两字符串是否相等,而不区分大小写,使用 s.equalsIgnoreCase(t)

7、输入输出

(1)读取输入

需要首先构造一个 Scanner 对象,并与"标准输入流" System.in 关联。

然后使用 nextLine 输入一行,next 读取一个单词,nextInt 读取一个整数,nextDouble 读取一耳光浮点数

并在程序开始添加 import java.util.*; (Scanner 类定义在 java.util 包中,当类不是定义在基本 java.lang 包中时,都要将包加载进来)

实例:

import java.util.*;
public class MyInput 
{
	public static void main(String[] args)
	{
		//构造 Canner对象  iput
		Scanner iput = new Scanner(System.in);
		
		System.out.print("What is your name  ");
		String name = iput.nextLine();
		
		System.out.print("How old are you  ");
		int age = iput.nextInt();
		
		System.out.println("Hello"+name+".Next year,"
				+ "you'll be"+(age+1));
	}
}

\

(2)格式化输出

java 沿用了 C 语言库函数中的 printf 方法。

还可以使用静态的 String.format 方法创建一个格式化的字符串,而不打印输出。

8、控制流程

(1)与C++不同,不能在嵌套的两个块中声明同名的变量。

(2)java 控制流程结构与 c++ 一样,有很少的例外情况,没有 goto 语句,但break语句可以带标签,而且还添加二楼一种变形的 for 循环

9、大数值

如果基本的整数和浮点数精度不够,可以使用 java,math 包中的: BigInterger 类实现任意精度的整数运算, BigDecimal 实现任意精度的浮点数运算。

10、数组

使用 new 运算符创建数组:

int[] a = new int[100];

(1)for each 循环

java 新增的功能很强的循环结构,可以用来依次处理数组中的每个元素(其他类型的元素集合亦可)而不必为指定下标值而分心。

格式: for ( variable : collection ) statement

例如:

for (int element:a)
     System.out.println(element);

//打印数组 a 的每一个元素

(2)数组初始化以及匿名数组

int [] aa = {1,2,3,4,5};

//注意,这种语句不需要调用 new

//甚至还可以初始化一个匿名数组:
//new int[] {7,8,9,10,11}
//使用这种方法可以在不创建新变量的情况下重新初始化一个数组
aa = new int[] {7,8,9,10,11};


在 java 中允许数组长度为0,可以创建一个长度为0的数组: new elementType[0]

(3)数组拷贝

允许将一个数组变量拷贝给另一个数组变量,这两个变量将引用同一个数组。

如果希望将一个数组的所有值拷贝到一个新的数组中去,就要使用 Arrays 类的 copyOf 方法。

(4)数组排序

可是使用 Arrays 类中的 sort 方法,这个方法使用了优化的快速排序算法。

实例:

import java.util.*;
public class LotteryDrawing 
{
	public static void main(String[] args)
	{
		Scanner in = new Scanner(System.in);
		System.out.print("How many numbers do you need to draw  ");
		int k = in.nextInt();
		
		System.out.print("What is the highest number you can draw  ");
		int n = in.nextInt();
		
		int[] numbers = new int[n];
		for (int i=0;i
  
   
\

(5)二维数组

跟一维数组类似,使用之前需要用 new 进行初始化,若直接用数据进行初始化则不调用 new。

要使用 for each 循环访问二维数组 a 的所有元素,需要使用两个嵌套的循环,如下:

for (double[] row : a)
    for(double value : row)
            {.....}


(6)不规则数组

实例:杨辉三角:

public class LotteryArray 
{
	public static void main(String[] args)
	{
		final int NMAX = 10; 
		int[][] odds = new int[NMAX+1][];//构造10行的二维数组
		for (int n=0;n<=NMAX;n++)
			odds[n] = new int[n+1]; //每行比上一行多一个元素
		
		for (int n=0;n