day02
大纲:
变量
基本数据类型
数据类型之间的转换
1.变量:存数的,代词,指代的就是它所存的那个数
1)声明:
int a; //声明一个整型的变量,名为a
int b,c,d; //声明三个整型的变量,名为b,c,d
2)命名:
2.1)只能由字母、数字、_和$符组成,
并且不能以数字开头
2.2)严格区分大小写
2.3)不能使用关键字
2.4)可以中文命名,但不建议
建议"见名知意","驼峰命名法"
3)初始化:第一次赋值
3.1)声明的同时初始化:
int a=250; //声明整型变量a并赋值为250
3.2)先声明后初始化:
int a; //声明整型变量a
a=250; //给变量a赋值为250
4)使用:
4.1)变量的使用必须与数据类型匹配
int a = 3.14; //编译错误,数据类型不匹配
4.2)对变量的使用就是对它所存的数的使用
int a=5; //声明整型变量a并赋值为5
int b=a+10; //取出a的值5,加10后,再赋值给变量b
a=a+10; //取出a的值5,加10后,再赋值给变量a
//在a本身基础之上增10
System.out.println(b); //输出变量b的值15
System.out.println("b"); //b,双引号中的原样输出
4.3)变量在用之前必须声明并初始化
System.out.println(m); //编译错误,m未声明
int m;
System.out.println(m); //编译错误,m未初始化
2.基本数据类型:
1)int:整型,4个字节,-21个多亿到21个多亿
1.1)整数直接量默认为int型,但不能超出范围,
超出范围则编译错误
1.2)两个整数相除,结果还是整数,小数位无条件舍弃
1.3)运算时超出范围则发生溢出,溢出是需要避免的
2)long:长整型,8个字节,很大很大很大
2.1)long型直接量,需要数字后加l或L
2.2)若运算时有可能超出范围,建议在第1个数字后加L
2.3)System.currentTimeMillis()可以获取
自1970.1.1零时到此时此刻的毫秒数
3)double:浮点型,8个字节,很大很大很大
3.1)浮点数直接量默认为double型,表示float需加f或F
3.2)浮点型参与运算时有可能会出现舍入误差,
精确运算场合建议使用BigDecimal表示
4)boolean:布尔型,1个字节
4.1)只能存储true和false
5)char:字符型,2个字节
5.1)Java中的char采用Unicode字符集编码格式,
一个字符(char)对应一个码(int)(0到65535之间),
表现形式是char字符,但实质上是int码
5.2)字符需放在单引号中,有且仅有一个
5.3)特殊符号需通过转义符来转义
3.基本类型间的转换:
类型从小到大依次为:
byte,short,int,long,float,double
char
1)两种方式:
1.1)自动类型转换:从小类型到大类型
1.2)强制类型转换:从大类型到小类型
语法: (要转换为的类型)变量
强转有可能会溢出或丢失精度
2)两点规则:
2.1)整数直接量可以直接赋值给byte,short,char,
但不能超出范围
2.2)byte,short,char型数据参与运算时,
先一律转为int再运算
4.Scanner的用法:
1)在package下:
import java.util.Scanner;
2)在main方法中:
Scanner scan = new Scanner(System.in);
3)在第2步之下:
System.out.println("请输入年龄:");
int age = scan.nextInt();
System.out.println("请输入价格:");
double price = scan.nextDouble();
double的缺点(计算结果可能有偏差):
double a=3.0,b=2.9;
System.out.println(a-b); //0.10000000000000009
//0.1
double a=6.0,b=4.9;
System.out.println(a-b); //1.09999999999999996
//1.1
int的缺点:(2147483647+1后会溢出,溢出不是错,是一个不好的现象,需要避免)
int balance = 2147483647;
balance = balance+1;
-2147483648===========+1后
-2147483647===========+1+1后
-2147483646===========+1+2后
1G=1024M(兆)
1M=1024KB(千字节)
1KB=1024B(字节)
1B=8Bit(位)
1G=1024*1024*1024字节----1073741824字节
帕斯卡命名法: Score,MyScore,MyJavaScore
驼峰命名法: score,myScore,myJavaScore
package day02; //数据类型的演示 public class DataTypeDemo { public static void main(String[] args) { /* //基本类型间的转换 int a = 5; long b = a; //自动类型转换 int c = (int)b; //强制类型转换 long d = 5; //自动类型转换 double e = 5; //自动类型转换 long f = 10000000000L; int g = (int)f; System.out.println(g); //强转有可能会溢出 double h = 45.987654; int i = (int)h; System.out.println(i); //强转有可能会丢失精度 byte b1 = 5; byte b2 = 6; byte b3 = (byte)(b1+b2); System.out.println(2+2); //4 System.out.println('2'+'2'); //100,'2'的码50加上'2'的码50 */ /* //5.char:字符型,2个字节 char c1 = '男'; char c2 = 'm'; char c3 = '6'; char c4 = ' '; //char c5 = ''; //编译错误,必须有字符 //char c6 = '男性'; //编译错误,只能有一个字符 //char c7 = 男; //编译错误,必须放在单引号中 char c8 = 65; //必须在0到65535之间 System.out.println(c8); //A char c9 = '\'; System.out.println(c9); */ /* //4.boolean:布尔型,1个字节,只能取值为true和false boolean a = true; //true为布尔型直接量 boolean b = false; //boolean c = 25; //编译错误,数据类型不匹配 */ /* //3.double:浮点型,8个字节,很大很大很大 double pi = 3.14159; //3.14159为浮点数直接量,默认double型 float f = 3.14159F; //float型直接量需在数字后加f或F double a=3.0,b=2.9; System.out.println(a-b); //0.10000000000000009 */ /* //2.long:长整型,8个字节,很大很大很大 long a = 250L; //250L为长整型直接量 //long b = 10000000000; //编译错误,100亿默认为int型,但超出范围了 long c = 10000000000L; long d = 1000000000*2*10L; System.out.println(d); //200亿 long e = 1000000000*3*10L; System.out.println(e); //溢出了 long f = 1000000000L*3*10; System.out.println(f); //300亿 //获取自1970.1.1零时到此时此刻的毫秒数 long g = System.currentTimeMillis(); System.out.println(g); */ /* //1.int:整型,4个字节,-21个多亿到21个多亿 int a = 250; //250为整数直接量,默认为int型 //int b = 10000000000; //编译错误,100亿默认为int型,但超出范围了 System.out.println(5/2); //2 System.out.println(2/5); //0 System.out.println(5/2.0); //2.5 int b = 2147483647; b=b+1; System.out.println(b); //溢出为-2147483648 */ } }
package day02; //变量的演示 public class VarDemo { public static void main(String[] args) { /* //4.变量的命名: int a1,a_5$,_5a,$6; //int a*b; //编译错误,不能包含* //int 1a; //编译错误,不能以数字开头 int a=5; //System.out.println(A); //编译错误,严格区分大小写 //int class; //编译错误,不能使用关键字 int 年龄; //正确,但不建议 int age; //建议"见名知意" int score,myScore,myJavaScore; //建议"驼峰命名法" */ /* //3.变量的使用: //int a = 3.14; //编译错误,数据类型不匹配 int b = 5; //声明整型变量b并赋值为5 b = b+10; //取出b的值5,加10后,再赋值给b System.out.println(b); //输出变量b的值为15 System.out.println("b"); //输出b,双引号中的原样输出 //System.out.println(m); //编译错误,m未声明 int m; //System.out.println(m); //编译错误,m未初始化 */ /* //2.变量的初始化:第一次赋值 int a = 250; //声明整型变量a并赋值为250 int b; //声明整型变量b b = 250; //给变量b赋值为250 */ /* //1.变量的声明: int a; //声明一个整型的变量,名为a int b,c,d; //声明三个整型的变量,名为b,c,d */ } }
package day02; import java.util.Scanner; //1. //Scanner用法的演示 public class ScannerDemo { public static void main(String[] args) { Scanner scan = new Scanner(System.in); //2. System.out.println("请输入年龄:"); int age = scan.nextInt(); //3. System.out.println("请输入价格:"); double price = scan.nextDouble(); System.out.println(age); System.out.println(price); } }