一. 数据类型
数据类型 : 数据的类型
1.1 基本数据类型
基本类型有四类八种
整数
byte short int long
public static void main(String[] args) { byte b = 127; short s = 32000; int i = 2100000000; /* * 如果为long类型变量赋值时 * 如果值得范围在int类型的范围内,可以不用加L/l为后缀 * 如果值得范围大于int类型的范围,则必须添加L/l */ long l = 6000000000l; //定义年龄 工资 班级人数 int age=20; int wages= 10000; int students= 36; }
小数
float double
public static void main(String[] args) { //3.14 double pi = 3.14; float f = 3.14F; double d1 = 100000000.0; double d2 = 1.0E9; // 1.0*10^9 double d3 = 0.001; // 1.0*10^-3 double d4 = 1.0E-3; // 1.0*10^-3 //定义圆周率 价格 身高 double pii= 3.14; double price= 99.99; double height= 180.5; }
布尔
boolean
public static void main(String[] args) { boolean b1 = true; boolean b2 = false; boolean r2 = 4>33; System.out.println(r2); //是否毕业 是否婚配 是否成年 是否是老板 pi是否大于3.14 boolean isGraduate=true; boolean isMarry = false; boolean isAdult= false; boolean isBoss = false; boolean p5=3.1415>3.14; }
字符
char
char本质上就是整数,表示askii表中对应的字符
char表示的无符号的两个字节的整数 [0-65535]
首位不再是符号位,不能等于负数
1111 1111 1111 1111 = 2^16-1 = 65535
0000 0000 0000 0000 =0
public static void main(String[] args) { /* 基本数据类型 - 字符 (单个数字,字母,符号,汉字,.....) * * a b c ... z * A B C .... Z * 0 1 2 3 ...9 * + - * /... * char c = '字符'; 使用单引号括起来 * */ char c = 'a'; char c2 = '+'; char c3 = 97; // a字符的编号 System.out.println(c3); char c4 = 33; // ! System.out.println(c4); //定义 F G @ char c1='F'; char c2=70; char c3='G'; char c4=71; char c5='@'; char c6=64 ; }
-
public static void main(String[] args) { //转义字符 // ' char c = '\''; // \ char c2 = '\\'; //tab键 char c3 = '\t'; //回车键 char c4 = '\n'; /* * System.out.println() 打印后会自定换行 * System.out.print() 打印后不会自定换行 */ System.out.print("aaa"); System.out.print(c4); System.out.print("bbb"); }
在计算机中,任何内容的保存都是0和1,一个0或者一个1就表示一位,保存内容的最小单位是8位。
8位成为一个字节。
在表示整数时,我们使用的是二进制,第一位是符号位,0:正数 1:负数
byte 1个字节 8位 1024b = 1kb 1024kb = 1mb 1024mb=1gb 1024gb=1tb 1024tb = 1pb
0111 1111
short 2个字节 16位
int 4个字节 32位
long 8个字节 64位
234 = 4*10^0+3*10^1+2*10^2 二进制转化为10进制 0111 1111 = 2^1+2^1+...+2^6= 2^7-1 127 byte最大值 0000 0000 +0 1000 0000 -0 = -2^7 -128 byte最小值
1.2 引用数据类型
除了基本类型都是引用数据类型
1.2.1 String
有些值是由多个字符组长的,无法使用基本类型定义
此时可以定义String类型变量接受这类的值
package com.qfedu; public class Demo05 { public static void main(String[] args) { // char className = 'hfjava2203班'; //内容由11个字符组成的 /* * 字符串 : String 可以被赋值 由多个字符组成的内容 * * String 变量名 = "字符串"; */ String className = "java2203班"; String name = "xsg"; String school = "安徽大学"; System.out.println(school); int age = 18; System.out.println(age); //这里的age表示的变量 System.out.println("age"); //age 表示是一个字符串 //定义家乡, 你喜欢的女明星 你的目标 String hometown="安徽"; String myFavoriter = "吴宣仪"; String target= "一个亿"; } }
二. 运算
2.1 算数运算
加减乘除余
整数类型数据运算得到结果还是整数
整数相除结果为整数
小数类型数据运算的到的结果是小数
余:没有除尽余下的数,或者除尽余数为0, 余下的数一定被除数小
package com.qf; public class Demo01 { /* * 算数运算 */ public static void main(String[] args) { int a = 5; int b = 2; int r1 = a+b; int r2 = a-b; int r3 = a*b; //整数运算的结果还是整数,自动把小数去除 int r4 = a/b; System.out.println(r4); double d1 = 5; //5首先看做int的整数 double d2 = 2; double r5 = d1/d2; System.out.println(r5); int r6 = a%b; //1 除尽或者除不尽余下的数 余下的数一定被除数小 } }
String 和基本类型相加+,
如果 “+”两边出现字符串类型的数据,那么加号就不再是算数运算符,而是变成连接符
结果的数据类型一定是字符串类型
package com.qf; public class Demo01_2 { public static void main(String[] args) { /* * String 和基本类型相加+ * 如果 “+”两边出现字符串类型的数据,那么加号就不再是算数运算符,而是变成连接符 * 结果的数据类型一定是字符串类型 */ String str = "hello"; String r6 = str + d; // hello3.0 System.out.println(r6); //可以添加小括号,提高计算的优先级 String r7 = 1+2+3+"heheda"+1+2+(3+4); //程序是从上往下,从左往右执行的 System.out.println(r7); //6heheda127 /* * 1. 定义一个圆半径,求该圆的面积 * 2. 定义一个长方型,长,宽,计算长方型的边长,面积 * 3. 获取数字48762每位的值,并打印,如个数是,十位是,百位是.... */ double pi=3.14; int r= 5; double s=pi*r*r; System.out.println("圆的面积是"+s); int l=5; int h=4; int s1=l*h; int c=2*(l+h); System.out.println("长方形的周长是"+c); System.out.println("长方形的面积是"+s1); int num=48762; int g=num%10; int j=num/10%10; int b1=num/100%10; int q=num/1000%10; int w=num/10000; System.out.println("个位数是"+g); System.out.println("十位数是"+j); System.out.println("百位数是"+b1); System.out.println("千位数是"+q); System.out.println("万位数是"+w); } }
byte, short 类型 进行运算 得到结果的数据类型为int
int long float double 的数据类型运算,运算结果是变量数据类型范围大的那种数据类型
package com.qf; public class Demo01_2 { public static void main(String[] args) { /* * byte, short 类型 进行运算 得到结果的数据类型为int * * int long float double 的数据类型运算,运算结果是变量数据类型范围大的那种数据类型 */ byte b = 111; byte b2 = 21; int r = b+b2; short s = 22; short s2 = 33; int r2 = s+s2; int r22 = r+r2; int i = 400000000; long l = 2000000000; long r3 = i+l; float f = 5f; float r4 = f+r3; double d = 3.0; double r5 = d+r4; } }
2.2 赋值运算
自增,自减,自除,自余
package com.qf; public class Demo02 { /* * = 赋值符 把左边的值赋值给右边的变量 * * += 自增 * -= 自减 * *= 自乘 * /= 自除 * %/ 自余 */ public static void main(String[] args) { int a = 5; int b = a+3; a = a+3; // a在原来的基础自增3 a +=3; a -= 3; //自减 8 a = a*2; //自乘 16 a = a%3; // 1 System.out.println(a); int a = 4; a = a+1; a += 1; //6 /* * 自增1 * * 变量++; ++变量; 自增1 * * 变量++; 先对变量进行操作,然后再自增1 * ++变量; 先自增1,然后再进行操作 * 操作:就是对变量的使用 赋值,打印 * * */ a++; ++a; //8 System.out.println(a); int r = a++; // System.out.println("r="+r+",a="+a); System.out.println(a++); //9 System.out.println(++a); //11 /* * 变量--; --变量 */ int b = 6; b = b-1; b -=1; b--; --b; System.out.println(b); int c = 5; //6 int r3 = c++ + 3 - --c + c++ - --c; System.out.println(r3); //5 + 3-5 +5-5 } }
2.3 关系运算
大于,小于,大于等于,小于等于,等于(==),不等于(!=) 会得到一个boolean类型的数据
成立 返回true
不成立 返回false
==
!=
package com.qf; public class Demo03 { public static void main(String[] args) { int a=5 , b=3; boolean r1 = a>b; //true boolean r2 = a == b; // false boolean r3 = a != b; // true /* * 算数运算符 > 关系运算符 > 赋值运算符 */ boolean r4 = a == b+2; // true System.out.println(r4); boolean r5 = --a == ++b; // System.out.println(r5); } }
2.4 逻辑运算
且或非:表示多个关系判断之间的关系
且:&& 必须两边同时成立,结果为true, 其他全部为false
或:|| 必须两边同时不成立,结果为false, 其他全部为true
非:! 和先有的结果,值相反
package com.qf; public class Demo04 { public static void main(String[] args) { /* * 逻辑运算符 且 或 非 结果boolean类型 * * 且 && 必须两边同时成立,结果为true, 其他全部为false * 或 || 必须两边同时不成立,结果为false, 其他全部为true * 非 ! 和先有的结果,值相反 */ int a = 4, b=5, c=6; //a是不是最大的 boolean r1 = a>b && a>c; //false //a是不是最小的 boolean r2 = a>b || a>c; //false //a是不是 不是 最大的 boolean r3 = !r1; //r3和r1的结果正好相反 } }
2.5 三元运算
通过现有的变量,获取我们想要获取的值。
数据类型 变量名 = 逻辑表达式?值1:值2;
package com.qf; public class Demo05 { public static void main(String[] args) { /* * 三目/元表达式 * * 数据类型 变量 = 逻辑表达式?值1:值2; */ int score = 88; String r = score>=60?"及格":"不及格"; int gender = 0; // 0:女 1:男 char c = gender == 0? '女':'男'; System.out.println(c); } }
三. 从控制台获取值
创建扫描器
Scanner scan = new Scanner(System.in);
引入扫描器类路径
import java.util.Scanner;
提示用户输入信息
System.out.println("请输入您的姓名:");
对控制台进行扫描获取值
//扫描控制台获取字符串 String str = scan.next(); //扫描并获取整数 int age = scan.nextInt(); //扫描并获取小数 double price = scan.nextDouble();
package com.qf; //引入这个扫描器 import java.util.Scanner; public class Demo06 { public static void main(String[] args) { //定义一个扫描器 Scanner scan = new Scanner(System.in); //提示用户要输入信息 System.out.println("请输入您的姓名:"); //扫描控制台获取字符串 String str = scan.next(); System.out.println("你输入的姓名:"+str); //提示用户输入 System.out.println("请输入您的年龄:"); //扫描并获取整数 int age = scan.nextInt(); System.out.println("你输入的年龄:"+age); //提示用户输入 System.out.println("请输入您的价格:"); //扫描并获取小数 double price = scan.nextDouble(); System.out.println("你输入的及格:"+price); } }