Java数据类型与运算符

Java笔记

百知教育学习 - 胡鑫喆 - Java数据类型与运算符

01_编码规范

  • 提高可读性
  • 书写格式
    • 层级之间必须缩进(teb:一个制表位)
    • 同级代码左侧对齐
    • 一行只写一句代码
  • 代码注释(作用:解释说明、屏蔽些许代码)( 注释量一般不能低于代码量)
    • 单行注释://+内容
    • 多行注释:/* +内容+ */ (多行注释不能嵌套多行注释,可以嵌套单行注释
    • Javadoc注释:/ ** + 内容 + */ (和普通多行注释一样,但能把注释抽取成API文档(应用编程接口),格式是HTML格式(即网页形式) ,但这种注释只能出现在 类,函数,属性等前边(即写在最后边无用)
 package a1;
/** Hello 类  这是我写的第一个Java类*/
  public class Hello{
/** 主函数Java的入口函数*/
            public static void main(String[] args){
            	System.out.println("hello world");
	 		}
/** dafasfasffsafaadssssssfafds */
}

在这里插入图片描述

  • 标识符的命名
    • 标识符:包,类,常量等的名字统称为标识符

    • 语法规定:

      • 可以有:字母(英文字母,汉字等),数字,_ , $(货币符号组成,但不能以数字开头
      • 不能与关键字(单词被编程语言赋予了特殊含义),保留字(goto,const),true,false,null重名
      • 区分大小写
      • 没有长度限制
    • 约定俗成:

      • 望文生义,见名知义(能理解)
      • 类名有一个或多个单词组成,每个单词首字母大写(pascal)
      • 函数名,变量名有一个或多个单词组成,首单词首字母小写,拼接词首字母大写(camel)
      • 包名全小写,连接只可以使用特殊字符 . ,并且不以 . 开头或结尾
      • 常量全大写,多个单词拥 _ 连接

02_变量的概念

  • 变量

    • 概念:计算机内存中的一块存储空间,时存储数据的基本单元
    • 声明(数据类型 变量名):int a; 赋值:a=1;
      • 先声明再赋值:数据类型 变量名(变量名 = 值)
      • 声明并赋值:数据类型 变量名=值
      • 多种同类型变量的声明与赋值:数据类型 变量1,变量2,变量3=值3,值4,值5;
  • 初级语言:汇编语言,程序员直接操作地址

  • 中级语言:C语言 程序员通过指针等操作地址

  • 高级语言:Java,C# 使用逻辑方式访问地址,不再使用物理方法访问地址

    • 不用考虑地址,虚拟机会自动分配
    • Java是个强类型语言:变量的类型和变量中所存储的数据类型必须一致
    • Javascript是个弱类型语言:只需用 var 便可定于全部变量

03_基本数据类型

  • Java数据类型
    • 基本数据类型(简单数据类型或原始数据类型)
      • 整数类型(负数二进制转换成十进制时:取反加一)
        字面值:int a=10;(10就叫做 int 类型的字面值)
        计算机默认的整数是 int 类型的字面值
        所以在定义 long l=3000000000000L后边的L不可缺少
        • byte类型
          • 字节:1个字节
          • 范围:-128~127
        • short类型
          • 字节:2字节
          • 范围:-32768~32767
        • int类型
          • 字节:4字节
          • 范围:-2147483648~2147483647
        • long类型
          • 字节:8字节
          • 范围:-9223372036854775808~9223372036854775807
      • 字符型类型:
        • char 类型
          • 字节:2字节
          • 取值范围:0~65535
          • 字符编码:Unicode字符集(万国码)
          • Unicode字符集支持 ASKII编码(美国标准信息交换码)
          • Unicode中每个字符都对应一个十进制整数,从而可以使用多种方式赋值
          • 字符赋值:char c1=’ A ’ (通过 ’ ’ 描述为字符赋值)等价于 char c1=65(通过十进制数65在字符集中对应的字符赋值)等价于 char c1= ’ \u0041 ’ (通过十六进制数41在字符集中所对应的的字符赋值)
          • 16进制 —>2B一个字节
          • ‘A’ 65
          • ‘a’ 97
          • ‘0’ 48
          • ’空格‘ 32
        • 转义字符:
          • \ + 字符
            • 打印 ’ :char c= ’ ’ ‘(错误) char c=’ ’ '(正确)
          • 常见转义字符:
            • \n :换行符
            • \t :缩进
            • \ :反斜线
            • ’ :单引号
            • ‘’ :双引号
      • 浮点型类型(2E3==2 * 10 ^ 3)
        • float类型(默认double类型)
          • 字节:4字节
          • 范围:
            • 正数:1.4E-45~3.4E38
            • 负数:-3.4E+38~1.4E-45
        • double类型
          • 字节:8字节
          • 范围:
            • 正数:4.9E-324~1.7E+308
            • 负数:1.7E+308~4.9E-324
      • 布尔
        • boolean类型(不能参加数学计算)
          • 字节:1字节(Java字节数不确定,虚拟机没有对布尔类型做出规定,虚拟机是个规范)
          • 取值:true/false (没有其他的字面值
          • 描述:仅可描述‘’真‘’或者‘’假‘’
    • 引用数据类型(对象数据类型)
      • string类型
        • 取值范围:任何 “ ” 之间的字面值
        • 字符编码:Unicode字符序列

04_类型转换与类型提升

  • 类型转换
    • 自动类型转换:
      • 两种类型互相兼容
      • 目标类型大于原类型:
    • 强制类型转换:(直接一刀把不要的东西切掉)
      • 两种类型相互兼容
      • 目标类型小于源类型
      • 强制类型转换规则:
        • 整数长度足够,数据完整
        • 整数长度不够,数据截断
        • 小数强转整数,数据截断(去掉小数点后边内容)
        • 字符整数互转,数据完整(按照ASKII码表转换)
        • boolean的取值为true/false,不可与其他类型转换
    • 类型提升
      • 自动类型提升:
        • byte a=1;byte b=2;byte c=a+b;(错误)a+b自动提升为 int 类型,所以错误
          所以需写成:byte c=(byte) (a+b)
        • 进行算术运算时:
          • 两个操作数有一个为 double ,计算结果提升为 double
          • 如果操作数中没有 double,有一个为 float,计算结果提升为 float
          • 如果操作数中没有 float,有一个为 long,计算结果提升为 long
          • 如果操作数中没有 long,有一个为 int,计算结果提升为 int
          • 如果操作数中没有 int,均为 short 或 byte,计算结果仍然提升为 int
          • 特殊 :任何类型与 string 相加(+)时,实为拼接,其结果自动提升为 string

05_基本运算符

  • 算数运算符:两个操作数进行计算

    • 加法 + :求和
    • 减法 - :求差
    • 乘法 * :求积
    • 除法 / :求商(4/5=0; 4/5.0=0.8)
    • 取模 %:求余
  • 算数运算符:一元运算符(只有一个操作数)

    • a+=b不会发生类型转换,但a=a+b,会发生类型转换
    • 递增 ++ :变量值+1
    • 递减 – :变量值 -1

    a++和 ++a的区别

    • a的值全部 +1
     package a1;
  	 public class text{
            public static void main(String[] args){
			int a=10,b=10;
			a++;++b;
            System.out.println(a);
			System.out.println(b);
	 		}
	}

在这里插入图片描述

  • a++式子的值为a + 1 之前的值
    ++a式子的值为a + 1 之后的值
  package a1;
  public class text{
            public static void main(String[] args){
				int a=10,b=10;
            	//System.out.println(a);
				System.out.println(a++);
				//System.out.println(b);
				System.out.println(++b);
	 		}
}

在这里插入图片描述

  • 关系运算符
    • 大于 >
    • 小于 <
    • 大于等于 >=
    • 小于等于 <=
    • 等于 ==
    • 不等于 !=
  • 逻辑运算符:两个Boolean类型的操作数或者表达式进行逻辑比较
    • && 与(并且) 两个操作数,同时为真,结果为真

    • || 或(或者) 两个操作数,有一个为真,结果为真

    • ! 非(取反) 意为“不是”,真即是假,假即是真

  • 三元运算符
    • ? : 布尔表达式?结果1:结果2 当布尔表达式为真,返回结果1,反之返回结果2

06_位运算符

  • && 和 || 统称为短路运算符(判断第一个即可出结果时,后边那个就不在判断)&和 | 为非短路运算符,全部判断(即挨个判断)
    • & 按位求与
      • int a=26,b=20;a&b=16 (按照2进制计算 a=11010,b=10100;所以a&b=10000,转换为十进制为16 (只有在全为1的时候才为1))
    • | 按位求或
      • int a=26,b=20;a | b=30 (按照2进制计算 a=11010,b=10100;所以a | b=11110,转换为十进制为30 (只要在有为1的时候就为1))
    • ^ 异或
      • int a=26,b=20;a ^ b=14 (按照2进制计算 a=11010,b=10100;所以a ^ b=01110,转换为十进制为14(数相同时为0,不同时为1))
    • ~ 按位求反
      • int a=26;转换成2进制为a=11010,补全成一个字节,所以a=00011010;按位取反,所以变成了 11100101,1作为符号位,所以a= -1100101,转换为10进制为 -27**
    • a=a>>1 右移运算符
      • int a=26;转换成2进制为a=11010,补全成一个字节,所以a=00011010;整体向右移动一位 ,最后一位去掉,添一个符号位(该符号位与原来相同);所以a=13(二进制右移一位 等价于 十进制数除以2)
    • a=a<<1 左移运算符
      • int a=26;转换成2进制为a=11010,补全成一个字节,所以a=00011010;整体向左移动一位 ,最后一位后边添0,所以a=52(二进制左移一位 等价于 十进制数乘以2)
    • a=a>>>1
      • 右移最高位只补0,不管原来为什么(原来为正数:不变;原来为负数:变为正数)
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在风能领域,准确预测风速对于风电场的运行与管理至关重要。Matlab作为一个强大的数学计算和数据分析平台,被广泛应用于风速预测模型的构建。本文将深入探讨基于四种风速——随机风、基本风、阵风和渐风的组合风速预测技术。 我们来理解这四种风速类型: 1. **随机风**:随机风是指风速呈现出随机性的化,通常由大气湍流引起。在建模中,通常通过统计方法如高斯分布或Weibull分布来模拟这种不确定性。 2. **基本风**:基本风速是指在无特定扰动条件下的平均风速,它是长期观测结果的平均值,通常用于结构设计和风能评估。 3. **阵风**:阵风是短时间内风速显著增强的现象,对建筑物和风力发电机造成的主要威胁之一。阵风的预测涉及到风的脉动特性分析。 4. **渐风**:渐风是指风速随时间和空间逐渐化的过程,常见于风向转或地形影响下的风场化。 在Matlab中,利用这四种风速类型进行组合预测,可以提高预测的准确性。预测模型可能包括以下几个步骤: 1. **数据收集与预处理**:收集历史风速数据,包括随机风、基本风、阵风和渐风的数据,进行异常值检测、缺失值填充以及数据标准化。 2. **特征工程**:提取风速化的相关特征,如平均值、标准差、极值、频率分布等,这些特征可能对预测有重要影响。 3. **模型选择**:可以选择多种预测模型,如时间序列分析(ARIMA、状态空间模型等)、机器学习算法(线性回归、决策树、支持向量机、神经网络等)或深度学习模型(LSTM、GRU等)。 4. **模型训练**:利用历史数据训练选定的模型,调整模型参数以优化性能,例如通过交叉验证来避免过拟合。 5. **模型验证与评估**:使用独立的测试集验证模型预测效果,常见的评估指标有均方误差(MSE)、平均绝对误差(MAE)和决定系数(R²)。 6. **组合预测**:结合四种风速的不同模型预测结果,可以采用加权平均、集成学习(如bagging、boosting)等方式,以提升整体预测精度。 7. **实时更新与动态调整**:实际应用中,模型需要不断接收新的风速数据并进行在线更新,以适应风场环境的化。 通过以上步骤,可以构建一个综合考虑各种风速特性的预测系统,这对于风电场的功率输出预测、风电设备的维护计划以及电网调度都具有重要价值。然而,需要注意的是,每个风场的地理环境、气候条件和设备状况都有所不同,因此模型的建立应根据实际情况进行定制和优
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值