本博客地址 | GitHub | 更多资源免费下载
第一步: 声明变量,根据数据类型在内存申请空间
第二步:赋值,即“将数据存储至对应的内存空间”
注意: 第一步和第二步可以合并为: 声明赋值 int num=10;
八大基本数据类型: char byte short int long float double boolean
引用数据类型: 数组 类(String) 接口
数值 : byte short int long float double
非数值: boolean String char
“1位”表示为 1 bit
“1个字节”表示为 1 Byte
“1个字节”=“8位” 即 1 Bytes=8 bit
因此“4个字节”=4*8位=32位
此外,字母使用1个字节(即8位)进行表示和存储,而一个汉字则使用两个字节(即16位,请看后面说明)进行表示和存储。
说明:
一个汉字占用的存储空间大小取决于使用的编码,一个汉字占2字节,是在说国内的中文编码标准GB2312、GBK、BG18030。
package org.gyun.test;
/**
* 输出变量名
*
* @author DongGaoYun
*
*/
public class variableTest {
/**
* 主方法 实现需求:
*/
public static void main(String[] args) {
//使用变量分二步:
// 1.声明赋值
String name = "张卓";
String sex = "男";
char sex1 = '女';
double score = 98.5;
// 2.使用变量
System.out.println("输出Java课考试最高分:" + score);
System.out.println("输出最高分学员姓名:" + name);
System.out.println("输出最高分学员性别:" + sex1);
}
}
一、两者的取值范围如下:
1、float:
最小值:Float.MIN_VALUE=1.4E-45 (2的-149次方)。
最大值:Float.MAX_VALUE=3.4028235E38 (2的128次方-1)。
2、double:
最小值:Double.MIN_VALUE=4.9E-324 (2的-1074次方)。
最大值:Double.MAX_VALUE=1.7976931348623157E308 (2的1024次方-1)。
二、IEEE754不是一个具体值,是IEEE二进位浮点数算术标准(IEEE Standard for Floating-Point Arithmetic)的标准编号,它规定了浮点数在计算机当中的存储方式以及算术标准等。
(一)IEEE754的规定:
1、单精度浮点数字长32位,尾数长度23,指数长度8,指数偏移量127;双精度浮点数字长64位,尾数长度52,指数长度11,指数偏移量1023。
2、约定小数点左边隐含有一位,通常这位数是1,所以上述单精度尾数长度实际为24(默认省略小数点左边的1则为23),双精度尾数长度实际为53(默认省略小数点左边的1则问53)。
(二)IEEE754有三部分组成:
符号位、指数位、尾数位。三种精度的浮点数各个部分位数如下:
扩展资料:
IEEE754标准的特殊值:
标准规定了一些特殊值(零,无穷,非数字)的存储方式 :
1、如果 指数 是0 并且 小数部分 是0, 这个数±0 (和符号位相关,这就是上文说的原因) 。
2、如果 指数 = 2^e - 1并且 小数部分 是0, 这个数是 ±无穷大 (同样和符号位相关) 。
3、如果 指数 = 2^e - 1并且 小数部分 非0, 这个数表示为不是一个数(NaN)。
具体如下:
/**
package org.gyun.type_variable;
/**
* @ClassName:FinalVariable.java
* @Description:使用变量和常量
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 上午9:54:29
* @Version:1.0
*/
public class FinalVariable {
/**
* 主方法
*/
public static void main(String[] args) {
//variableTest();
//常量
// 1.声明赋值
//变量 字下美人数骆驼
final String NAME_DONG_GAO_YUN = "董老师";
// 2.使用
System.out.println(NAME_DONG_GAO_YUN);
}
private static void variableTest() {
// 变量
// 1.声明赋值
int num = 10;
// 2.使用
System.out.println(num);
}
}
package org.gyun.test;
/**
* @ClassName:Test5.java
* @Description:常量用法
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-3 下午2:13:58
* @Version:1.0
*/
public class Test5 {
//主方法
public static void main(String[] args) {
//常量有什么规则
/*
* 1.常量名都是大写
* 2.多个单词之间用下划线。DONG_GAO_YUN
* 3.final关键字
* 4.还能赋值吗?不能 final:最终的
*/
final int I=1;
//I=2;
System.out.println(I);
}
}
package org.gyun.scanner;
import java.util.*;
/**
* @ClassName:ScannerTest.java
* @Description:Scanner的应用
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 上午10:11:00
* @Version:1.0
*/
public class ScannerTest {
/**
* 分析需求: 1. 导入包 2.声明(创建)对象 3.使用
*/
public static void main(String[] args) {
// 使用Scanner 1.导包 2.创建对象 3.使用
Scanner input = new Scanner(System.in);
System.out.println("请输入一个数字: ");
int num = input.nextInt();
System.out.println("请输入您的姓名: ");
String name=input.next();
// 打印
System.out.println("输入的数字为: " + num);
System.out.println("输入的姓名为: " + name);
}
}
package org.gyun.test;
import java.util.Scanner;
/**
* @ClassName:Test2.java
* @Description:Scanner的应用
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-2 下午4:57:36
* @Version:1.0
*/
public class Test2 {
// 主方法,完成需求:
// 分析需求:输入字符串用Scanner对象,输出用System.out.println("")打印
// 1.引包
public static void main(String[] args) {
// 2.创建对象
Scanner input = new Scanner(System.in);
System.out.println("请输入一个字符串:");
// 打印一行字符串
String str = input.nextLine();
// 使用对象
System.out.println("输入的字符串为:" + str);
}
}
package org.gyun.scanner;
import java.util.*;
/**
* @ClassName:ScannerTest.java
* @Description:Scanner的应用
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 上午10:11:00
* @Version:1.0
*/
//@SuppressWarnings("all")
public class ScannerTest {
/**
* 分析需求: 1. 导入包 2.声明(创建)对象 3.使用
*/
public static void main(String[] args) {
//scannerTest();
//自动转换有两个条件:
//1.都是数据类型,可以相互兼容
//2.目标类型必须大于等于源类型
int a=10;
short b=(short) a;//强转
double c=a;//自动转换
}
private static void scannerTest() {
// 使用Scanner 1.导包 2.创建对象 3.使用
Scanner input = new Scanner(System.in);
System.out.println("请输入您的姓名: ");
String names=input.nextLine();
System.out.println("请输入您的姓名: ");
String name=input.next();
System.out.println("请输入一个数字: ");
int num= input.nextInt();
// 打印
System.out.println("输入的数字为: " + num);
System.out.println("输入的姓名为: " + name);
System.out.println("输入的姓名为: " + names);
}
}
package org.gyun.test;
/**
*
* @ClassName:Test1.java
* @Description:测试float double的区别
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-2 下午4:39:32
* @Version:1.0
*/
public class Test1 {
//主方法
public static void main(String[] args) {
//float和long使用时要注意加相应的字母。如float要加f,long要加l
float f=2.23f;
double d=2.23;
int num=23;
long l=23l;
short s=90;
//自动转换:
short s2=10;
int i2=s2;
//强转
byte b2=(byte) s2;
int i3=10;
double d3=i3;
//自动转换有两个条件:
//1.都是数据类型,可以相互兼容
//2.目标类型必须大于等于源类型,否则强转
i3=(int) d3;
}
}
bug原因:
自动转换有两个条件:
package org.gyun.num;
/**
* @ClassName:NumTest.java
* @Description:两个数据的交换
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 上午11:22:41
* @Version:1.0
*/
public class NumTest {
/**
* 主方法 分析需求:
* 1.已知条件num1=6; num2=8;源
* 2.交换成num1=8; num2=6;
* 目标 我怎么去做?
* 学会借力:借一个容器
* 3.声明 num3=0; 赋值运算符 num3=num1; //num3=6 num1=num2; //num1=8
* num2=num3; //num2=6;
*
*/
public static void main(String[] args) {
// 声明赋值
int num1 = 6;
int num2 = 8;
// 声明临时容器
int temp = 0;
// 使用
temp = num1; // num3=6
num1 = num2; // num1=8
num2 = temp; // num2=6;
//打印
System.out.println("num1=" + num1);
System.out.println("num2=" + num2);
}
}
package org.gyun.test;
/**
* @ClassName:Test3.java
* @Description:两个整数的互换
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-2 下午5:11:51
* @Version:1.0
* 实现需求分析:
* 已知条件:1.int num1=1; 2.int num2=2;
* 得到结果: 1.int num1=2; 2.int num2=1;
* 生活中怎么交换两个容器的东东
* 通常借力:第三个容器
* 把其中的一个容器A的东东放到第三个容器C里,
* 然后再把另外一个容器B的东东放在容器A里,
* 再次把容器C的东东放在容器B里。
* 最后达成互换。
*
*
*/
public class Test3 {
/**
*完成需求:
*/
public static void main(String[] args) {
//声明变量
int num1=1;
int num2=2;
System.out.println("互换之前的打印:int num1="+num1+"---int num2="+num2);
//数据的互换
//借助第三个变量
int temp;
//具体做法:
temp=num1;
num1=num2;
num2=temp;
System.out.println("————————————————————————");
System.out.println("互换之后的打印:int num1="+num1+"---int num2="+num2);
}
}
package org.gyun.num;
/**
* @ClassName:Test3.java
* @Description:使用/ % ++ --的应用
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 上午11:35:48
* @Version:1.0
*/
public class Test3 {
//主方法
// ++ 自身加1
// -- 自身减1
//++i 自身先加1,再赋值
//i++ 先赋值,再加1;
//--i 自身先减1,再赋值
//i-- 先赋值,再减1;
public static void main(String[] args) {
// "/"
//取整数的商 //2
int num1=5/2;
System.out.println(num1);
// "%"
//取整数的余
int num2=5%2;
//打印需求:
System.out.println(num2); //1
System.out.println(++num2);//2
System.out.println(num2++);//3
System.out.println(num2--);//3 2
System.out.println(num2--);//2 1
// 1 2 2 3
num1=num2++ +num2++ +--num2+ ++num2;
System.out.println(num1);
//作业
//num1= --num1+num2+++++num2+--num2+++num1;
}
}
package org.gyun.demo;
/**
* @ClassName:Demo1.java
* @Description:算术运算符
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-3 下午2:20:04
* @Version:1.0
*/
public class Demo1 {
// / % ++ -- + - *
// 如果不在主方法里声明变量,那么全局变量必须加static(了解)
public static void main(String[] args) {
int i = 1;
int count = 0;
count += i;// 等价于:count=count+i;
count *= i;// 等价于:count=count*i;
count -= i;// 等价于:count=count-i;
// 面试题
short s1 = 1; // s1=1
short s2 = 2; // s2=2
// s2= s1 + s2; //两个short值相加有可能超出short的最大范围32767,所以会报错
// short的最大取值范围:
System.out.println(Short.MAX_VALUE);//32767
s2 += s1;// 等价于: s2=s2+s1; 但jvm帮你优化了右边的表达式 s2+s1=3;所以正确 //s1=1 s2=3
// ++ --
// ++ 自增1
// -- 自减1
// 分析:
// i++ 先赋值,再自身加1
// i-- 先赋值,再自身减1
// ++i 自身加1,再赋值
// --i 自身减1,再赋值
// s1=1 s2=3
s1++; // 2
s2++; // 4
System.out.println(s1++); // 2 1 1 2 1 //s1=2; 2
System.out.println(s2++); // 4 3 3 3 3 //s2=4; 4
System.out.println(s1--); // 1 1 2 0 2 3
System.out.println(s2--); // 3 3 4 1 4 5
// s1=2 s2=4;
System.out.println(s1-- + s2++ + --s1 + ++s2 + ++s1);
// 2 + 4 0 6 1
// s1--+s2+++--s1+++s2-++s1 //课后作业
}
}
package org.gyun.scanner;
import java.util.Scanner;
/**
* @ClassName:ScannerCardTest.java
* @Description 求四位会员卡号之和
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 下午12:06:51
* @Version:1.0
*/
public class ScannerCardTest {
/**
* 主方法
* 分析需求:
* 1. 技术点:Scanner对象 算术运算符 / % 赋值运算符 = 打印
* 2. 变量名: ones 个位 tens 十位 hundreds 百位 thousands 千位
* 3. 细化:Scanner 1.导包 2. 创建对象 3. 使用
*
*/
public static void main(String[] args) {
//输入四位会员卡号:
//Scanner 1.导包 2. 创建对象 3. 使用
Scanner input =new Scanner(System.in);
System.out.println("请输入四位会员卡号: ");
int card = input.nextInt();
//得到个位:
int ones=card%10;
System.out.println("个位的数为:"+ones);
//得到十位:
int tens=card/10%10;
System.out.println("十位的数为:"+tens);
//得到百位:
int hundreds=card/100%10;
System.out.println("百位的数为:"+hundreds);
//得到百位:
int thousands=card/1000;
System.out.println("千位的数为:"+thousands);
System.out.println("四位的会员卡号之和为: "+(ones+tens+hundreds+thousands));
}
}
package org.gyun.scanner;
/**
* @ClassName:TestAnd_Or.java
* @Description:逻辑运算符 && || !
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-8-29 下午12:23:13
* @Version:1.0
*
* && 短路与(且) 左边的为true 才去看右边 否则不用看右边 左边和右边同时成立,结果才是true
* || 短路或 左边为true 右边就不用看了,只要有一边是true,结果就是true !
* 取非 是true取非,结果就是false 是false取非,结果就是true
*/
public class TestAnd_Or {
public static void main(String[] args) {
// 声明赋值
int num = 5;
int num1 = 6;
int num2 = 7;
String str = "李自成";
// "!" 取非
if (!str.equals("李自成")) {
System.out.println(1);
} else {
System.out.println(2);
}
// "&&" 短路与(且)
if (num > num1 && num2 > num1) {
System.out.println(num2);
} else {
System.out.println(num1);
}
// "||" 短路或
if (num > num1 || num2 > num1) {
System.out.println(num2);
} else {
System.out.println(num1);
}
}
}
package org.gyun.test;
import java.util.*;
/**
* @ClassName:CardTest6.java
* @Description:求中奖
* @Author:DongGaoYun
* @URL: www.gyun.org
* @Email:[email protected]
* @QQ:1050968899
* @WeiXin:QingYunJiao
* @Date:2019-9-3 下午3:25:03
* @Version:1.0
*/
public class CardTest6 {
/**
* 主方法 分析需求: 求四位会员卡号之和大于20,即中奖 1. 技术点:Scanner对象 算术运算符 / % 赋值运算符 = 打印 关系运算符
* 条件运算符 2. 变量名: ones 个位 tens 十位 hundreds 百位 thousands 千位 3.
* 细化:Scanner 1.导包 2. 创建对象 3. 使用
*
*/
public static void main(String[] args) {
// Scanner 三步走:引包 创建对象 使用
Scanner input = new Scanner(System.in);
// 打印
System.out.print("请输入四位会员卡号:");
int card = input.nextInt();
System.out.println("您输入四位会员卡号为:" + card);
// 个位
int ones = card % 10; // 4567
System.out.println(ones);
// 十位
int tens = card / 10 % 10; // 4567
System.out.println(tens);
// 百位
int hundreds = card / 100 % 10; // 4567
System.out.println(hundreds);
// 百位
int thousands = card / 1000; // 4567
System.out.println(thousands);
int sum = ones + tens + hundreds + thousands;
// 关系运算符
/*
* if(sum>20){ System.out.println("恭喜你!中奖了!"); }
*/
// 三目运算符
String str = sum > 20 ? "恭喜你!中奖了!" : "没有中奖";
System.out.println(str);
}
}
更多免费资源请关注微信公众号: