Java基础语法1

目录

  • 1. Java、API、IDE和JDK
    • 1.1 Java
    • 1.2 API(应用程序接口)
    • 1.3 IDE(提供集成开发环境的软件)
    • 1.4 JDK(Java开发工具包)
  • 2. 一个简单的Java程序
  • 3. 创建、编译和执行Java程序
    • 3.1 创建
    • 3.2 编译
    • 3.3 执行Java程序
  • 4. 数值数据类型和操作
    • 4.1 数值数据类型
    • 4.2 产生随机数
    • 4.3 陷阱
    • 4.2 数值操作符
    • 4.3 幂运算
  • 5. 从控制台读取输入
  • 6. 示例:显示当前时间
    • 开发一个以GMT(格林威治标准时间)来显示当前时间的程序,以小时:分钟:秒的格式来显示
  • 7. 数学函数静态方法
    • 7.1 三角函数方法
    • 7.2 指数函数方法
    • 7.3 取整方法
    • 7.4 max、min和abs方法
  • 8. 字符数据类型和操作
    • 8.1 转义字符
    • 8.2 字符型数据与数值型数据转换
    • 8.3 字符的比较
    • 8.4 Character类静态方法
  • 9. String类型和操作
    • 9.1 String对象实例方法
    • 9.2 读取字符串和字符
    • 9.3 String对象的比较方法
    • 9.4 获取字符串中的字符或子字符串
    • 9.5 字符串和数字相互转化
  • 10. 格式化输出

1. Java、API、IDE和JDK

1.1 Java

Java是一个全面且功能强大的语言,可用于多种用途。Java有三个版本:
1.Java标准版(Java SE)可用来开发客户端的应用程序。
2.Java企业版(Java EE)可用来开发服务器端的应用程序。
3.Java微型版(Java ME)可用来开发移动设备的应用程序。
Java SE是基础,其他Java技术都基于Java SE

1.2 API(应用程序接口)

API也成为库,包括为开发Java程序而预定义的类和接口,如今API仍在扩展。
调用API即使用前辈写好的现成的class

1.3 IDE(提供集成开发环境的软件)

编辑、编译、链接、调试和在线帮助都集成在一个图形用户界面中,只需在一个窗口中输入源代码在窗口中打开已有的文件,然后单击按钮就可以编译和运行代码。

1.4 JDK(Java开发工具包)

JDK是由一套独立程序构成的集合,每个程序都是从命令行调用的,用于开发和测试Java程序。

2. 一个简单的Java程序

public class Hello{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

1.第一行定义了一个类(class)名为Hello,每个Java程序至少应该含有一个类,按照惯例,类名都是以大写字母开头。
2.第二行定义了一个主方法main,程序总是从main方法开始执行。
3.Java中每条语句都以分号(;)结束。

3. 创建、编译和执行Java程序

3.1 创建

创建的Java源程序必须保存为.java文件,文件名必须与公共类名完全相同。例如,上述源代码文件必须命名为Hello.java,因为公共类名为Hello。

3.2 编译

在命令行中进入源文件所在的文件夹,cd Desktop表示进入Desktop文件夹,E:表示进入E盘。进入到源文件所在的文件夹后输入 javac 文件名.java。表示编译“文件名”这个文件,由JDK生成编译后的文件.class。例如上述源代码文件 输入 javac Hello.java。表示编译,会自动生成Hello.class文件,表示编译成功。

3.3 执行Java程序

编译成功后,在命令行中输入java 文件名。由Java虚拟机JVM来执行程序。例如上述源代码文件 输入java Hello。表示执行程序,命令行中会输出Hello World!

4. 数值数据类型和操作

4.1 数值数据类型

以下为基本的六种数值数据类型以及它们的范围

类型名 范围
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位)

4.2 产生随机数

可以使用Math.random()来获得一个0.0到1.0之间的double值,不包括1.0

4.3 陷阱

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

4.2 数值操作符

运算符 名字 实例 结果
+ 2 + 3 5
- 5 - 3 2
* 2 * 3 6
/ 6 / 3 2
% 求余 20 % 3 2

当除法操作都是整数时,结果为整数,小数部分被舍去,当两边精度不同时,计算机自动将两边的数字转化为精度最高的一方,使两边精度相同。例如:
5 / 2 = 2
5 / 2.0 = 2.5

4.3 幂运算

在Java API的Math类中含有pow方法。可用Math.pow(a,b)来计算ab,并返回结果。

5. 从控制台读取输入

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类型的数
    }
}

6. 示例:显示当前时间

开发一个以GMT(格林威治标准时间)来显示当前时间的程序,以小时:分钟:秒的格式来显示

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,则输出为当前北京时间。

7. 数学函数静态方法

7.1 三角函数方法

方法 描述
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

7.2 指数函数方法

方法 描述
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

7.3 取整方法

方法 描述
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类型

7.4 max、min和abs方法

方法 描述
max(a,b) 返回最大值
min(a,b) 返回最小值
abs(a) 返回绝对值

8. 字符数据类型和操作

8.1 转义字符

若想输出He said "Java is fun"这句话
无法直接println
System.out.println(“He said “Java is fun””);
编译器会认为第二个引号为结束符,剩余字符不知道如何处理。
此时需要用到转义字符

转义序列 名称 输出
\b 退格键 相当于少一个字符
\t Tab键 相当于多了四个空格
\n 换行符 换到下一行
\f 换页符 下一页
\r 回车符 换到下一行
\ 反斜杠 多输出一个\
\ ” 双引号 多输出一个"

8.2 字符型数据与数值型数据转换

char ch = (char)65 // ch为A
int i = (int) ‘a’ //i为97

8.3 字符的比较

两个字符可以用关系操作比较,通过比较两个字符的ASCII码来实现

8.4 Character类静态方法

方法 描述
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

9. String类型和操作

9.1 String对象实例方法

方法 描述
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都被删除

9.2 读取字符串和字符

Scanner sc = new Scanner(System.in);
String str = sc.nextLine();//读取字符串
char x = sc.nextLine().charAt(0);//读取字符

9.3 String对象的比较方法

方法 描述
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

9.4 获取字符串中的字符或子字符串

方法 描述
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的下标

9.5 字符串和数字相互转化

int num = Integer.parseInt("5");//字符转为int
double num = Double.parseDouble("12.34");//字符转为double
String str = num + "";//任何数值+“” 可转化为字符串

10. 格式化输出

标识符 输出 举例
%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

你可能感兴趣的:(java)