Java(三)Java基本的程序结构,
Java(三)Java基本的程序结构,
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)数值类型之间的转换
上图为数值类型之间的合法转换,实心箭头表示无信息丢失的转换,虚心箭头有可能有精度损失
(3)强制类型转换
语法格式是在圆括号中给出想要转换的目标类型。
如果要对浮点数进行舍入运算,得到最接近的整数,可以使用 Math.round 方法:
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<numbers.length;i++)
numbers[i] = i + 1;
int[] result = new int[k];
for (int i=0;i<result.length;i++)
{
//获取0到n-1之间的一个随机数
int r = (int)(Math.random()*n);
result[i]=numbers[r];
//为确保不会重复,用最后一个数值改写number[r],并将n减1
numbers[r] = numbers[n-1];
n--;
}
Arrays.sort(result);
System.out.println("Bet the following combination."
+ "It'll make you rich!");
for (int r : result) //for each 循环
System.out.println(r);
}
}
(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<odds.length;n++)//对一维进行循环
for(int k=0;k<odds[n].length;k++)//对二维进行循环
{
int lotteryOdds = 1;
for (int i=1;i<=k;i++)
lotteryOdds = lotteryOdds * (n-i+1)/i;
odds[n][k] = lotteryOdds;
}
for (int[] row : odds)
{
for (int odd : row)
System.out.printf("%4d", odd);
System.out.println();
}
}
}
相关文章
- 暂无相关文章
用户点评