java变量基础知识

一、变量基础知识

1、练习所有类型变量的定义,打印每种类型变量的值

A.数据类型分类

四类数据类型字节数数据表示范围
整型byte1-128~127
整型short2-32768~32767
整型int(常用)4-21亿~21亿(-2147483648~2147483648)
整型long8-2^63~2^63
浮点型float43.403E38~3.403E38
浮点型double8-1.798E308~1.798E308
字符型char2表示一个字符,如‘a’、‘1’、’家‘
布尔型boolean1只有两个值true与false

B.定义各种类型变量并打印输出这些值

  • 源码
class Data {
	public static void main(String[] args) {
		byte b = 0b10; //定义byte类型变量
		System.out.println(b);

		short s = 1;//定义short类型变量
		System.out.println(s);

		int i = 1;//定义int类型变量
		System.out.println(i);

		long l = 0xA;//定义long类型变量
		System.out.println(l);

		float f = 1.111e11F;//定义float类型变量
		System.out.println(f);

		double d = 1.1;//定义double类型变量
		System.out.println(d);

		char c = '义';//定义char类型变量
		System.out.println(c);

		boolean boo = true;//定义boolean类型变量
		System.out.println(boo);

		String str = "中国";//定义字符串
		System.out.println(str);

		System.out.println(b + s + i + l + f + d + c + str);
		}
}
复制代码
  • 输出结果:

2、任选两种类型,写一个自动类型提升和强制类型小案例

A.自动类型提升

  • 取值范围小的类型,自动转换取值范围大的类型
  • boolean类型不参与转换

byte-->short-->int-->long-->float-->double char-->int

  • 例子:
public class DataConvert {
	public static void main(String[] args) {
		//定义double类型的变量
		double d = 1000;//出现类型自动转换,把int转换成double
		System.out.println(d);

		int i = 100;
		double d2 = i;//出现类型自动转换,int自动转成double
		System.out.println(d2);

		byte b = 10;
		int j = b;//自动类型转换,byte自动转换int
		System.out.println(j);
	}
}
复制代码
  • 输出结果:

B.强制转换

  • 数据类型范围大的转换成数据类型范围小的;
  • 没有特殊要求,不得强制转换;
  • 数据类型的强制转换公式 被转换后的数据类型 变量名 = (被转换后的数据类型)要转换的数据
  • 例子:
class DataConvert_1 {
	public static void main(String[] args) {
		//double 浮点,转成整数int
		double d = 3.1415926;
		int i = (int)(d);
		System.out.println(i);
	}
}
复制代码
  • 输出结果:

3、运算符:

A.算术运算符(+ - * / % ++)

运算符原酸规则范例结果
+正号+33
+2+35
+连接字符串"中" + "国""中国"
-负号int a = 3 ; -a-3
-3-12
*2 * 36
/5 / 22
%取模5 % 21
++自增int a = 1; a ++/++ a2
--自减int b = 3; a--/--a2
  • 例子:
public class Operator_1 {
	public static void main(String[] args) {
		//+ 连接作用,将一个字符串和其他数据连接
		//遇到字符串,+意思为连接符号
		//任何类型只要和字符串 + ,所有的数据都变成字符串
		System.out.println("5+5 = " + 5 + 5);

		int i = 9;
		int j = 100;
		
		int add = i + j;//加法运算
		System.out.println(add);
		
		int sub = i - j;//减法运算
		System.out.println (sub);
		
		int mul = i * j;//乘法运算
		System.out.println(mul);

		double div = (double)i / j;//除法运算
		System.out.println(div);
		
		int mod = i % j;//取模运算
		System.out.println(rem);
		
		//自增运算 ++
		int a = 1;
		int b = 1;
		int c = 1;
		c++;
		int d = 1;
		++d;
		System.out.println(a++);
		System.out.println(++b);
		System.out.println(c);
		System.out.println(d);
	}
}
复制代码
  • 输出结果:

B.赋值运算符(=,+=,/=,*=,%=)

运算符运算规则范例结果
=赋值int a = 22
+=加后赋值int a = 2; a+=24
-=减后赋值int a = 2; a -=20
*=乘后赋值int a = 2; a *= 24
/=整除后赋值int a = 2;a /= 21
%=取模后赋值int a = 2; a %= 20
  • 例子:
//赋值运算
class Demo_1 {
	public static void main(String[] args) {
		int i=2,j=2,k=2,m=2,n=2;

		i += 2;//加后赋值
		System.out.println(i);

		j -= 2;//减后赋值
		System.out.println(j);

		k *= 2;//乘后赋值
		System.out.println(k);

		m /= 2;//整除后赋值
		System.out.println(m);

		n %= 2;//去模后赋值
		System.out.println(n);
	}
}
复制代码
  • 运算结果

C.比较运算符(>,<,>=,<=,==,!=)

运算符运算规则范例结果
==相等于4 == 3false
!=不等于4 != 3true
<小于4 < 3false
>大于4 > 3true
<=小于等于4 <= 3false
>=大于等于4 >= 3true
  • 例子:
//比较运算
class Demo_2 {
	public static void main(String[] args) {
		int i = 10;
		int j = 12;

		boolean boo1 = i == j;
		System.out.println(boo1);

		boolean boo2 = i != j;
		System.out.println(boo2);

		boolean boo3 = i < j;
		System.out.println(boo3);

		boolean boo4 = i > j;
		System.out.println(boo4);

		boolean boo5 = i <= j;
		System.out.println(boo5);

		boolean boo6 = i >= j;
		System.out.println(boo6);
	}
}
复制代码
  • 输出结果:

D.逻辑运算符(&&,||,!)

  • 例子:
class Operator_3 {
	public static void main(String[] args) {
		System.out.println(true & true);
		System.out.println(false & true);
		System.out.println(false & false);
		System.out.println(true | true);
		System.out.println(true | false);
		System.out.println(false | false);
		System.out.println(true ^ false);
		System.out.println(true ^ true);
		System.out.println(false ^ false);
		System.out.println(false && true);
		System.out.println(true || false);
		System.out.println(!false);
		System.out.println(!true);
	}
}
复制代码
  • 输出结果:

4、练习商品库存案例

  • 源码:
/*
实现商品库存清单案例
分析步骤:
	1.实现表头,是固定数据,直接写输出语句;
	2.表格中间,商品数据采用变量形式,定义变量,找对数据类型,输出所有变量
	3.表格尾巴,一部分数据固定,另一部分,商品数据进行数学计算,运算符
*/
class Shop {
	public static void main(String[] args) {
		//输出表头固定数据
		System.out.println();
		System.out.println("---------------------------商场清单---------------------------");
		System.out.println();
		System.out.println("品牌型号		尺寸		价格		库存数");
               //定义表格中的数据变量
		//品牌型号 String类型,尺寸/价格 double类型,库存 int类型
                //定义MacbookAir的属性
		String macBrand = "MacBookAir";
		double macSize = 13.3;
		double macPrice = 6988.88;
		int macCount = 5;

                //定义ThinkPadT450的属性
		String lenovoBrand = "ThinkPadT450";
		double lenovoSize = 14.0;
		double lenovoPrice = 5999.99;
		int lenovoCount = 10;

                //定义ASUS-FL5800的属性
		String asusBrand = "ASUS-FL5800";
		double asusSize = 15.6;
		double asusPrice = 4999.5;
		int asusCount = 18;

                //输出表格内容
		System.out.println(macBrand +"		" + macSize + "		" + macPrice + "		" + macCount);
		System.out.println(lenovoBrand +"		" + lenovoSize + "		" + lenovoPrice + "		" + lenovoCount);
		System.out.println(asusBrand +"		" + asusSize + "		" + asusPrice + "		" + asusCount);
		System.out.println("--------------------------------------------------------------");
                //表尾内容
		System.out.println("总库存数:"+(macCount + lenovoCount + asusCount));
		System.out.println("库存商品总金额:"+(macPrice * macCount + lenovoPrice * lenovoCount + asusPrice * asusCount));
	}
}
复制代码
  • 输出结果:**

二、课后作业:

1.数据类型转换:

A.第一题

byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
复制代码

哪句是编译失败的呢?为什么呢?

  • 答: 第2句编译错误,因为两个byte类型的变量相加很可能超出byte的取值范围,所以编译会错误;类似的情况还有shortcha类型。

B.第二题

byte by = 130;有没有问题?有问题如何解决?结果是多少呢?

  • 答:
  1. 130超出byte的取值范围(-128~127),编译错误;
  2. 解决办法:byte by = (byte)130
  3. 结果:数据会损失精度,结果为-126

C.第三题:

byte b = 10;
b = b + 1;
b+=1;
复制代码

有没有问题?为什么呢?

  • 答:
    1. 第2行代码会编译错误;
    2. 因为1默认为int类型,(b+1)会自动提升为int类型,无法把int类型的数字赋值给byte类型的变量;
    3. 解决办法 b = (byte)(b + 1);

2.分析以下需求,并用代码实现

  • 已知三位数173,打印百位上的数字(线索利用对100 进行 / 运算获得百位上的数字);分别打印十位上和个位上的数字(线索:利用对10或者100进行/或者%运算获取十位和个位上的数字)
  • 源码
class Demo_3 {
	public static void main(String[] args) {
		int i = 173;
		int m = i / 100;//定义百位数为m
		System.out.println(m);

		int n = i % 100;
		int k = n / 10;//定义十位数为k
		int f = n % 10;//定义个位上的数为f
		System.out.println(k);
		System.out.println(f);
      }
}
复制代码
  • 输出结果

3.看程序说结果:

public class Test1 {
	public static void main(String[] args) {
		int x = 4;
		int y = (--x)+(x--)+(x*10);
		System.out.println("x = " + x + ",y = " + y);
	}
}
复制代码
  • 输出结果: x = 2 , y = 26

转载于:https://juejin.im/post/5a34e6bc51882529c70f326e

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值