java的基本程序设计结构
参考资料:《java核心技术》第三章
开始
源代码的文件名必须与公共类的名字相同,并用.java作为扩展名。
每个java程序都必须要有一个main方法,其声明格式如下:
1 |
|
java的编码机制为Unicode
注释
java的注释格式和c/c++相同,//或/**/
java的数据类型
1.基本数据类型(8种)
|整型|字节数 |
|–|–|
|int |4 |
|short|2|
|long|8|
|byte|1|
浮点型 | 字节数 |
---|---|
float | 4 |
double | 8 |
字符类型 | 字节数 |
---|---|
char | 2 |
boolean类型 | 字节数 |
---|---|
boolean | 1 |
1 | 1.基本数据类型:加上前缀OB或Ob可以写二进制数; |
从java10开始,对于局部变量,如果可以从变量的初始值推断出它ysD的类型,就不在需要声明它的类型。
1 | var vacationDays=12//vacationDays是一个整型 |
c和c++区分变量和声明和定义,而java不区分
1 | 例如 |
变量和常量
c和c++区分变量和声明和定义,而java不区分
1 | 例如 |
在java中,利用关键字final指示常量,表示这个值只能被赋值一次
布尔常量true和false是可以直接输出的,而空常量null是不能直接输出的!
枚举类型
1 | enum Size{s,m,l,e}; |
字符串
每个用双引号括起来的字符串都是String类的一个实例
java字符串由char值序列组成
String类的substring方法可以提取子串
1 | String greeting = "hello"; |
和c++一样,java允许使用‘+’来连接两个字符串
将一个字符串与一个非字符串进行连接时,后者会被转换成字符串,但是连接顺序有时候也左右着结果
1 | String s="hello"; |
String类没有提供修改字符串中某个字符的方法,只能提取想保留的字符串,再与希望替换的字符连接。
不可变字符串虽然效率不高,但是编译器可以让字符串共享!共享相同的字符,这带来的高效率远比连接字符串损失的效率高得多。
有时候需要由较短的字符串构建字符串,可以用StringBuilder类
1 | StringBuilder b=new StringBuilder();//构建一个新的字符串构建器 |
检测字符串相等不要用“==“!!!,要用equals方法或compareTo方法
“==”运算符只能确定两个字符串是否放在同一个位置上
1 | s.equals(t);//s和t相等返回true,否则返回false |
常用String API
1 | s.substring(a,b);//返回一个新字符串,包含原字符串从a到b-1的所有代码单元 |
输入和输出
输出打印到“标准输出流”
1 | System.out.println();//自动换行 |
读取输入
在程序的最前面添加一行代码
1 | import java.util.*; |
首先需要构造一个与标准输入流System.in相关联的Scanner对象
1 | Scanner in = new Scanner(System.in); |
for each循环(用于数组)
java有两种for循环,一种与c/c++一样,这里主要讲另一种for each循环
1 | int[] Arr = new Arr[n] |
它定义了一个变量用于暂存集合中的每一个元素,并执行相应的语句,该循环可以用来依次处理数组中的每一个元素
大数
如果基本的整数和浮点数精度不能够满足需求,那么可以使用java.math包中两个很有用的类: BigInteger和BigDecimal。他们可以实现任意精度的整数/浮点数运算。
看以下代码
1 | public class data { |
这时候可以运用大数
1 | public class data { |
大数的加减乘除相等都要调用其方法,不能使用运算符进行运算,并且其方法内的参数也为大数
数组
数组长度不要求是常量:int[] a=new int[n];会创建一个长度为n的数组
一旦创建了数组,就不能改变它的长度。
还可以声明一个匿名数组:
1 | small = new int[]{1,2,3,4,5,6}; |
数组拷贝
在java中允许数组拷贝,此时两个变量将引用同一个数组
1 | int[] arr = small; |
Arrays类
常用API(都为static方法,不需要创建对象再用)
1 | Arrays.toString(xxx arr[]);//返回一个包含a中元素的字符串,元素用中括号包围,逗号隔开 |
多维数组
二维数组也称为矩阵
在java中实际不存在多维数组,多维数组被解释为”数组的数组”,其数组每个元素都是一个数组,因此可以单独地访问数组的某一行
1 | double balance[][] = new double[m][n]; |
for each循环处理二维数组
1 | for(double row[]: balance){ |
可以创建不规则数组
1 | int arr[][] = new int[max][]; |
命令行参数
在java程序的main方法中,程序名并没有存储在args数组中。(与c不同)