学习java---变量

本文探讨了Java编程中的变量、常量、数据类型及其重要性。讲解了如何进行JUnit单元测试,强调了在编程中抓住重点学习的重要性。文章详细阐述了Java的关键字、标识符的规则,以及变量和常量的使用。讨论了8种基本数据类型的特性和内存占用,建议在开发中优先选择占用空间较小的数据类型。还提到了装箱、拆箱的概念,并介绍了类型转换的规则。最后,文章介绍了运算符,特别是三目运算符的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个好的开发人员,多思
编织最重要编程思想,突破束缚,举一反三,去想想背后事情,扩散思维
系统分析师(业务分析,系统设计)

1) 怎么实现junit单元测试?

a) Junit第三方开发工具类,只有jdk(jre)才能直接使用,必须导入jar(eclipse很好支持,需要时,它就可以直接导入import)
b) 类中所需要的类戴上一个帽子,是一个注解@Test
注意:单元测试执行一个类多个方法时,不按顺序执行,乱序。因为实际开发中测试不需要区分先后顺序。都测试正常就行了。

2) junit怎么实现3个方法?

3) Junit怎么实现运行指定的方法?
鼠标双击要运行方法名,右键菜单运行junit test,就只执行这一个方法。
扩展:如何运行2个方法?
软件不是万能的,有些不能实现。Junit不能去指定多个方法。要么全部,要么一个!

写代码一板一眼,每个单词都是敲出来。
Eclipse有很丰富快捷方式,快速完成代码
1) main
a) 创建类时就指定

b) main+ Alt+/(自动补全代码)
2) syso+Alt+/

今天任务:java基础,开发语言,语法
1) 关键字,java中定义很多有特殊含义名字,每一个都代表含义,要在固定地方使用。叫做关键字。
Eclipse支持高亮,关键字以紫色来显示,java提供50+

学习方法:在每个地方都较真,不是好的学习方法,要知道学习重点。
比如:以关键字来举例,51还是52?制定规范专家,学习,小学生,这50多个是什么,每个作用是什么,我会用几个?
必须抓大放小。舍得。不代表全部都掌握,一定要掌握核心。

对普通开发人员,哑巴英语,只要记住他们,有些用的很多,用多了自然就记住了(class),有些非常生僻strictfp没有用过。

思考:上面这些关键字是java定义,不让我们用,我们能定义自己名称吗?
显然可以,java把自己定义这么名字标识符
类名:HelloWorld,方法名称:aaa,hello()

标识符:

不能用数字开头,但是可以数字来结尾aaa123
特殊字符中可以使用&和下划线,其他特殊字符尽量不要使用
这些规矩不用死记,这样错误,eclipse就会提示,进行修改就可以

2) 变量和常量
a) 变量,变化的量,在代码中可以再次赋值x=10,x=20,x就称为变量。

b) 常量,只能一次赋值,之后不能再次设置,如果设置报错,在开发中固定写死值,必然:PI=3.14。6.18固定值。
final float PI = 3.14f;
The final(最终类型) local variable(局部变量) PI cannot be assigned. (访问)
It must be blank and not using a compound assignment

package test;
public class World {
public static void main(String[] args) {
	//变量
	int x = 10;		//定义一次,定义类型为整形
	System.out.println(x);
	
	x = 20;				//再次赋值
	System.out.println(x);
	
	//常量,常量变量名全大小,多个单词之间用下划线连接
	final float PI = 3.14f;
	System.out.println(PI);
	
	//PI = 5;	常量不能再次赋值
}}

3) java怎么表达数据,每个数据有它特点
在计算机中非常可怜,只有二进制,只有0和1
人类习惯下面表达方式,可计算机只有0和1,计算机如何处理下面这些情况呢?
数字,10,20,数字可以累积10+20=30
浮点数,3.14
字符,键盘a,b,c
高级开发语言要做其中转换,把日常人类习惯表达数据类型,自动转换成计算机能识别0和1。

表达生活中各种类型数据呢?
Java提供8中数据基本类型,表达万物。

字节空间是这个对应类型在内存空间存储长度。
思考?
存储字节越少好处?占用内存空间小
存储字节越多好处?占用内存空间大(坏处),表达数值范围更大
使用这些类型是,如果能存下,使用大的好呢?还是小的好呢?
尽量要下,内存是固定大小,4g/8g/16g不管怎么说内存都是紧俏,有限资源,你占的越少,其他程序就可以多点内存使用。

变量创建完成,都放在内存中,内存是一个物理介质。
计算机怎么去表达人类定义数据类型?

通过上面表达,人类定义类型,都可以转换为计算机能识别0和1,从而计算机就可以处理我们的数据。
计算机单位:bit,就是0或者1
八种基本类型,一般都是2的倍数
A) byte,1个字节=8bit,8位
B) short,2个字节=16bit,
C) int,4个字节
D) long,8个字节
E) float,4个字节
F) double,8个字节
G) char,2个字节
H) boolean,1个字节
总结:使用基本8种类型时,尽量使用占内存空间较小的类型

	package test;
	public class World {
	public static void main(String[] args) {
		//八种基本类型,字母都小写
		byte b = 125;
		short s = 100;
		int i = 10000;
		long l = 10000000;
		
		float f = 3.14f;
		double d = 3.14;		//写个带小数点的,默认是double
		
		char c = 'a';			//字母,字符类型使用单撇括起来
		//String s1 = "abc";	//字符串使用双引号括起来,字符串不是基本类型
		boolean n = true;		
		
	}}


> 看看基本类型最小值和最大值,也就是它的存储范围


	package test;
	public class World {
	public static void main(String[] args) {
		//八种基本类型,字母都小写
		byte b = 125;
		short s = 100;
		int i = 10000;
		long l = 10000000;
		
		float f = 3.14f;
		double d = 3.14;		//写个带小数点的,默认是double
		
		char c = 'a';			//字母,字符类型使用单撇括起来
		//String s1 = "abc";	//字符串使用双引号括起来,字符串不是基本类型
		boolean n = true;		
		
		//每种数据类型存储范围:
		System.out.println("字节byte类型:" + Byte.MIN_VALUE + "," + Byte.MAX_VALUE);
		System.out.println("短整型short类型:" + Short.MIN_VALUE + "," + Short.MAX_VALUE);
		System.out.println("整型int类型:" + Integer.MIN_VALUE + "," + Integer.MAX_VALUE);		//21亿,用的最多
		System.out.println("长整型long类型:" + Long.MIN_VALUE + "," +Long.MAX_VALUE);
		
		//一般开发使用不多,计算机计算整数更快
		System.out.println("单精度浮点数float类型:" + Float.MIN_VALUE + "," + Float.MAX_VALUE);
		System.out.println("双精度浮点数double类型:" + Double.MIN_VALUE +","+ Double.MAX_VALUE);
		
		//它们特殊,一般没有范围概念char:a~z,包括特殊字符:-_,%&
		System.out.println("字符char类型:" + Character.MIN_VALUE + "," + Character.MAX_VALUE);
		System.out.println("布尔boolean类型:"+ Boolean.FALSE + "," + Boolean.TRUE);
	}}

问题:
1)字面量null,true,fasle
学习问题,到底是字面量还是关键字,不要去过分较真。
学习英语最重要的是什么?交流,人和人的交流,而不是纠结语法。

如果作为一个专家,引经据典,这是应该纠结的!!!,但是我们是普通开发者,要把东西做出来才是我们应该干的!!!

1)不是我们培优要干的事情,java就业,它一点一来讲。5个月时间,才讲了我们1/3的内容。Java培优学习重点在互联网架构知识。不在java基础。
2)这些东西后面你要写数万遍,main老师写
多写,去体悟。

回顾:
1) java关键字,再强调,你学习重点在哪里?不是去纠结它是字面量还是关键字,null干什么的?true、false干什么的?特别作为一个初学者关注应用。在开发中不能使用这些名称。包括:java不能使用,main不能使用。都可能造成错误。
2) 标识符,开发人员自己定义名字,随便起,有一定规则,不能数字开头。Eclipse你写出来,如果不符合规范,报错。学知识不用死记,现在知识体系太庞大了。都记记不住。找核心的东西死记。
3) 变量(变化的量,可以重新赋值)、常量(第一次赋值后不能再次赋值)。这些东西不用去死记,写多了,自然找到标准。当你不知道如何写,抄老师的。
4) 八种基本变量类型
a) byte,字节,1个字节=8bit位,比特:0或1
b) short,短整形,-128~127
c) int,整形,-3w~3w
d) long,长整形,-21亿~21亿
e) float,单精度浮点数,表示小数,3.14,6.18
f) double,双精度浮点数,
g) char,字符’a’,’b’;a~z不是一个范围,所有打印是有东西,只是大家看不见
h) boolean,布尔类型:true真,false假
5) 基本类型占用空间最小,其中尽量在使用最短的数据类型,不浪费内存
6) char最大值最小值是特殊字符,无法展现
char c1 = ‘b’; //b字符,在内存中存储是它的ascii码
System.out.println(c1);
char c2 = 98; //98就是b字符串ascii码
System.out.println(c2);
char c3 = 0; //ascii码0
System.out.println("="+c3+"=");
7)java提供8种基本类型,它不是面向对象的,不是对象。
Java是一种面向对象语言,它会给对象有很多额外好处。这些基本变量是没有的。
Java就推出每个对应包装类型(对象)
Java事件中数据类型有两类:基本数据类型,引用类型
包装类都是引用类型
a) byte,Byte
b) short,Shrot
c) int,Integer
d) long,Long
e) float,Float
f) double,Double
g) char,Character
h) boolean,Boolean
8)基本变量和包装类型变量有什么不同呢?
基础变量,占用内存空间小。没有什么额外功能。
包装类型(引用类型),占用存储空间大,额外提供很多工具转换等等方法,这些是基本变量没有的。开发中更加方便。

装箱和拆箱

总结:
1) 装箱,就是把基本类型封装成包装类型
2) 拆箱,就是把包装的类型获取它的基本类型值
这两个过程都是java自身自动完成。我们大家只要知道这个概念存在即可。
因为基本类型运算速度快,引用类型(包装类型)它有更多方法,更方便我们来开发,引申,这样变量就形成对象,java叫面向对象开发语言,和相关后面知识就统一

强调:装箱、拆箱概念不好理解,不管他,知道就行。实际开发为什么能这样写,知道原因即可。

类型转换:
不同类型之间转换

自动转换:从小的类型转换成大的类型。例如:byte的数据转换int类型,自动转换
强制转换:从大的类型转换成小的类型。例如:int类型的数据转成byte类型,必须强制

package test;
public class Trans {
public static void main(String[] args) {
	//小转大,自动
	byte b1 = 100;
	int i1 = b1;//i1整数,b1是字节,自动从字节类型转换整数类型,java自动		 
	System.out.println(b1);
	System.out.println(i1);
	
	//大转小,强制
	int i2 = 100;			
	//byte b2 = i2;	//报错,Type mismatch 类型不匹配: cannot convert from int to byte 不能转换int类型到byte类型

	//提示有风险,但是开发者知道,byte中可以存下100值
	//强制转换
	byte b2 = (byte)i2;		//(类型)强制把i2转成byte类型
	
	System.out.println(i2);
	System.out.println(b2);
}}

记住:强制转换写法就够了
byte b = (byte) i2

java提供运算符

1)%,取余,偶数和奇数,redis分布式底层工作原理hash一致性算法,取余

package test;

public class TestArea {
	public static void main(String[] args) {
		//凭什么说它是一个偶数=2的倍数,整除没有余数就是偶数,如果有余数就是奇数
		

	//取余
	int i = 11;		
	if(i % 2 == 0) {			//判断语句if(条件),分支语句
		//条件真,执行这里的代码
		System.out.println(i+"是偶数");
	}else {
		//条件假,执行这里的代码
		System.out.println(i+"是奇数");
	}
	}
}

2)++自加,--自减,java特色

```java
package test;

public class TestArea {
	public static void main(String[] args) {
		int i = 10;
		int j = i -1;
		System.out.println(j);
		
		int x = 10;
		x = x - 1;
		int y = x;
		System.out.println(y);
		
		int a = 10;
		a--;		//a = a-1;  a--就是这句话缩写
		System.out.println(a);
		
		a++;	//a = a+1; 	a++就是这句话缩写
		System.out.println(a);
		
	}
}
package test;

public class TestArea {
	public static void main(String[] args) {
		int count = 5;
		System.out.println(++count);	//6,当前值:5+1=6, count=6,print 6
		System.out.println(count++);	//6,当前值:6,print 6,6+1=count=7  
		
		System.out.println(--count);		//6,当前值:7,7-1=6,count=6,print 6
		System.out.println(count--);		//6,当前值:6,print 6,count=6-1,当前count=5
		
		System.out.println(count);
		
		//++x 在先执行++操作,在打印
		//x++,先打印,后执行++操作		
	}
}

这段程序比较烧脑,程序不是老师讲你立刻就能懂,课下再次去一步步分析解决,把每一步过程推演过来。通过打印结果验证推演过程。
如果推演出错,乱了,从头重新推演。

课后反复练习

3) 三目运算符
Java中唯一一个三目运算符
z=x+y两目运算,第一目x,第二目y
z=(x>y)?x:y 注意语法

1) 判断小括号中条件(判断表达式:true/fase,布尔结果)
2) 如果判断结果为true,执行第二目内容,返回x
3) 如果判断结果为false,执行第三目内容,返回y
简单快捷,一句话表达if判断语句,替代5行if语句,简写。

小结:
1) 包装类型,基本类型都有对应
a) Byte字节(byte)、Short短整型(short)、Integer整型(int)、Long长整型(long)
b) Float单精度浮点数(float)、Double双精度浮点数(double)
c) Character字符(char)、Boolean布尔(boolean)
2) 什么时候使用基本类型,什么时候使用包装类型(先记住原则)
a) 在方法中尽量使用基本类型
b) 在对象传递时,pojo
我不知道,在哪里使用呢?看别人代码。老师案例。
3) 装箱,拆箱
a) 装箱,Integer i = 10;,把整型(默认写一个数字)自动放入到包装类型中,过程叫做装箱。Integer i = new Integer(10);
b) 拆箱,int j = i;,把i是Integer包装类型,利用包装类型额外提供方法intValue(),获取i对象的真正整数值10,把10给j整数类型变量。
c) 装箱、拆箱它把基础类型和包装类型之间转换,自动实现。开发者无需写代码,开发起来更加简洁。
4) 类型之间转换
a) byte b = 120; int i = b;,120是一个字节类型,i是整数类型,自动转换(小的可以放入大的容器中:小转大)

b) int i =100; byte b= (byte)i;

强制转换就把前面3个字节的内容砍掉了,就留下最后一个字节的内容,这样就可以放入到字节类型变量中。(大转小,强制转换)
问题:大转小时,可能造成数据丢失。开发者一定要清晰,是否可以丢失!!,切记!!!
5) 运算符。其他简单运算符后面开发中都会遇到,
a) 取余%
5%2=1
2%2=0
b) 自加++,自减—(烧脑,多演算、推演,看操作结果,来验证思路是否正确,比较难)后期编程使用很多,用多了非常熟悉
i++,先执行i,在i=i+1
i–,先执行i,在i=i-1
++i,先i=i+1,在执行结果
–i,先i=i-1,在执行结果
c) 三目运算符,java唯一一个,非常特殊,固定结构:(判断条件)? 结果1 : 结果2,类似一个if判断语句
int r = (x>y)?x:y 如果x>y是成立的,结果true真,返回r=x;如果x>y不成立,结果false假,返回r=y。

问题:

“字符串”直接在控制台中展现
+叫做字符串连接符,把加号两边内容连接起来
q是一个变量,就会翻译成它的当前值

a是一个变量,就会翻译成它的当前值,a=10,结果10
控制台:q=10,a=10

Ascii,美国计算机规定英文26个字母,a~z,还有特殊符号,#$%^,还有制表符,tab键。。不可见字符。放在表中,ascii码表。
计算机只有0和1,ascii码表出现就可以把键盘字符,对应一个整数,最后整数可以翻译成0和1一串数字,翻译过来计算机就可以识别。
就像我现在在敲键盘字母,会被翻译中文字。是一样道理。
百度。

我按下键盘a小写,操作系统键盘接收到a,查询ascii码表,整数97,在查询二进制
0110001,计算机就可以识别这个二进制,存储到内存中。内存(只有0和1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值