Java是一个全面且功能强大的语言,可用于多种用途。Java有三个版本:
1.Java标准版(Java SE)可用来开发客户端的应用程序。
2.Java企业版(Java EE)可用来开发服务器端的应用程序。
3.Java微型版(Java ME)可用来开发移动设备的应用程序。
Java SE是基础,其他Java技术都基于Java SE
API也成为库,包括为开发Java程序而预定义的类和接口,如今API仍在扩展。
调用API即使用前辈写好的现成的class
编辑、编译、链接、调试和在线帮助都集成在一个图形用户界面中,只需在一个窗口中输入源代码在窗口中打开已有的文件,然后单击按钮就可以编译和运行代码。
JDK是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试Java程序。
public class Hello{
public static void main(String[] args){
System.out.println("Hello World!");
}
}
1.第一行定义了一个类(class)名为Hello,每个Java程序至少应该含有一个类,按照惯例,类名都是以大写字母开头。
2.第二行定义了一个主方法main,程序总是从main方法开始执行。
3.Java中每条语句都以分号(;)结束。
创建的Java源程序必须保存为.java文件,文件名必须与公共类名完全相同。例如,上述源代码文件必须命名为Hello.java,因为公共类名为Hello。
在命令行中进入源文件所在的文件夹,cd Desktop表示进入Desktop文件夹,E:表示进入E盘。进入到源文件所在的文件夹后输入 javac 文件名.java。表示编译“文件名”这个文件,由JDK生成编译后的文件.class。例如上述源代码文件 输入 javac Hello.java。表示编译,会自动生成Hello.class文件,表示编译成功。
编译成功后,在命令行中输入java 文件名。由Java虚拟机JVM来执行程序。例如上述源代码文件 输入java Hello。表示执行程序,命令行中会输出Hello World!
以下为基本的六种数值数据类型以及它们的范围
类型名 | 范围 |
---|---|
byte | -27 (-128) ~ 27 - 1 (127) |
short | -215 (-32768) ~ 215 - 1 (32767) |
int | -231 (-2147483648) ~ 232 - 1 (2147483647) |
long | -263 (-9223372036854775808) ~ 263 - 1 (9223372036854775807) |
float | -3.4 * 1038 ~ 3.4 * 1038 (有效数字6-7位) |
double | -1.7 * 10-308~1.7 * 10308(有效数字15-16位) |
可以使用Math.random()来获得一个0.0到1.0之间的double值,不包括1.0
float和double类型的数值的相等测试并不可靠
例如:
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
System.out.println(x == 0.5);
输出结果为false,这里的x并不精确等于0.5,而是等于0.5000000000000001(16位)。
但可以通过测试的两个数的差距是否小于某个阈值,来判断两个数是否相等。如果ε足够小,满足| x - y | < ε,则认为x与y相等。
final double EPSILON = 1E-14; //final表示固定值,定义后不会再改变
double x = 1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1;
if(Math.abs(x - 0.5) < EPSILON)
System.out.println("Yes");
else
System.out.println("No");
输出为Yes
运算符 | 名字 | 实例 | 结果 |
---|---|---|---|
+ | 加 | 2 + 3 | 5 |
- | 减 | 5 - 3 | 2 |
* | 乘 | 2 * 3 | 6 |
/ | 除 | 6 / 3 | 2 |
% | 求余 | 20 % 3 | 2 |
当除法操作都是整数时,结果为整数,小数部分被舍去,当两边精度不同时,计算机自动将两边的数字转化为精度最高的一方,使两边精度相同。例如:
5 / 2 = 2
5 / 2.0 = 2.5
在Java API的Math类中含有pow方法。可用Math.pow(a,b)来计算ab,并返回结果。
Scanner sc = new Scanner(System.in);
new表示创建了一个Scanner,将它的引用赋值给变量sc,相当于起了个名字叫sc,可以通过sc调用Scanner的方法。
实例:
import java.util.Scanner;//在包java.util中导入Scanner类
import java.util.*;//导入java.util中所有的类
//1 2行有一个就行
public class Read(){
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();//读取一个int类型的整数
double b = sc.nextDoulbe();//读取一个double类型的数
byte c = sc.nextByte();//读取一个Byte类型的整数
short d = sc.nextShort();//读取一个short类型的整数
long e = sc.nextLong();//读取一个long类型的整数
float f = sc.nextFloat();//读取一个float类型的数
}
}
public class Time{
public static void main(String[] args){
long total_ms = System.currentTimeMillis();//获取1970.1.1 0点到现在的毫秒数
long total_second = total_ms / 1000;
long current_second = total_second % 60;
long total_min = total_second / 60;
long current_min = total_min % 60;
long total_hour = total_min / 60;
long now = total_hour % 24;
System.out.println(now + ":" + current_min + ":" + current_second);
}
}
输出为格林尼治当前时间,now =(now + 8)% 24,则输出为当前北京时间。
方法 | 描述 |
---|---|
sin(radians) | 返回sin值 |
cos(radians) | 返回cos值 |
tan(radians) | 返回tan值 |
toRandians(degree) | 将角度值转化为弧度值 |
toDegrees(radians) | 将弧度值转化为角度值 |
asin(a) | 返回a的arcsin弧度值 |
acos(a) | 返回a的arccos弧度值 |
atan(a) | 返回a的arctan弧度值 |
例如:
Math.toDegree(Math.PI / 2) // 返回90.0
Math.toRadians(30) //返回0.5236(π / 6)
Math.sin(Math.PI / 6) //返回0.5
方法 | 描述 |
---|---|
exp(x) | 返回e的x次方 |
log(x) | 返回e的自然底数 |
log10(x) | 返回以10为底的对数 |
pow(a,b) | 返回a的b次方 |
sqrt(x) | (x >= 0)返回x的平方根 |
例如:
Math.exp(1) //返回e
Math.log(Math.E) //返回1
Math.log10(100) //返回2.0
Math.sqrt(4) //返回2.0
方法 | 描述 |
---|---|
ceil(x) | 向数轴右边取整。返回double类型 |
floor(x) | 向数轴左边取整。返回double类型 |
rint(x) | 向最接近的整数取整,若两边距离相等,取偶数返回。返回double类型 |
round(x) | 相当于Math.floor(x+0.5),若x为float返回int类型,若x为double返回long型 |
例如:
Math.ceil(2.1) //返回3.0
Math.floor(-2.1) //返回-3.0
Math.rint(2.4) //返回2.0
Math.round(2.6f) //返回3 int类型
Math.round(2.6) //返回3 long类型
方法 | 描述 |
---|---|
max(a,b) | 返回最大值 |
min(a,b) | 返回最小值 |
abs(a) | 返回绝对值 |
若想输出He said "Java is fun"这句话
无法直接println
System.out.println(“He said “Java is fun””);
编译器会认为第二个引号为结束符,剩余字符不知道如何处理。
此时需要用到转义字符
转义序列 | 名称 | 输出 |
---|---|---|
\b | 退格键 | 相当于少一个字符 |
\t | Tab键 | 相当于多了四个空格 |
\n | 换行符 | 换到下一行 |
\f | 换页符 | 下一页 |
\r | 回车符 | 换到下一行 |
\ | 反斜杠 | 多输出一个\ |
\ ” | 双引号 | 多输出一个" |
char ch = (char)65 // ch为A
int i = (int) ‘a’ //i为97
两个字符可以用关系操作比较,通过比较两个字符的ASCII码来实现
方法 | 描述 |
---|---|
isDigit(ch) | 如果ch是数字,返回true |
isLetter(ch) | 如果ch是字母,返回true |
isLetterOrDigit(ch) | 如果ch是字母或数字,返回true |
isLowerCase(ch) | 如果ch是小写,返回true |
isUpperCase(ch) | 如果ch是大写,返回true |
toLowerCase(ch) | 返回ch小写形式 |
toUpperCase(ch) | 返回ch大写形式 |
例如:
Character.toLowerCase(‘A’) //输出a
方法 | 描述 |
---|---|
length() | 返回字符数 |
charAt(i) | 返回字符串中i位置的字符 |
concat(s1) | 将本字符串和s1字符串连接,返回一个新字符串 |
toUpperCase() | 返回一个新字符串,将所有字母大写 |
toLowerCase() | 返回一个新字符串,将所有字母小写 |
trim() | 去掉字符串左右两边多余的空格 |
以下两句等效
String s3 = s1.concat(s2);
String s3 = s1 + s2;
String s2 = s1.trim() //s1中开头末尾所有空格、\n、\t都被删除
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();//读取字符串
char x = sc.nextLine().charAt(0);//读取字符
方法 | 描述 |
---|---|
equals(s1) | 判断和s1是否完全相等 |
equalsIgnoreCase(s1) | 判断和s1是否完全相等,忽略大小写 |
compareTo(s1) | 返回一个大于0或等于0或小于0的数,表示字符串大于s1或等于s1或小于s1 |
compareToIgnoreCase(s1) | 忽略大小写 |
startsWith(str) | 判断字符串是否以str开始 |
endsWith(str) | 判断字符串是否以str结尾 |
contains(s1) | 判断字符串s1是否为字符串的子串 |
例如:
String s1 = “abcd”;
String s2 = “abcf”;
s1.compareTo(s2) //返回-2
s2.compareTo(s1) //返回2
String s3 = “Hello World”;
s3.startsWith(“Hello”) //返回true
方法 | 描述 |
---|---|
substring(beginIndex,endIndex) | 返回从beginIndex到endIndex-1的子字符串 |
substring(beginIndex) | 返回从beginIndex到字符串结尾的子字符串 |
indexOf(ch) | 返回字符ch出现的第一次的下标 |
indexOf(s) | 返回字符串s出现的第一次的下标 |
lastIndexOf(ch) | 返回字符ch最后一次出现的下标 |
lastIndexOf(s) | 返回字符串s最后一次出现的下标 |
indexOf(ch,fromIndex) | 返回从fromIndex后第一次出现ch的下标 |
indexOf(s,fromIndex) | 返回从fromIndex后第一次出现s的下标 |
lastIndex(ch,fromIndex) | 返回从fromIndex前第一次从最后出现ch的下标 |
lastIndexOf(s,fromIndex) | 返回从fromIndex前第一次出现s的下标 |
int num = Integer.parseInt("5");//字符转为int
double num = Double.parseDouble("12.34");//字符转为double
String str = num + "";//任何数值+“” 可转化为字符串
标识符 | 输出 | 举例 |
---|---|---|
%b | 布尔值 | true或false |
%c | 字符 | ‘a’ |
%d | 十进制整数 | 10 |
%f | 浮点数 | 45.10000 |
%e | 科学计数法形式的数 | 4.5e+03 |
%s | 字符串 | “Hello” |
例如:
%6c c若不满6位,在前面补空格,否则直接输出c
%10s s若不满10位,在前面补空格,否则直接输出s
%5.2f 保留两位小数,且总宽度为5,不满则补空格,否则直接输出
public class Main{
public static void main(String[] args){
System.out.printf("%5.2f",0.3564681);
System.out.println();
System.out.printf("%3.4f",0.1321684);
}
}
输出“ 0.36”
输出“0.1322”