Java02 【数据类型转换、运算符、方法入门】

本文详细介绍了Java中的数据类型转换、运算符、方法等基础知识,并通过示例代码帮助读者更好地理解和掌握这些概念。

第一节数据类型转换

1.1自动转换:将取值范围小的类型 自动提示为取值范围大的类型

public class Demo{
	public static void main(String[] args){
		//System.out.println("Hello");
		
		//
		int num1  =  10;
		long num2 = 20L;
		double num3 = 30.0;
		float num4 = 40.0F;
		
		byte num5 = 10;
		long num6 =  num5;
		System.out.println(num6);
		
		int num7 = 10;
		double num8 = num7;
		System.out.println(num8);
		
		int a = 10;
		long b = a;
		System.out.println(b);
	}
}

转换图解

byte类型内存占有一个字符,在int类型运算时会提升为int类型,自动补充三个字节,因此计算后的结果会是int类型

转换规则-范围小的类型向范围大的类型提升,byte short char 直接提升为int

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

1.2强制转换:将取值范围大的类型转换为小的类型

转换格式:数据类型 变量名 = (数据类型)被转数据值

public class Demo{
	public static void main(String[] args){
		
		//
		long num = 10L;
		byte num2 = (byte)num;
		System.out.println(num2);
		
		double num3 = 20.5;
		byte num4 = (byte)num3;
		System.out.println(num4);
		
		int a = 50;
		byte b = (byte) a;
		System.out.println(b);
	}
}

转换图解

注意:

浮点型转成整数,直接取消小数点,可能会有数据精度损失;

int强转为short砍掉俩个字节,可能会有数据丢失;

1.3ASCII编码表:就是将人类的文字和一个十进制进行对应起来的一张表。

*将所有的英文字母,数字,符号都和十进制进行对应,因此产生了世界上第一章编码表(American Standard Code for inFormaion interchange 美国标准信息交换码)

1.4char与int互转

 将字符保存到计算机中,或者从计算机中读出字符(一个数字对应一个字符)

格式:

int 变量名 = 字符;

char 变量名 = (char)整数

public class Demo{
	public static void main(String[] args){
			
			char ch = '中';  //保存
			int num = ch; 
			System.out.println(num);//20013
			
			
			int n = 200130;   //读取
			char c = (char)n;
			System.out.println(c);
			
			//题
			
			char  c2 = 'a';
			System.out.println(c2 + 1);//97 + 1
	}
}

第二节运算符

2.1算数运算符(+ - * /  %(读作模 理解 取余) ++(自增) --(自减) ):对数据(变量/常量)进行运算

前四种和数学一样

public class Demo{
	public static void main(String[] args){
		int a = 24;
		int b = 4;
		//	+
		System.out.println(a+b);//28
		//	-
		System.out.println(a-b);//20
		//	*
		System.out.println(a*b);//96
		//	/
		System.out.println(a/b);//6
        int a = 10;
		int b = 3;
		//10/ 3 = 3.....1
        System.out.println(a/b);//3
		System.out.println(a%b);//1
	}
}
		
		
	

加号注意事项

俩个作用

对俩个数字有求和作用

public class Demo{
	public static void main(String[] args){
			
			char ch = '中';  //保存
			int num = ch; 
			System.out.println(num);//20013
			
			
			int n = 200130;   //读取
			char c = (char)n;
			System.out.println(c);
			
			//题
			
			char  c2 = 'a';
			System.out.println(c2 + 1);//97 + 1
	}
}

对字符串有想接作用(连接字符串:当+号两边只要有一边出现字符串)

	
		System.out.println("Hello"+"World");// "HelloWorld"
		System.out.println("Hello"+3);//"Hello3"
		System.out.println(3+"Hello");//"3Hello"

例子

public class Demo{
	public static void main(String[] args){
		//1,对两个数求和:当+号两边都是数值
		int a = 24;
		int b = 4;
		System.out.println(a+b);//28
		//	+
		//2,连接字符串:当+号两边只要有一边出现字符串
		
		System.out.println("Hello"+"World");// "HelloWorld"
		System.out.println("Hello"+3);//"Hello3"
		System.out.println(3+"Hello");//"3Hello"
		
		//例子1:  
		System.out.println(5+"+"+5+"="+(5+5));//5+5=10
		
		//例子2:
		int x = 10;
		int y = 20;
		System.out.println(x+"+"+y+"="+x+y);//10+20=1020
		//System.out.println(10+"+"+20+"="+10+20);
		
	}
}

除号的注意事项

1,两个整数相除,无条件去掉小数部分,要整数部分

public class Demo{
	public static void main(String[] args){
		//1,两个整数相除,无条件去掉小数部分,要整数部分
		int a = 10;
		int b = 2;
		int c = 4;
		double d = 4.0;
		int e = 0;
		System.out.println(a/b);//5
		
		System.out.println(a/c);//2.5
        }
}

2,让一个浮点数参与运算符

public class Demo{
	public static void main(String[] args){
		
		int a = 10;
		int b = 2;
		int c = 4;
		double d = 4.0;
		int e = 0;
		
		//2,让一个浮点数参与运算符
		
		System.out.println(a/d);//2.5
		
		
		
		
	}
}

3,除数不能为 0

public class Demo{
	public static void main(String[] args){
		//1,两个整数相除,无条件去掉小数部分,要整数部分
		int a = 10;
		int b = 2;
		int c = 4;
		double d = 4.0;
		int e = 0;
		
		//3,除数不能为 0
		//System.out.println(a/e);//编译不报错,运行奔溃  Exception 不正常
		
		
	}
}

%(取余/模mod)

被除数/除数 = 商.....余数

public class Demo{
	public static void main(String[] args){
		
		int a = 10;
		int b = 3;
		//10/ 3 = 3.....1
		
		System.out.println(a/b);//3
		System.out.println(a%b);//1
		
		//1,倍数关系/整除关系
		
		//例子 奇数 不能被2 整除   偶数 能被2 整除
		int c = 21;
		System.out.println(c%2);//0 偶数 否则 奇数
		
		
	
		
		
		
	}
}

++(自增)-不适用于常量

变量名 = 变量名 + 1;

变量名++;

格式

++变量名;

先加然后变量参与计算

变量名++;

先计算后加

public class Demo{
	public static void main(String[] args){
		
			int num = 10;
			
			//前加加,++变量名;
			//++num; // num = num+1;
			//后加加,变量名++;
			num ++;
			System.out.println(num);
			
			
		
	}
}

混合使用++(不要使用)

int a = 10;
			int b = ++a;// a = 11 新值 int b = 11;
			System.out.println(a);//11
			System.out.println(b);//11

建议单独使用

            int a = 10;
			a++;//11
			int b = a;//b = 11;
			System.out.println(a);
			System.out.println(b);	
public class Demo{
	public static void main(String[] args){
		
			
			int x = 10;
			x++;
			++x;
			System.out.println(x++);
			
		
	}
}

赋值运算符-简化代码( = += -=  *= /= %=)

变量名 = 变量名+值;

变量名 += 值;

public class Demo{
	public static void main(String[] args){
		
		double salary = 10000.00;
		// 		+=
		
		salary += 1000;//相当于 salary = salary+1000;
		
		System.out.println(salary);
		
		// 		-=
		
		salary -= 50; //相当于  salary = salary - 50;
		
		System.out.println(salary);
		
		// 		*=
		
		salary *= 5 ;// 相当于 salary = salary * 5;
		System.out.println(salary);
		
		// 		/=
		
		salary /= 10; //相当于  salary = salary/10;
		System.out.println(salary);
		
		// 		%=
		int num =(int)salary;
		
		num %= 100;  // num = num%100;
		System.out.println(num);
		
		
		//隐含一个强转
		short s = 10;
		//s += 10;
		s =(short) (s + 10); //byte short char 参与运算符自动提升int   short+int  ->int +int 
		System.out.println(s);
		
	}
}

比较运算符-对俩个值进行比较得到一个boolean值(true/false)-> < >= <= ==是否相等!=是否不等

public class Demo{
	public static void main(String[] args){
		//模拟用户输入的数据
		int a =  10;
		int b =  20;
		int c =  10;
		// >  大于
		
		System.out.println(a > b);//false
		System.out.println(b > c);//true
		
		// <  小于
		System.out.println(a < b);//true
		System.out.println(a < c );//false
		
		// >= 大于或者等于
		System.out.println(a >= c );//true
		
		// <= 小于或者等于
		System.out.println(a <= b );//true
		
		// ==  是否相等
		System.out.println(a == c);//true
		System.out.println(a == b);//false
		// !=  是否不等
		System.out.println(a != c);//false
		System.out.println(a != b);//true
	}
}

逻辑运算符-对俩个boolean值进行运算, 结果也是boolean

包含

&& 双与/短路与 表示并且-

|| 双或/短路或 表示或者

! 非               表示相反

表达式1&&表达式2

表达式1||表达式2

!变量

&&--执行过程:表示表达式1执行完如果正确会执行表达式2 如果错误将不执行表达式2

&-----执行过程:表示表达式1执行完如果正确会执行表达式2 如果错误继续执行表达式2

public class Demo{
	public static void main(String[] args){
		//&& 双与 /短路与   表示并且
		
		//例子
		
		System.out.println(true&&true);//true
		System.out.println(true&&false);//false
		System.out.println(false&&true);//false
		System.out.println(false&&false);//false
		
		//口诀:全真为真,一假则假
		
		System.out.println("======");
		//||  双或  /短路或  表示或者
		
		System.out.println(true||true);//true
		System.out.println(true||false);//true
		System.out.println(false||true);//true
		System.out.println(false||false);//false
		
		System.out.println("======");
		
		//口诀:有真为真,全假则假
		
		// !    非  	表示取反   
		//口诀:真变假,假变真
		System.out.println(!true);//false
		System.out.println(!false);//true
		System.out.println("======");
		//短路 ||
		boolean b = true;
		System.out.println(true||!b);//true
		System.out.println(b);//true
		System.out.println("======");
		//短路 &&
		System.out.println(false&& !b);//false
		System.out.println(b);//true
		
		
	}
}

三元运算符(简化版的if  else函数)

java中唯一一个需要三个表达式参与运算的运算符

格式

布尔表达式?表达式1:表达式2

注意:前后的数据类型必须一致

结果必须被使用,直接打印或赋值给一个变量

public class Demo{
	public static void main(String[] args){
		//模拟用户输入
		int a  = 20;
		int b  = 100;
		
		
		//
		int max = ( a > b ? a : b );
		
		System.out.println(max);
		
		
		System.out.println( a > b ? a : b );
		
		
		boolean d = true;
		/*
		boolean  max2 = (a > b ?  a : d);
		System.out.println(max2);*/
		
	}
}

第三节方法

将相同的代码放在一起(封装),通过调用来使用,达到重复使用代码的目的

public class Demo{
	public static void main(String[] args){
		
		// 
		System.out.println("吃食堂午饭");
		/*
		System.out.println("写代码");
		System.out.println("改BUG");
		System.out.println("运行代码");*/
		
		//方法的调用处
		coding();
		System.out.println("========================");
		System.out.println("吃食堂晚饭");
		/*
		System.out.println("写代码");
		System.out.println("改BUG");
		System.out.println("运行代码");*/
		//方法的调用处
		coding();
		
	}
	
	//方法的定义
	public static void coding(){
		
		System.out.println("写代码");
		System.out.println("改BUG");
		System.out.println("运行代码");
		
		
	}
	
}

方法的使用

1.先定义再用

2.定义格式

public static void  方法名(){

    //一堆代码 方法体

特点:无参无返回值的方法

3.调用格式

方法名();-必须在main程序入口中调用

public class Demo{
	
	
	//2,方法定义之后一定要调用才能执行,目前我们就在main调用
	public static void main(String[] args){
		
		printMax();//方法调用处
		
	}
	
	//1,定义方法,无参无返回值的方法
	
	public static void printMax(){
		
		//模拟整数
		int a = 10;
		int b = 200;
		
		int max = ( a > b ? a : b );
		System.out.println(max);
		
	}
	
}

方法的注意事项

先定义在使用

1.定义

   a.方法名 见名知意 小驼峰

   b.定义位置,定义在类中其他方法外

   c.可以定义无数个方法

   d.定义的顺序与执行的顺序无关

2.调用

   a.方法名必须准确

   b.方法必须调用才会执行里面的内容

   c.执行的顺序有调用的顺序决定

第四节JShell脚本工具(了解)

JDK9增加的一个功能

用于测试一段代码能不能执行或者执行结果是什么

执行地方类似于cmd窗口

怎么打开?

第一步打开cmd 输入JShell 回车

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

### 光流法C++源代码解析与应用 #### 光流法原理 光流法是一种在计算机视觉领域中用于追踪视频序列中运动物体的方法。它基于亮度不变性假设,即场景中的点在时间上保持相同的灰度值,从而通过分析连续帧之间的像素变化来估计运动方向和速度。在数学上,光流场可以表示为像素位置和时间的一阶导数,即Ex、Ey(空间梯度)和Et(时间梯度),它们共同构成光流方程的基础。 #### C++实现细节 在给定的C++源代码片段中,`calculate`函数负责计算光流场。该函数接收一个图像缓冲区`buf`作为输入,并初始化了几个关键变量:`Ex`、`Ey`和`Et`分别代表沿x轴、y轴和时间轴的像素强度变化;`gray1`和`gray2`用于存储当前帧和前一帧的平均灰度值;`u`则表示计算出的光流矢量大小。 #### 图像处理流程 1. **初始化和预处理**:`memset`函数被用来清零`opticalflow`数组,它将保存计算出的光流数据。同时,`output`数组被填充为白色,这通常用于可视化结果。 2. **灰度计算**:对每一像素点进行处理,计算其灰度值。这里采用的是RGB通道平均值的计算方法,将每个像素的R、G、B值相加后除以3,得到一个近似灰度值。此步骤确保了计算过程的鲁棒性和效率。 3. **光流向量计算**:通过比较当前帧和前一帧的灰度值,计算出每个像素点的Ex、Ey和Et值。这里值得注意的是,光流向量的大小`u`是通过`Et`除以`sqrt(Ex^2 + Ey^2)`得到的,再乘以10进行量化处理,以减少计算复杂度。 4. **结果存储与阈值处理**:计算出的光流值被存储在`opticalflow`数组中。如果`u`的绝对值超过10,则认为该点存在显著运动,因此在`output`数组中将对应位置标记为黑色,形成运动区域的可视化效果。 5. **状态更新**:通过`memcpy`函数将当前帧复制到`prevframe`中,为下一次迭代做准备。 #### 扩展应用:Lukas-Kanade算法 除了上述基础的光流计算外,代码还提到了Lukas-Kanade算法的应用。这是一种更高级的光流计算方法,能够提供更精确的运动估计。在`ImgOpticalFlow`函数中,通过调用`cvCalcOpticalFlowLK`函数实现了这一算法,该函数接受前一帧和当前帧的灰度图,以及窗口大小等参数,返回像素级别的光流场信息。 在实际应用中,光流法常用于目标跟踪、运动检测、视频压缩等领域。通过深入理解和优化光流算法,可以进一步提升视频分析的准确性和实时性能。 光流法及其C++实现是计算机视觉领域的一个重要组成部分,通过对连续帧间像素变化的精细分析,能够有效捕捉和理解动态场景中的运动信息
微信小程序作为腾讯推出的一种轻型应用形式,因其便捷性与高效性,已广泛应用于日常生活中。以下为该平台的主要特性及配套资源说明: 特性方面: 操作便捷,即开即用:用户通过微信内搜索或扫描二维码即可直接使用,无需额外下载安装,减少了对手机存储空间的占用,也简化了使用流程。 多端兼容,统一开发:该平台支持在多种操作系统与设备上运行,开发者无需针对不同平台进行重复适配,可在一个统一的环境中完成开发工作。 功能丰富,接口完善:平台提供了多样化的API接口,便于开发者实现如支付功能、用户身份验证及消息通知等多样化需求。 社交整合,传播高效:小程序深度嵌入微信生态,能有效利用社交关系链,促进用户之间的互动与传播。 开发成本低,周期短:相比传统应用程序,小程序的开发投入更少,开发周期更短,有助于企业快速实现产品上线。 资源内容: “微信小程序-项目源码-原生开发框架-含效果截图示例”这一资料包,提供了完整的项目源码,并基于原生开发方式构建,确保了代码的稳定性与可维护性。内容涵盖项目结构、页面设计、功能模块等关键部分,配有详细说明与注释,便于使用者迅速理解并掌握开发方法。此外,还附有多个实际运行效果的截图,帮助用户直观了解功能实现情况,评估其在实际应用中的表现与价值。该资源适用于前端开发人员、技术爱好者及希望拓展业务的机构,具有较高的参考与使用价值。欢迎查阅,助力小程序开发实践。资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值