1、控制台输入输出
(1)输入
import java.util.Scanner; //或import java.util.*;从java.util包导入Scanner类
Scanner input=new Scanner(System.in); //声明一个Scanner类型的变量,创建一个对象
double radius=input.nextDouble(); //调用对象的方法
其中next方法包括nextByte()、nextShort()、nextInt()、nextLong()、nextFloat()、nextDouble()、next()、nextLine()等。
(2)输出
System.out.println();//显示完字符串后,将光标移至下一行
System.out.print();//显示完字符串后,不会将光标移至下一行
System.out.printf(“countis %d,amount is %f”,count,amount);//格式化输出,输出宽度不足10,在前面加空格(如果%后面有0则补0),多于10则自动增加宽度。在%后面加-,则左对齐。%后面加,千位分隔符。%n与平台无关的换行。要在格式字符串里输出字面量%,则需输入%%。printf直接调用了format,与System.out.format用法相同。
格式 | 数据类型 |
%10d | 十进制整数 |
%10.2f | 浮点数 |
%10.2e | 科学计数法 |
%10c | 字符 |
%10b | 布尔值 |
%10s | 字符串 |
2、标识符、变量和常量
标识符是由字母、数字、下划线(_)和美元符号($)构成的字符序列,不能以数字开头,不能是保留字、true、false或null。区分大小写。避免采用缩写,用完整的词汇更有描述性。
类名每个单词的首字母大写XxxYyyZzz;变量名和方法名使用小写字母开头xxxYyyZzz;包名所有字母小写xxxyyyzzz。大写常量中所有字母,两个单词间用下划线连接XXX_YYY。
变量指在程序中可能被改变的值,声明和赋初值尽可能一步完成;常量指在其生存期内值不可改变的量,最好在同一条语句中声明和赋初值,且只能赋值一次。常量可以是整数、小数、布尔型、字符、字符串、null等形式。
datatype variableName=value;
final datatype CONSTANT_NAME=value;
3、基本数据类型
大类 | 类型 | 默认值 | 位数 | 范围 |
整型 | byte | 0 | 8 | -128~127 |
short | 0 | 16 | -32,768~32,767 | |
int | 0 | 32 | -2,147,483,648~2,147,483,647 | |
long | 0 | 64 | -9,223,372,036,854,775,808 ~9,223,372,036,854,775,807 | |
浮点型 | float | 0.0 | 32 | 负数-3.4E+38~-1.4E-45 正数1.4E-45~3.4E+38 |
double | 0.0 | 64 | 负数-1.7E+308~-4.9E-324 正数4.9E-324~1.7E+308 | |
字符型 | char |
| 16 | 单个字符或转义序列 |
布尔型 | boolean | false | 1 | 1(ture) 0(false) |
(1)字符型
字符型字面量包括单个字符或转义序列,用单引号括住。
一个字符在计算机中以0和1构成的序列来存储,把字符映射到它的二进制形式的过程称为编码。Unicode码是其中的一种编码方案,它支持使用世界各种语言所书写的文本的交换、处理和显示。一个16位的Unicode码产生65536个字符,用以\u开头的4位十六进制数表示,范围从’\u0000’到’\uFFFF’。其中从’\u0000’到’\u007F’对应128个ASCII字符。
字符 | ASCII十进制编码值 |
‘0’~’9’ | 48~57 |
‘A’~’Z’ | 65~90 |
‘a’~’z’ | 97~122 |
转义序列 | 名称 |
\b | 退格 |
\t | 水平制表符 |
\n | 换行符 |
\f | 换页符 |
\r | 回车符 |
\\ | 反斜杠 |
\" | 双引号 |
\' | 单引号 |
两个字符可以使用关系操作符进行比较。
Character类中的方法:isDigit(ch)、isLetter(ch)、isLetterOrDigit(ch)、isLowerCase(ch)、isUpperCase(ch)、toLowerCase(ch)、toUpperCase(ch)。
(2)数值型字面量
整型字面量默认为int型,可以赋给byte、short、int、long型。如果表示long型字面量,在数字后面加L,如果数字太长,可以在中间加下划线。整型字面量默认为十进制正数;以0b或0B开头,表示二进制字面量;以0开头,表示八进制字面量;以0x或0X开头,表示十六进制字面量。
浮点型字面量默认为double型,也可以在小数后面加d或D。如果要将小数赋给float类型的变量,需要在小数后面加f或F。浮点数还可以用e或E表示。
(3)数值类型转换
数值类型转换,包括赋值转换、方法调用转换和字符串转换(+)。扩展转换,有时不损失精度,有时损失精度(int->float),可以自动完成;窄化转换,可能丢失信息,必须显式转换。short和char都是16位,但依然需要强转。强制转换优先级较高,仅对它紧跟的部分有效。
4、运算符
(1)算术、赋值运算符
加(+)、减(-)、乘(*)、除(/)、求余(%),均是二元操作符,+-还是一元操作符。当被除数是负数时,余数才是负数。其中(+)也被称为字符串连接符,字符串和任何数据使用+相连接,都变成字符串。例:"5+5"+5+5=>5+555;"5+5"+(5+5)=>5+510;'a'+1=>98;"a"+1=>a1。如果有任何运算单元的长度超过int,那么运算结果就按照最长的长度计算;如果任何运算单元的长度都不超过int,那么运算结果就按照int来计算。
自增(++)、自减(--),有时前置与后置结果不同,避免在同一个表达式中使用多个自增自减运算符。
赋值(=)、增强赋值(+=)(-=)(*=)(/=)(%=)。
(3)关系运算符
(<)(<=)(>)(>=)(==)(!=)。
(4)逻辑运算符
非(!)、与(&&)、或(||)、异或(^)。
(5)条件运算符
布尔表达式?表达式1:表达式2;唯一的三元运算符。
(6)位运算符
通过Integer.toBinaryString()方法,将一个十进制整数转换为一个二进制字符串。
位与(&)、位或(|)、位与或(^)、求反(~);左移位(<<)右边空出来的补0;带符号位右移位(>>)最高位补上符号位,无符号位右移位(>>>)左边空出来的补0。
位操作符仅适用于四种整数类型。位操作涉及的字符转换为整数。所有的位操作符都可以构成位赋值操作符。
一个数异或同一个数两次,结果是第一个数,可用于加密。
移N位即乘或除2的N次幂,除非超出整数范围。
练习1:最有效计算2*8,2<<3;
练习2:对两个整数变量的值进行互换,n=n^m; m=n^m; n=n^m;;
练习3:获取一个数的十六进制表现形式,60&15=12,temp=60>>>4,temp&15=3。
(7)运算符优先级和结合规则
除了赋值运算符,所有的二元运算符都是左结合。
操作符 | 优先级 | |
++、-- | 后置操作符 | 最高级
最低级 |
+、-、++、-- | 一元加号减号、前置操作符 | |
(type) | 类型转换 | |
! | 非 | |
*、/、% | 算术运算符 | |
+、- | ||
<、<=、>、>= | 关系运算符 | |
==、!= | ||
^ | 逻辑运算符 | |
&& | ||
|| | ||
=、+=、-=、*=、/=、%= | 赋值运算符 |
5、选择
单分支if语句、双分支if-else语句、嵌套if语句、多分支if-else语句。
注意:
(1)最好不省略花括号,在同一个块中,else和离它最近的if匹配
(2)直接测试布尔变量,不使用==或!=;
(3)简化布尔变量赋值,eg:booleaneven=number%2==0;;
(4)比较两个浮点数值是否相等,final double EPSILON=1E-14,求绝对值<EPSILON,float设置为1E-7。
switch语句:当switch表达式的值与case语句的值匹配时,执行从该case开始的语句,直到遇到break语句或switch语句结束。switch表达式必须能计算出char、byte、short、int、enum或String型值。
switch(switch表达式){
case 值1:语句(组)1
break;//可选
case 值2:语句(组)2
break;
...
case 值N:语句(组)N
break;
default:其它情况执行的语句(组)//可选
}
6、循环
(1)循环
while(循环继续条件){}
do{}while(循环继续条件);
for(初始操作;循环继续条件;更新计数器){}如果循环控制变量只在循环体使用,就在初始操作中声明;如果省略循环继续条件,默认为true,最好不要省略;最好使用整数计数器。
for(类型 该类型变量:数组对象名){}增强for循环,不使用下标变量就可以对数组或集合对象进行遍历。
(2)break和continue
break:switch语句;终止break所在的最内层循环;跳出所指定的代码块。
continue:结束当前迭代,程序控制转向该循环体末尾。
7、常用数学函数
Java在Math类中提供了许多实用方法,来计算常用的数学函数。Math类在java.lang包中,该包中所有类隐式导入。
double常量:Math.PI和Math.E。
三角函数:sin(radians)、cos(radians)、tan(radians)、asin(a)、acos(a)、atan(a),均以弧度计。toRadians(degree)、toDegrees(radians),角度与弧度相互转换。
指数函数方法:exp(x)、log(x)(自然底数)、log10(x)、pow(a,b)、sqrt(x)。
取整方法:ceil(x)、floor(x)、rint(x)、round(x)。
abs(x)方法返回一个数(int、long、float、double型)的绝对值。
random()方法生成大于等于0.0且小于1.0的double型随机数。