Java基础

大框架

public class Main{
	public static void main(String[] args){
		
	}
}
/*
源代码的文件名必须与公共类的名字相同
如该文件的名字应为Main.java
*/

输入输出

简单控制台输出

int a = 5;
System.out.println("Hello, world! And a = " + a + ".");
//将一个文本行输出到控制台上,即末尾自带换行符
System.out.printf("Hello, world! And a = %d.",a);
//输出后不自带换行符

简单控制台输入

源文件顶部加入

import java.util.*;

或者

import java.util.Scanner;

main中使用创建一个Scannerr对象

Scanner sc = new Scanner(System.in);

读入时使用

string name = sc.nextLine();

使用结束后关闭

sc.close();

此处的关闭Scanner对象并不必要

简单的txt文本内容读取

源文件顶部加入

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.util.Scanner;

main方法中需要用throws字句标记(防止java编译器报错),即将框架改为

public class Main {
    public static void main(String[] args) throws IOException{
    
    }
}

构造Scanner对象(绝对路径中的\符号需要用\转义,即使用 \\ 替代 \ )

Scanner sc = new Scanner(Path.of("D:\\A.txt"), StandardCharsets.UTF_8);

然后从该文件中读入的方法与简单控制台输入相同

string name = sc.nextLine();

使用结束后关闭

sc.close();

此处的关闭也是非必要的

简单的txt文本内容输出

源文件顶部加入

import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;

main方法中也需要用throws字句标记,即将框架改为

public class Main {
    public static void main(String[] args) throws IOException{
    
    }
}

构造PrintWriter对象

PrintWriter out = new PrintWriter("D:\\Truth.txt",StandardCharsets.UTF_8);
//绝对路径中的\符号需要用\转义

然后从该文件中读出的方法与简单控制台输出相同

out.printf("Hello,world!");

使用结束后关闭

out.close();

需要注意的是:

  1. 不同于其他构建的对象,PrintWriter对象是真的必须关闭,否则该txt文件将被清空
  2. 如果该文件不存在,将自动创建
  3. 该文件原有的内容将被直接清空

输出的转义字符

转义字符转移对象
%dint
%ffloat,double
%.2ffloat,double保留两位有效数字

简单的函数

数学函数

平方根

double a = -0.2;
double b = Math.sqrt(a);
//b == 0.2

幂运算

double x,a,s;
s=Math.pow(x,a);
//s == x^a

数学常数

double pi = Math.PI , e = Math.E;

简化

若需要使用多次Math库中的函数,可以在源文件顶部加上

import static java.lang.Math.*;

就不必在数学方法名和常量前添加前缀“Math.”

随机函数

源文件顶部加入

import java.util.*;

或者

import java.util.Random;

main中创建一个Random对象

Random rd = new Random();

使用时

int magicNum = rd.nextInt(10);

如此函数将产生一个{0,1,2,…,9}中的int类型数据赋值给magicNum

强制类型转换

double x = 9.997;
int nxa = (int) x;//nax == 9
int nxb = (int) Math.round(x);//nxb == 10

即(int)函数是直接舍去小数部分
而Math.round()函数可以完成四舍五入的作用

运算符

三元运算符

x < y ? x : y//返回 x 和 y 中较小的那一个

转义运算符

/r或者/n可以表示换行

杂项

注释

//将这一行注释
/*
将这一段注释
*/

数据类型

类型取值
int-231 ~ 231-1 (刚刚超过20亿)
short-215 ~ 215-1
long-263 ~ 263-1
byte-27 ~ 27-1
float有效位数6 ~ 7位
double有效位数15位
char单个字符

常量

关键字final指示常量

final double PI_FIVE = 3.13159;//在main中

在多处使用的常量(示例)

public class Main{
	public static final double PI_FIVE = 3.13159;
	
	public static void main(String[] args){
		System.out.println("PI = " + PI_FIVE);
	}
}

控制语句

if else语句

if(condition){

}
else {

}

也可不加大括号,默认下一句且仅下一句为这一层的运算

while语句

while (condition){

}

或者

do
{
	
}
while (condition);

显然两者的区别在于判断语句和循环内容的执行顺序。

for语句

forint i = 0 ; i <= 99 ; i++{
	//循环100次
	if(condition)break//提前跳出循环
}

当用double类型数据作为循环条件时要相当小心
因为四舍五入时会造成误差
比如0.1的误差可能永远达不到精确的最终值
因为0.1无法精确的使用计算机内部计算时使用的二进制在有限位表示出来

无限循环示范

for (double x = 0; x != 10 ; x += 0.1)...

x会从9.99999999999998跳到10.09999999999998,然后无限循环

相比while语句,for循环一般用于既定的循环次数

switch语句

switch(choice){
	case 1:
		...
		break;
	case 2:
		...
		break;
	case 3:
		...
		break;
	default: 
		...
		break;
}

显然这是一种在多重选择时优于if else的语句
其中的choice/case标签可以是类型为char,byte,short,int的常量表达式,枚举常量,字符串字面量
如果缺少break,有可能触发多个case分支

break语句

普通的break即跳出某循环语句块

while(){
	...
	if (condition) break;
	...
}
//jumps here when the break state executes

java提供了一个带标签的break,其作用类似于goto

label:
{
	...
	if (condition) break label;
	...
}
//jumps here when the break state executes

当然这种方式只能跳出语句块,不能跳入另一个语句块

continue语句

与break相比,仅仅只是跳出当前循环,进入下一次循环的首部

while(){//jumps here when the continue state executes
	...
	if (condition) continue;
	...//here will not work when the continue state executes
}
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值