1.数据类型
1.1 数据类型分类
Java中的数据类型分为基本数据类型和引用数据类型
基本数据类型:
是Java语言中内置的类型,分别是整数类型、浮点类型、字符类型、布尔类型。这四类基本类型是最简单、最基础的类型。
引用数据类型:
是强大的数据类型,它是基于基本数据类型创建的。JavaSE中提供了一个超级类库,类库中包含了近万种引用数据类型。不过现在我们先要学习的是基本类型!
1.2 基本数据类型表示
整数类型:
十进制表示方式:正常数字 如 13、25等
二进制表示方式:以0b(0B)开头 如0b1011 、0B1001
八进制表示方式:以0开头 如01、07、0721
十六进制表示方式:以0x(0X)开头 数字以0-9及A-F组成 如0x23A2、0xa、0x10
浮点数类型:
如1.0、-3.15、3.168等
布尔类型:
true,false
字符类型:
如'a','A', '0', '家'
1.3 基本数据类型占用大小和表示范围
四类 | 八种 | 占用字节数 | 数据表示范围 |
整型 (精确) | byte | 1 | -128~127 |
short | 2 | -32768~32767 | |
int(默认) | 4 | -2147483648~2147483647 | |
long | 8 | -2^63~2^63-1 | |
浮点型 (不精确) | float | 4 | -3.403E38~3.403E38 |
double(默认) | 8 | -1.798E308~1.798E308 | |
字符型 | char | 2 | 表示一个字符 |
布尔型 | bollean | 1 | 只有两个值true与false |
2.常量和变量
2.1常量
定义:不变的数据量
分类:
2.2变量
public static void main(String[] args) {
// byte类型变量
byte b = 100;
System.out.println(b);
//short类型变量
short s = 100;
System.out.println(s);
//int类型变量
int x = 100;
System.out.println(x);
//long类型变量
long num = 100L;
System.out.println(num);
//float类型变量
float f = 2.0F;
System.err.println(f);
float f2 = 2.0f;
System.out.println(f2);
//double类型变量
double d = 3.14;
System.out.println(d);
double d2 = 3.14d;
System.out.println(d2);
double d3 = 3.14D;
System.out.println(d3);
//char类型变量
char c = 'a';
System.out.println(c);
//boolean类型变量
boolean flag = true;
System.out.println(flag);
}
public static void main(String[] args) {
int x;
x = 20; //下面要使用变量x x必须先赋值
System.out.println(x);
}
public static void main(String[] args) {
int x = 20; // 定义一个int类型变量x
//int x = 30; //编译报错, 不能重复定义一个x变量
x =30; // 正确,表示给x重新赋值
//x = "abc"; //编译报错,赋值时,类型要匹配
}
public static void main(String[] args) {
int a= 100;
{
int b = 200;
System.out.println(a);
System.out.println(b);
}
//System.out.println(b); // 编译报错,这里不能访问到变量b
}
3.数据类型转换
3.1数据类型转换
数据类型转换分为自动类型转换和强制类型转换
自动类型转换:小类型——>大类型
格式:范围大的数据类型 变量 = 范围小的数据类型值
强制类型转换:大类型不能转换为小类型 但通过强制类型转换可以实现
格式:范围小的数据类型 变量 = (范围小的数据类型) 范围大的数据类型值
3.2类型转换案例
1.计算一年有多少毫秒(一年按365天计算)
public class Demo01 {
public static void main(String[] args) {
long result = 365L*24*60*60*1000;
System.out.println(result);
}
}
2.整数的除法运算
public class Demo02 {
public static void main(String[] args) {
int x = 10;
int y = 4;
int result = x/y;
System.out.println(result); // 2
double result2 = x/y;
System.out.println(result2); //2.0;
double result3 = (double)x/y; // 把x强转成double
System.out.println(result3); //2.5
double result4 = 1.0*x/y;
System.out.println(result4);
}
}
3.浮点数 四舍五入取整 四舍五入取两位小数
public class Demo03 {
public static void main(String[] args) {
double x = 3.4665;
//四舍五入取整数
int result = (int)(x+0.5);
System.out.println(result);
// 四舍五入取保留两位小数
double result2 = (int)(x*100+0.5)/100.0;
System.out.println(result2);
}
}
4.字符集
4.1常见字符集
4.2几个特殊意义的字符
4.3练习
在控制台输出完成水果超市价格表如下图
public class Demo04 {
public static void main(String[] args) {
System.out.println("水果编号\t水果名称\t水果单价\t计价单位\t品质");
System.out.println(1+"\t榴莲\t"+32.0+"\t公斤\t"+"A");
System.out.println(2+"\t苹果\t"+6.5+"\t公斤\t"+"B");
System.out.println(3+"\t猕猴桃\t"+6.0+"\t公斤\t"+"A");
}
}
5.运算符
5.1概述
5.2分类
算术运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符
5.2.1算术运算符
public class Demo05 {
public static void main(String[] args) {
int result1 = 1+2;
int result2 = 3-1;
int result3 = 3*2;
int result4 = 3/2;
int result5 = 3%2; // 取模 (余数) -------> 判断能不能整除
System.out.println(result1); //3
System.out.println(result2); //2
System.out.println(result3); //6
System.out.println(result4); //1
System.out.println(result5); //1
int x = 100;
int y = 3;
int result6 = x+y;
int result7 = x/y;
int result8 = x%y;
System.out.println(result6); //103
System.out.println(result7); //33
System.out.println(result8); // 1
// ++(递增) --(递减)
int a = 1;
//a++;
++a;
System.out.println(a); //3
}
public static void main(String[] args) {
int a = 1;
//int b = ++a;//a:2 b:2 注意:++在前表示先计算++ 再赋值
int b = a++;//a:2 b:1 注意:++在后表示先赋值 再计算++
System.out.println(a);
System.out.println(b);
}
5.2.2赋值运算符
public static void main(String[] args) {
int a = 5;
int b = 2;
a+=2; // a= a+2;
System.out.println(a); //7
a-=1; // a = a-1;
System.out.println(a); //6
a*=2; // a = a*2;
System.out.println(a); //12
a/=2; a = a/2;
System.out.println(a); //6
a%=2; a= a%2;
System.out.println(a); //0
}
5.2.3关系运算符
public static void main(String[] args) {
int a = 2;
int b = 1;
System.out.println(b>a); // true
System.out.println(b>=a); // true
System.out.println(b<a); // false
System.out.println(b<=a); // false
System.out.println(b==a); // false
System.out.println(b!=a); // true
}
5.2.4逻辑运算符
public static void main(String[] args) {
/* int x = 5;
int y = 3;
int a = 10;
int b =8;
System.out.println(x>y & a>=b); // true & true = true
System.out.println(x>y & a<b); // true & false = false
System.out.println(a<b & x>y); // false & true = false
System.out.println(a<b & x<y); // false & false = false
System.out.println(x>y | a>=b); // true | true = true
System.out.println(x>y | a<b); // true | false = true
System.out.println(a<b | x>y); // false | true = true
System.out.println(a<b | x<y); // false | false = false
System.out.println(x>y ^ a>=b); // true ^ true = false
System.out.println(x>y ^ a<b); // true ^ false = true
System.out.println(a<b ^ x>y); // false ^ true = true
System.out.println(a<b ^ x<y); // false ^ false = false
*/
/*
int x = 5;
int y = 3;
int a = 10;
int b =8;
System.out.println(!(x>y)); // false
System.out.println(!(x<y)); // true
System.out.println(x>y && a>=b); // true && true = true
System.out.println(x>y && a<b); // true && false = false
System.out.println(a<b && x>y); // false && true = false
System.out.println(a<b && x<y); // false && false = false
System.out.println(x>y || a>=b); // true || true = true
System.out.println(x>y || a<b); // true || false = true
System.out.println(a<b || x>y); // false || true = true
System.out.println(a<b || x<y); // false || false = false
*/
}
int x = 5;
int y = 3;
int a = 10;
int b =8;
/*
System.out.println(x<y & a++<b); // false
System.out.println(a); // 既是第一个表达式是false 也会计算第2个表达式 也就是执行了a++ a的值变为11
*/
System.out.println(x<y && a++<b); // false
System.out.println(a); //10 第一个表达式是false了结果就直接为false 不会执行第2个表达式 也就是没有执行a++ a的值还是10
5.2.5三元运算符
int a = 5;
int b = 8;
int result = a<b?a:b;
System.out.println(result); // 判断a大于b吗 如果a大于b 把 a赋给result 反之把b赋给result
练习:交换两个变量的值
// 使用临时变量
public static void main(String[] args) {
int a = 1;
int b = 2;
int temp = a;
a = b;
b = temp;
System.out.println(a);
System.out.println(b);
}
//不使用临时变量
public static void main(String[] args) {
int a = 1;
int b = 2;
int sum = a+b;
a = sum - a;
b = sum - a;
System.out.println(a);
System.out.println(b);
}
//采用和的方式
public static void main(String[] args) {
int a = 1;
int b = 2;
b = a+b-(a=b);
System.out.println(a);
System.out.println(b);
}
5.2.6键盘录入scanner类
import java.util.Scanner;
public class Demo24_键盘输入 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int x = sc.nextInt(); //代码执行到这一步时,会阻塞(停住) 等着键盘从控制台输入,输入完成后回车,把输入的值赋给了x
System.out.println("键盘输入的值为:"+x);
double y = sc.nextDouble();
System.out.println("键盘输入的浮点数值为:"+y);
}
}