java核心技术卷1第3章----java基本的程序设计结构
==================java核心技术卷1第3章----java基本的程序设计结构=================
本章主要内容:
1 一个简单的java程序 2 注释
3 数据类型 4 变量
5 运算符 6 字符串
7 输入输出 8 控制流
9 大数值 10 数组
================================================================================
1 简单的java程序
如:
public class FirstExample{
public static void main(String[] args){
System.out.println("We will not use 'Hello world!'");
}
}
本部分需注意:
java区分大小写
关键字class后面跟类名,类名的命名方式为首字母大小写形式,如FirstExample
源代码的文件名必须与公共类的名字相同,并用.java作为扩展名(如本文件只有FirstExample类,则用FirstExample.java命名该文件)
在命名并输入没有任何错误的情况下,java编译器将该字节码文件编译生成一个FirstExample.class的文件,然后再执行.class文件
java中的main函数必须是public ,且是static
2 注释:有3中方式
// 用于单行注释,如方法后面的说明
/* */ 用于多行注释
/** */ 也可多行注释,一般用于详细内容介绍和自动生成文档,如在写程序前的功能模块介绍,作者信息,修改时间等
3 数据类型:
java中的数据类型共有8中,其中有4种整形,2种浮点型,1种字符类型,1中表示真值的boolean类型(注意不是bool)
4种数据类型:
int 占4字节 范围:2 147 483 648---2 147 483 647 ,计算方式为:-2^31---2^31-1,四个字节共32位
short 2字节 -2^15--2^15-1
long 8字节 -2^63--2^63-1
byte 1字节 -2^7--2^7-1
注意:在java中,各数据类型所占字节没有32位于64位的区别,因为java不直接由机器执行代码,是由虚拟机先将字节码解释成机器码,再交给机器执行
2中浮点类型:
float 4字节 范围:正负3.402 823 47E+38F(有效位数为6-7位)
double 8字节 正负1.797 693 134 862 315 70E+308(有效位数为15位)
绝大部分浮点型为double类型,float类型的数值有F或f后缀,没有后缀一般都默认为double
所有的浮点数值计算都遵循IEEE 754标准,用于表示溢出和出错情况的3个特殊浮点数值
正无穷大
负无穷大
NaN
char类型
char类型原本用于表示单个字符,目前部分Unicode字符也可用char类型的值进行描述,char类型的字符用单引号''括起来
注意不是"","A"表示含有A的字符串,其末尾含有字符串结束符,'A'则表示单个A字符
特殊字符需要转义,如:
转义序列 名称 Unicode值
\b 退格 \u0008
\t 制表 \u0009
\n 换行 \u000a
\r 回车 \u000d
\" 双引号 \u0022
\' 单引号 \u0027
\\ 反斜杠 \u005c
boolean类型
boolean类型有两个值:true和false,用于判断逻辑条件
4 变量:java中的每一个变量都有一个类型,声明变量时,变量类型位于变量名之前,
变量名必须有字母开头,并由字母或数字组成的序列,不能用java保留字做变量名
变量初始化:声明变量之后必须用复制语句对变量进行显示初始化,不用使用未初始化的变量
与C++不同,java没有声明与定义的区别,在C++中:int i=10;为定义,extern i;为声明
常量:java中用final指示常量,声明的变量一旦被赋值,不能进行修改,类似C++中的const
对于一个类中的多个方法想要使用一个常量,可以将该常量声明为:static,因为static声明的变量存在静态区,
只属于类本身,并不属于某一个实例
5 运算符:+,-,*,/ 分别表示加减乘除,正数被0出将产生一个异常,浮点数被0整除会得到无穷大或NaN结果
数学函数及常量
幂运算:Math.pow(x,a); 表示x的a次幂
floorMod方法是解决一个长期存在的有关正数余数的问题,floorMod(position+adjustment,12)表示(position+adjustment)%12
sqrt(x);求x的平方根
数值类型转换:如图实线无精度丢失,虚线有精度丢失
强制类型转换:如
double x=9.997;
int nx=(int)x;
将double型的x 强制转换成int型
赋值运算:x+=2; 表示x=x+2; 一般运算符在=的左边,如*=,%=
自增自减运算符:++n,n++,前++表示先对n自增,再进行运算,后++表示先进行运算,在对n自增
关系和boolean运算符:
检测相等用两个等号:==
检测不相等用:!=
E1&&E2 :E1和E2都为True,结果为True,否则为False. 若E1为False,E2则不进行计算
E1||E2 :E1和E2都为False,结果为False,任意表达式为True,结果为True,若表达时候E1为True,E2则不进行计算
三元操作符:condition?expression1:expression2;
若condition条件成立,返回expression1的值,否则返回expression2的值
位运算符:
& and
| or
^ xor
~ not
括号与运算符级别:
如果不适用括号,运算符级别一般按照从左至右运算
&&运算级别比||级别高
枚举类型:变量的取值只在一个有限的集合里,枚举类型包括有限个命名的值
如 enum Size{SMALL,MEDIUM,LARGE,EXTRA_LARGE};
6 字符串:
6.1 Java字符串即使Unicode字符序列,java没有内置的字符串类型,而是在标准java类库中提供了一个预定义类,
叫做String ,每个用双引号括起来的字符串都是String的一个实例
6.2 子串:String类的substring 方法可以从一个字符串提取出另一个字符串,如
6.3 拼接:用+号拼接
6.4: 不可变字符串:java没有提供用于修改字符串的方法,不能修改java字符串中的字符。要实现修改字符串的功能
首先提取想要的字符,再将要替换的字符拼接上去
6.5 检测字符串相等:equals方法,如:s.equals(t); 如s与t相等返回true,否则返回false
判断过程不区分大小写可用equalsIgnoreCase();
6.6 空串与Null: 空串""为长度为0的字符串,它是一个java对象,长度为0,内容为空,可用if(str.length()==0)判断
null这是一个存放特殊值的String 变量,表示没有任何对象与改变量关联,可用if(str==null)判断
6.7 构建字符串
在由较短字符串构建字符串时,采用拼接方式效率较低,每次拼接过程中都会创建一个新的string 对象,耗时且占空间
使用StringBuilder类可避免此类问题,首先构建一个空的字符串构建器,使用append方法进行构建,如
StringBuilder builder=new StringBuilder();
builder.append(ch);
builder.append(str);
6.8 输入输出
输入:首先构造Scanner对象,与System.in关联,
Scanner in=new Scanner(System.in);
String nextLine(); 读取输入下一行内容
String next(); 读取输入的下一个单词
String nexInt(); 读取下一个表示整数的字符序列
输出:System.out.println();
格式化输出:System.out.printf(),可以使用多个参数输出
String.format(); 可创建一个格式化的字符串,不打印输出
文件输入输出:
Scanner in=new Scanner(Paths.get("myfile.txt"),"UTF-8");
文件命中有反斜杠'\',则需要再额外加一个‘\' 转义,如:C\\myfile\\myfile.txt
7 控制流程
7.1 块(复合语句):是由一对大括号括起来的若干个语句,块先定了变量的作用域,一个块可以嵌套在另一个块中,
但不能再嵌套的两个块中声明同名的变量
7.2 条件语句:
if(condition){
statement;
...
}
else{
statement1;
...
}
循环:有以下几种
while(condition){
statement;
...
}
for(int i=begin;i<condition;i++){
statement;
...
}
多重选择:swithc语句
swithc(choice){
case1:
...
break;
case2:
...
break;
...
default:
...
break;
}
8 大数值
若整形和浮点型的精度都不满足要求,java.math包中的BigInteger和BigDecimal可以处理包含任意长度数字序列的数值
BigInteger实现了任意精度的整形运算,BigDecimal实现任意精度的浮点数运算
使用静态的valueOf方法可以将普通的数值转换成大数值
9 数组
数组为一种数据结构,用于存储同一类型值的集合。创建一个数字数组是,所有元素都初始化为0,boolean数组元素都初始化为false
数组一旦创建,大小不可改变,若需要经常在运行过程改变数组的大小,可使用另外一种数据结构:ArrayList
9.1 for each循环:
for(variable:collection)statement
对暂存于集合中的每个元素,执行相应语句
9.2 数组初始化及匿名数组
创建数组并初始化如以下形式:
int[] samllPrimes={2,3,5,7,11,13};
9.3 匿名数组创建如:new int[]{17,19,23,29};
9.4 数组拷贝:Arrays类中的copyOf方法可将一个数组的所有值拷贝到另一个数组中去
9.5 数组排序:Arrays类中的Sort方法,使用了优化的快速排序算法
9.6 不规则数组:java实际上没有多维数组,只有一维数组,多维数组被解释为数组的数组
对于二维数组balances, balances[i]表示引用第i个子数组,即二维表中的第i行,
balances既可以单独存取数组的某一行,也可以让两行交换,还可以构造一个每一行的长度都不同的数组
即不规则数组。当需要创建不规则数组时,需要单独创建行数组。