Hello World
package org.wyp;public class Main {//定义了一个类Mainpublic static void main(String[] args) {System.out.println("Hello World");}
}
变量
byte(字节)
01010111
一个有8位二进制数
每一个0/1叫一位,简称为bit
1byte=8bit
一个byte就是一个字节,一共有8位
2的8次方,等于256,负数一半,正数一半
byte是在[-128,127]
byte x=123;System.out.println(x);
short(两个字节16位)
2的16次方,-2的15次方到2的15次方减一
[-32768,+32767]
int(4个字节32位)
-2的31次方到2的31次方减一
[-2147483648,2147483647]
long(8个字节,2的63次方)
大概是10的18次方
float(4个字节)
float的有效数字6-7位,后面的是不精确的,近似值
1.234*10的5次方,有效数字是4位
float x=1.0F;//F大写或者小写的效果是一样的,都可以System.out.println(x);
double(8个字节)
double的有效数字是15-16位,后面的是不精确的,近似值
double z=2.0d;System.out.println(z);
boolean(1个字节)
boolean falg=false;//不能写成boolean flag=1;System.out.println(falg);
char(1个字节)
char x='A';System.out.println(x);
常量(final等价于const)
final int x=1;//等价于const int System.out.println(x);x=10;System.out.println(x);
强制类型转化
char c='A';int d=(int)c;System.out.println(d);//输出65System.out.println((int)c);//这样写也可以
类型转化
显示转化
int x=(int)'A';
隐式转化
double x=12;double y=4*3.3;33
运算符
Java和C++里除法是向0取整
10/20=0
30/20=1
System.out.println(a/b);//0System.out.println(c/b);//1int d=-30;System.out.println(d/b);//-1
取模可能是负数
int a=10,b=20,c=-30;System.out.println(c%b);//-10
a++和++a
a++是先取值再加1
++a是先加1再取值
int a=1;int b=a++;//先把a的值赋值给b,再把a加1,所以是a=2,b=1System.out.println(a+" "+b);//现在a=2int c=++a;//a先加1,再把a赋值给c,所以a=3,b=3System.out.println(a+" "+c);
System.out.println(a+" "+b);//a加上一个字符串后变成字符串,相当于先输出字符串,再输出b
a=a+b等价于a+=b(加减乘除取模)
如何判断两个浮点数是否相等
if(Math.abs(x-y)<1e-8)//这里写10的-6次方,或者10的-8次方都可以System.out.println("相等");elseSystem.out.println("不相等");
输入
方式1,效率较低,输入规模较小时使用。(输入数的个数在10的5次方以内)
在外面写import java.util.Scanner;
在里面写Scanner sc = new Scanner(System.in);
读入字符串
next遇到空格回车制表符就会结束
如果想读入一行,有空格,用nextLine
import java.util.Scanner;
public class Main {//定义了一个类Mainpublic static void main(String[] args) {Scanner sc = new Scanner(System.in);//输入Hello World,并输出//法一:碰到空格就再次读入一次String str=sc.next();System.out.println(str);str=sc.next();System.out.println(str);//法二:直接读入一行String str2=sc.nextLine();System.out.println(str2);}
}
读入别的类型的方法类似
String str = sc.next(); // 读入下一个字符串int x = sc.nextInt(); // 读入下一个整数float y = sc.nextFloat(); // 读入下一个单精度浮点数double z = sc.nextDouble(); // 读入下一个双精度浮点数String line = sc.nextLine(); // 读入下一行
方法二,效率较高,输入规模较大时使用。注意需要抛异常。
读字符串
package org.wyp;
import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String str=br.readLine();System.out.println(str);}
}
读整数
读完后手动将字符串转化成整数
分成两种情况:输入的数字在一行和输入的数字不在一行
情况1:
输入:
3
4
package org.wyp;
import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int x = Integer.parseInt(br.readLine());int y = Integer.parseInt(br.readLine());System.out.println(x+y);}
}
情况2:
输入:
3 4
读进来用空格分隔一下
package org.wyp;
import java.io.BufferedReader;
import java.io.InputStreamReader;public class Main {public static void main(String[] args) throws Exception {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));String[] strs = br.readLine().split(" ");int x = Integer.parseInt(strs[0]);int y = Integer.parseInt(strs[1]);System.out.println(x+y);}
}
输出
方式1,效率较低,输出规模较小时使用。
public class Main {public static void main(String[] args) throws Exception {System.out.println(123); // 输出整数 + 换行System.out.println("Hello World"); // 输出字符串 + 换行System.out.print(123); // 输出整数System.out.print("yxc\n"); // 输出字符串System.out.printf("%04d %.2f\n", 4, 123.456D); // 格式化输出,不足4位就在前面补0,float与double都用%f输出}
}
println有回车
print没有回车
printf和c++的类似,格式化输出
方式2,效率较高,输出规模较大时使用。注意需要抛异常。
package org.wyp;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;public class Main {public static void main(String[] args) throws Exception{BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));bw.write("Hello World");bw.flush();}
}