如鹏网JAVA培训笔记1(晓伟整理)

JDK(Java Developmet Kit)

JRE(Java RunTime Environment)的区别:

JRE只有运行JAVA程序的环境,没有开发相关的工具;JDK=JRE+开发相关的工具。

用记事本运行java程序出现的问题:

//可以执行的程序

class hello

{

public static void main(String[] args)

{

System.out.println("Hello World!");

}

}

 

//自己编写的为什么不能执行??

 

 

 

 

class hello 

{

public static void main(String[] args)

{

   System.out.println("如鹏(www.rupeng.com),欢迎你的加入!");

}

}

//觉得应该是在同一个文件加下,两个类名完全一样,所以没有执行

//我尝试将类名进行修改

class xiaowei 

{

public static void main(String[] args)

{

   System.out.println("如鹏(www.rupeng.com),欢迎你的加入!");

}

}

  

xiaowei.java(高级语言) -> xiaowei.class(二进制码)

java是依赖于字节码文件的

字节码文件(xiaowei.class)二进制代码,无法双击运行,需要java指令

Java程序运行必须依赖于Java运行环境(JRE),无法独立运行

JRE中的JVM(Java Virtual Machine,Java虚拟机)是运行.class二进制字节码文件的核心。

为什么不直接生成.exe??

因为JVM负责翻译实现:一次编译,到处运行。(和不同的系统打交道)    EXE4J把写好的程序进行打包成.exe文件

C/C++编写的程序跨平台运行很难(主要是因为微软有些封装的类库只支持微软的产品)

使用Eclipse开发java程序

IDE(集成开发环境):java IDE有很多:其中组好的一款是Eclipse免费且开源。

Eclipse只是一个辅助开发的工具而已,Eclipse的运行以及编译出的程序运行还是靠java。

Eclipse帮我们做了什么?

答:Eclipse的Src存储了源代码文件夹,bin存放 .class文件

Eclipse个性化设置:

“窗口”->“首选项”->“常规”(Java样式)

练习一:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

工作空间(workspace):相关的项目放在一个工作空间中,避免一个空间中项目太多,也不便于管理。

切换工作空间的方法:

退出重启,如果勾选了“将此值用作初始值并且询问”,则“文件”->“切换工作空间(switch workspace)”,从“工作空间”列表中选择(之前打开过的)或者浏览器选择工作空间根目录(包含 .metadata)

如何导入别人的项目到工作空间:

“包资源管理器(Package Explorer)”-> “导入(Import)”->“常规(General)”—>“现有项目到工作空间中(Existing Project Directory)”->“浏览”->“选择项目的根目录(包含.project文件)”或者WorkSpace,选择导入的项目即可。

注释

1.被注释的代码编译器忽略。

注释的作用:说明代码的作用;在程序中加入适当的注释;屏蔽无用的代码。

2.使用“//”注释一行代码,//之后的代码编译器会忽略

3./*  */注释多行代码

4.注释不能太多,也不可以一点也不进行注释。

5.多行注释(/* */)不能进行嵌套

 

 

 

 

 

 

 

 

 

 

 

注释的应用:

 

 

 

 

 

 

 

 

 

 

 

 

关键字:

1.Java定义了一些关键字(public、static、void、int),这些关键字是构成java基本语法用的,这些关键字没必要去背,一边学习,一边就掌握了。这些关键字在Eclipse环境下颜色为紫色

2.像C中的goto、const在java中没有意义,但是还是保留的,变量、类的名字也不能用这两个,他们也被称为“保留字”。

3.而main、String、System等这些都不是关键字。

标识符:

1.标示符是用来给类、方法、变量等命名用的‘

2.命名规则:

1)由字母(含大、小写)、中文(不推荐)、数字、下划线、$组成;

2)不能以数字开头;

3)不能是关键字

4.java语言是大小写敏感的:name和Name是两个不一样的变量。

5.驼峰命名法:每个单词的第一个字母大写

 

 

 

6.标示符要有意义:标示符的命名规范,不是强制规定,而是“潜规则”

类名:大写开头;

变量名、方法名:小写开头

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

变量:

1.数据一般都放在内存中。操作内存的时候要使用地址,通常指向内存的指针操作内存,变量是给这段内存取一个名字。我要告诉别人如何使用这块内存的话需要给这块区域取一个名字,比如:price,这个price就叫做“变量名”。

2.我们可以把price变量指向内存的值改为3、5、10,但是能不能改为“Tom”呢?显然是不可以的!!!

因此这块内存中能够放什么类型的数据是有限制的,这就是“变量类型”。

3.定义一个变量的格式为:

(变量类型) (变量名)=(初始值)

变量的作用域:

1.变量在{}范围之内定义不能重名,定义一个int b=3;

在定义一个int b=10;编译出错。

2.int b=3;b=5;则可以,是因为对b进行了重新赋值操作。

注:使用已有的变量b。  变量前没有类型,就是使用变量;

变量前有类型,就是定义变量;变量在作用域范围内是不能够重复定义的。

3.int b;然后直接println(b);是不行的,因为没有赋初始值。局部变量使用之前必须赋给初始值。

 

声明时赋值或使用前赋值都可以

方式一:int a=5;    方式二:int a;

 a=5;

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

数值类型:

1.整数类型:(基于32位操作系统)

byte(字节) 占用1字节(1*8 bit)

short(短整型) 占用2字节(2*8 bit)

int(整型)(默认)占用4字节(4*8 bit)

long(长整型) 占用8字节(8*8 bit)

2.小数类型:

float(单精度浮点数) 占用4字节(4*8 bit)

double(双精度浮点数)(默认)占用8字节(8*8 bit)

1字节(byte)等于8位(bit)  

1位(bit)只能表示0或1其中的一个状态(即表示二进制)

在Eclipse环境下:

整数常量默认为:int类型

小数常量默认为:double类型

注:选用数据类型的时候,在考虑到数据的可能范围之后,选择最小范围的类型,这样节省资源。

long>int>short>byte;

double>float;

整数类型转换(Type cast):

1. byte b=3;

int i=b;// 隐式类型转换

2.int m=9;

byte k=i;

//byte k=m;//不可以从int转换为byte类型

byte k=(byte)m;//显式类型转换

小数数据类型:

double d1=3.14D;//默认为double,所以一般不用写D

double d2=3.14;

double d3=3;

float f1=3.14;//不能从double转化为float。

小数默认为double,改为:

float f2=3.14F;

结论:

1.“大范围”=“小范围”:隐式转换

2.“小范围”=“大范围”:显式转换(强制类型转换)

3.都是整数参与乘除运算,结果还是整数;整数常量参与乘除计算一般加f声明为小数类型,避免精度损失。

eg:

System.out.println((1/3)*3);//0调用的in同类型

System.out.println((1.0/3)*3);//1.0调用double类型

System.out.println((1/3)*3F);//0.0

System.out.println((1/3F)*3);//1.0

 

 

 

 

 

 

 

 

 

 

 

 

常用数据类型:

1.boolean:true/false(只有两个可选值)

Int i=true;在java中是不成立的

2.String: “*****”

转义字符: “\n” 换行

“\\”输出“\”(斜杠)

“ \” ”输出“  ” ”(引号)

System.out.println("我的名字叫\"晓伟\"\\n");

如何显示“\n”字符呢? 可以输入“\\n”即可。

int:最大值:Integer.MAX_VALUE;

最小值:Integer.MIN_VALUE;

int转换为String:Integer.toString(i);

或者为:String.valueOf(i);

String转换为int:Integer.parseInt(“33”);

显式类型转换仅限整数、小数类型之内。

double转换为String:Double.toString(d);

String转换为double:Double.parseDouble(s);

char与String区别:单引号(char类型),一个字符

双引号(String类型),一堆字符组成,核心“\0”作为字符串结束标志。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

基础运算符:

1.运算符就是加(+)、减(-)、乘(*)、除(/)等符号

2.求余数运算符(%):5%4为1、5%5为0、22%7为1.

3.自增(++):是对一个变量进行自增运算()

4.自减(--):

System.out.println("abc"+5+6);//结果为“abc56”

“abc”是字符串,所以+5仍然为字符串,再+6仍是字符串

System.out.println(5+6+"abc");//结果为“11abc”

5+6是整型数据,结果为11,再与字符串拼接在一起

System.out.println("abc"+(5+6));//结果为“abc11”

 

 

总结:

Java中表达式从左向右扫描进行扫描运算,一旦遇上一个字符串,之后的运算就变成字符串了。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

赋值运算符:

1. int i=5;

应该理解为:“声明int类型变量i,并且把5赋值给i”。

2. int x=10; x=x+5;  因此: x++  等价于  x=x+1;

3.  x+=5; 等价于 x=x+5;

4. 类似的还有:-= *= %= 等

扩展知识:

当你看到“145”这个数时,你会不加思考立即就知道是“一百四十五”,但是在计算机编程人员看来,若是学习了二进制和十六进制的话,可能就不仅仅是一个数,而是作为一个数的代码。

平时我们使用最多的是十进制:

归纳起来可以总结如下规律:

①十进制使用数字 0-9

②位是10的幂:1、10、100、1000等。

③如果第三位是100,那么用两位可表示最大数为99.

推广到一般情况:

用n位数可以表示从0到(-1)的数。因此用三位数可以表示从0到即0到999.

 

 

 

数制转换问题

1.常用的数制

十进制   0-9

八进制   0-7

二进制  0-1

十六进制  0-F

2.十进制 转 各个进制

方法 : 除以基数取余反向

3. 2进制 8进制 16进制 转十进制

 

二进制

___________________________

2^3 2^2 2^1 2^0

1 0 0 1 X

=8+ 1 = 9

 

八进制

———————————

8^1 8^0

1 7

=1*8 + 7*1 = 15

十六进制类似。 

4.二进制转 十六进制 八进制

 

二转八

三位一组 结果并在一起

 

二转十六

四位一组 结果合并在一起

 

5. 整数在内存中的存储,采用二进制

符号位

原码 正数 0

负数 1

 

反码 正数 和原码相同

负数 在原码基础上,符号位不变,各个位取反

 

补码 正数 和源码相同

负数 在反码基础上,符号位不变,末位 +1

 

案例↓↓↓↓↓↓ 

————————————————————————————

原码 反码 补码

5 0000 0101 0000 0101 0000 0101

-5 1000 0101 1111 1010 1111 1011

 

6. 机器数 和 真值

“+”“-”号加绝对值来表示数值的大小,用这种形式表示的数值在计算机中称为真值

符号数码化后,二进制数的最高位“0”表示正号,“1”表示负号,用这种形式表示的数值在计算机中称为机器数

 

机器数中小数点隐含不占位

机器数 有符号 纯整数 点在最低位之后

纯小数 点在符号位之后,最高位之前。 

无符号 纯整数 点在最低位之后

纯小数 点在最高位之前

7.小数的存储 

计算机中小数以二进制(浮点数)形式存储。

首先是一个十进制小数形式,转化成二进制的计算案例。

————————————————————————————————

0.8125 转换成二进制

其实这种情况是赶巧了得到一个确切的值。

————————————————————————————————

但对于某些特殊情况是这样的

8.浮点数产生误差的原因

有两钟情况,会产生误差

1)以二进制保存浮点数,所以一些原本有限位的小数,按照上面方法运算以后,可能变成一个无限循环的小数。

————————————————————————————————

(十进制)0.9转成2进制是无限循环小数0.1110011001100110011...

————————————————————————————————

2)计算机保存浮点数的精度有限,例如float可以保留十进制最多7位(二进制23位)有效数字,double 可以保留十进制15~16位(二进制52位)有效数字。那有效数字以后的就被忽略了。

 

为什么用二进制?

二进制的幂可以与计算机所表达的事物清楚地对应起来。计算机实际根本不知道什么字母、数字、指令或程序。在它的内核只是一些电路,在某个给定的结点要么有很多电,要么几乎没有电。为了使逻辑保持清晰,工程师将其简化为“是”或“否”。“是”与“否”、或者是“真”与“假”都可以由1或0表示。按照约定,1代表“是”或“真”,但这仅仅是一种约定;这样表示“否”或“真”也同样容易。

计算机用0和1的模式给它们做的任何事情进行编码。机器指令被编码成一系列的1和0,并通过电路翻译。

 

 

 

 

 

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值