java学习(2)
java学习(2)
helloworld
class A{
public static void main(String[] args) {
System.out.println("helloworld");
}
}
// 编译java javac A.java 生成一个java.class的文件
// 运行程序 java A
// helloworld
关键字
在java中关键字的字母全部都是小写
变量
常量
在执行过程中,其值不会发生改变的量(数据)
class A{
public static void main(String[] args) {
System.out.println("helloworld");
}
}
比如在这段代码中,常量就是helloworld
常量的分类
- 字符串常量: 被双引号所包裹的内容
- 整数常量: 所有整数
- 小数常量 所有小数
- 字符常量 被单引号包裹的内容,里面只能存放单个字符
- 布尔常量 只有两个值,true 和false
- 空常量 null 在java中 null空常量不能输出打印
class A{
public static void main(String[] args) {
System.out.println("helloworld");
// - 字符串常量: 被双引号所包裹的内容
// - 整数常量: 所有整数
// - 小数常量 所有小数
// - 字符常量 被单引号包裹的内容,里面只能存放单个字符
// - 布尔常量 只有两个值,true 和false
// - 空常量 null 在java中 null空常量不能输出打印
System.out.println("helloworld");
System.out.println(32);
System.out.println(32.1);
System.out.println('c');
System.out.println(true);
System.out.println(null); // 报错
// A.java:17: 错误: 对println的引用不明确
// System.out.println(null);
// ^
// PrintStream 中的方法 println(char[]) 和 PrintStream 中的方法 println(String) 都匹配
// 1 个错误
}
}
变量与数据类型
变量就是内存中的存储空间,空间中存储着经常发生改变的量(数据)
java中的变量定义格式 数据类型 变量名 = 数据值
不同的数据类型占用不同的内存空间,因此他们所表示的数据大小也不一样
-
整数
整数有4种数据类型,内存所占用的字节数量也不同
byte 占用 1字节
short 占用 2字节
int 占用 4字节 (默认)
long 占用8字节 -
浮点数
float(单精度) 4字节
double(双精度) 8字节 (默认) -
字符
char 2字节 -
布尔类型
bool 1字节
基本数据类型与引用数据类型
变量的定义和使用
基本数据类型的存储方式
变量使用的注意事项
- 变量名不允许重复定义
- 一条语句可以定义多个变量,但需要使用逗号分隔
int a = 10, b = 30, c= 203
- 变量在使用之前一定要赋值
- 定义float和long变量的注意事项
float a=12.3F long a = 20202002020L
- 变量的作用域范围
计算机存储单元
计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的最小信息单元
叫"位(bit)",我们又叫做比特,通常用b小时,而计算机中最小的存储单元
是字节(byte) 用B表示,有8个位组成
常用的存储单位及转换
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
1PB = 1024TB
键盘录入
linux中有stdin,python中有input shell中有read,为了方便测试或者其他需要读取屏幕前用户数据的程序。
需要使用键盘录入的形式,在java中主要使用Scan来进行录入
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = sc.nextInt();
System.out.println(i);
}
}
类型转换
- 隐式转换
将数据类型中,取值范围小的数据,给取值范围大的类型赋值,会做数据类型转换,比如
int a = 10;
double b = a ;
system.out.print(b) // 10.0
- 强制转换
将取值范围大的类型赋值给取值范围小的数据类型
double b = 10.0
int a = (int)b
print(a) // 10
强制类型转换,转换不是四舍五入进行转换的,而是直接截断小数点后面的内容,所以会发生精度的损伤严重
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int i = (int)sc.nextDouble();
System.out.println(i);
// 1.0
// 1
// 1.1
// 1
// 1.5
// 1
}
}
计算符计算
主要是一个地板除/
和一个取余除%
public class DemoScanner {
public static void main(String[] args) {
int d = 10;
int b = 3;
// 地板除 保留整数
int res = d / b ;
// 取余除 保留余数
float res2 = d % b;
System.out.println(res); // 3
System.out.println(res2); // 1
}
}
// 数值拆分案例
// 录入一个三位数,将他们拆为个位 十位 百位
Scanner sc = new Scanner(System.in);
int number = sc.nextInt();
// 拆分
int n1 = number % 10;
int n1_extar = number / 10;
int n2 = n1_extar % 10;
int n3 = n1_extar / 10;
System.out.printf("%d,%d,%d",n1,n2,n3);
}
自增自减操作符
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
int a = 10;
System.out.println(a++); // 10
System.out.println(a++); // 11
int b = 10;
b--;
System.out.println(b); // 9
a = 10;
int c = ++a; // 先自加后赋值
int d = 10;
int e = d++; // 先赋值后++
System.out.println(c); // 10
System.out.println(a); //11
System.out.println(d); // 11
System.out.println(e); // 10
}
}
三元运算符
格式 关系表达式? 表达式1:表达式2;
如果值为true 则返回表达式1
如果值为false 则返回表达式2
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = a > b ? a:b;
System.out.println(max);
System.out.println(a>b?a:b);
}
}
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
// 案例 求最高身材
int a = 120 , b = 130 , c = 150;
// 取最大值
int max = a>b?a:b;
int max2 = max>c?max:c;
System.out.println(max2); // 150
}
}
流程控制
顺序执行结构
public class DemoScanner {
public static void main(String[] args) {
System.out.println(2); // 2
System.out.println(2); // 2
System.out.println(2); // 2
System.out.println(2); // 2
System.out.println(2); // 2
System.out.println(2); // 2
}
}
if语句
package hzj;
import java.util.Scanner;
public class DemoScanner {
public static void main(String[] args) {
// 形式1
boolean flag = true;
if (flag == true){
System.out.println("true");
} else {
System.out.println("false");
}
// 形式2
if (flag == true ) System.out.println("true");
}
}
switch语句
public class DemoScanner {
public static void main(String[] args) {
int a = 10;
// 形式1
switch (a){
case 1:
System.out.println("1");
case 2:
System.out.println("2");
default:
System.out.println(a);
}
}
}
循环语句
public class DemoScanner {
public static void main(String[] args) {
for (int i=0;i<20;i++){
System.out.println(i);
}
}
}
Random生成随机数
package hzj;
import java.util.Random;
public class DemoScanner {
public static void main(String[] args) {
Random r = new Random();
int n = r.nextInt(10); // 0-9 不加的话会在整个int取值范围内做random
System.out.println(n);
}
}