Tiger 's esoterica read notebook

本文详细介绍了Java中的自动装箱与拆箱机制,包括它们如何在对象与基本类型间进行转换、条件运算符与拆箱的关系、Tiger版本方法解析规则的变化、vararg的使用方式及注意事项。
1

autoboxing 和autounboxing是指Java的对象和primitive间的转换,Java的primitive是指int,short,char等,基本不是对象的类型,而Integer,Short,Character是primitive的wrapper,是封装类.
这里有一个要注意的是NUll,因为NULL对一个对象来说是合法的,但对primitive来说不是,所以在程序中要注意不要装wrapper的NULL直接给primitive,它会Throw NullPointerExcpetion.

2 == & equals


// 如果i值介于 -127和127之间,则==是相等的,否则是不等的,equals方法是一直相等的.
//-127至127之间的值是不可变的wrapper

Integer i1 = 561;
Integer i2 = 561;
if(i1 == i2)
System.out.println("== True");
else
System.out.println("== false");

if(i1.equals(i2))
System.out.println("Equals true");
else
System.out.println("Equals false");

i1 = 123;
i2 = 123;

if(i1 == i2)
System.out.println("== True");
else
System.out.println("== false");

if(i1.equals(i2))
System.out.println("Equals true");
else
System.out.println("Equals false");
}


3 Conditional 与 unboxing

Conditional 是三元运算符: [conditional expression]?[expression1]:[expression2],true时,执行前者,否则执行后者.
这里两个结果条件表达式只要有一个被unbox即可以正常运行.


int a = 3;
double b = 2.3;
double re = ((a > b)? a :b);
System.out.println(re);

返回结果是3.0,而a,b的类型是不一样的,在以前的1.4版本中是不允许的.
因为int 和double有一个交集 double.
unboxing还为Switch引入一些新的值,Tiger之前只接收int,short,byte,character,现在有了unboxing,还可以引入enum,以及Integer,Short,Char,Byte

4 Tiger中method的解析步骤(三步):

A 编译器会试着不用任何的boxing/unboxing,或启用vararg来定位正确的method,这会找到根据Tiger以前的规则调用的任何方法
B 如果第一步失败,则会尝试解析method,但这次会允许boxing/unboxing的转换,具有vararg的method不在这次中解析.
C 如果第二步也失败,则会最后一次尝试允许boxing/unboxing,并且考虑vararg的method
这样的规则可以确保维持与Tiger之前的环境一致性.
例如:

public void done(double n);
public void done(Integer n);

假设你现在调用done 方法,int foo = 100;done(foo);
根据上述三个规则,首先int会被扩展成double并调用done(double n)方法.(这也是Tiger之前的规则),而不是首先调用boxing/unboxing来破坏一致性.不然调用时调用的方法不准确会导致不可预知的问题.

5 vararg == variable argument

vararg 允许你指定可以采用多个同类型参数的method,而不需要事先确定(于编译或运行时)参数的数目.它的表现形式是...,这三个小点点是vararg的关键.下面是使用vararg来允许未知参数的String零件的Guitar的constructor版本.

public Guitar(String builder,String model,String... features);

此处String...参数指出可提供任意数量的String参数.
当你指定了一个可变长度的参数list的时候,Java编译器基本上把它读作 创建一个<argument type>类型的array.你输入的是String... features,而编译器读到却是String[] features,这意味着iterate参数的list会很简单,你对vararg可以像对待array的操作那样.不过它还是有一些限制.这三个小点点只能在一个method中使用且出现在method中的最后一个位置,出现多个就是错误的,不合法的.
Java编辑器将String...视为array,String...的参数是从0到n个

public static int max(int... is){
if(is.length == 0){
throw new IllegalArgumentException("No Values Supplied");
}
int max = Integer.MIN_VALUE;
System.out.println(max);
for(int i : is){
if(i >max)
max = i;
}
System.out.println(max);
return max;
}
public static void main(String[] args) {

max(111,3,5,6,444,5);

}


避免自动化的Array转换

如上例中我们可以把String...换为更为广泛通用的Object...类型,你可以接收更多的参数.大部分的都会由Tiger来自动转换.不过有个特例

//Java.io.PrintStream的printf(String format,Object... objs);
Object[] objs = new String[]{"JavaEye","is","very","good","network station"};
System.out.printf("%s",objs);

上面这一切看起来很正常,但是运行起来以后会打印出Java,而不是一个Object对象.

这里是因为编译器将objs array当作一个对象来看,把array分离成多个对象,第一个参数变成了 String类型的"Java",当把它传给printf的%s时它就会把Java打印出来.

由于你想得到Object对象,所以你要告诉编译器你想要整个对象的array,将它当作一个对象来用.而不是一组参数来用.
所以我们用new Object[]{objs}或(Object)objs来转换一下,此时打印出来的就会是对象的形式.
需求响应动态冰蓄冷系统与需求响应策略的优化研究(Matlab代码实现)内容概要:本文围绕“需求响应动态冰蓄冷系统与需求响应策略的优化研究”展开,基于Matlab代码实现,重点探讨了冰蓄冷系统在电力需求响应背景下的动态建模与优化调度策略。研究结合实际电力负荷与电价信号,构建系统能耗模型,利用优化算法对冰蓄冷系统的运行策略进行求解,旨在降低用电成本、平衡电网负荷,并提升能源利用效率。文中还提及该研究为博士论文复现,涉及系统建模、优化算法应用与仿真验证等关键技术环节,配套提供了完整的Matlab代码资源。; 适合人群:具备一定电力系统、能源管理或优化算法基础,从事科研或工程应用的研究生、高校教师及企业研发人员,尤其适合开展需求响应、综合能源系统优化等相关课题研究的人员。; 使用场景及目标:①复现博士论文中的冰蓄冷系统需求响应优化模型;②学习Matlab在能源系统建模与优化中的具体实现方法;③掌握需求响应策略的设计思路与仿真验证流程,服务于科研项目、论文写作或实际工程方案设计。; 阅读建议:建议结合提供的Matlab代码逐模块分析,重点关注系统建模逻辑与优化算法的实现细节,按文档目录顺序系统学习,并尝试调整参数进行仿真对比,以深入理解不同需求响应策略的效果差异。
综合能源系统零碳优化调度研究(Matlab代码实现)内容概要:本文围绕“综合能源系统零碳优化调度研究”,提供了基于Matlab代码实现的完整解决方案,重点探讨了在高比例可再生能源接入背景下,如何通过优化调度实现零碳排放目标。文中涉及多种先进优化算法(如改进遗传算法、粒子群优化、ADMM等)在综合能源系统中的应用,涵盖风光场景生成、储能配置、需求响应、微电网协同调度等多个关键技术环节,并结合具体案例(如压缩空气储能、光热电站、P2G技术等)进行建模与仿真分析,展示了从问题建模、算法设计到结果验证的全流程实现过程。; 适合人群:具备一定电力系统、能源系统或优化理论基础,熟悉Matlab/Simulink编程,从事新能源、智能电网、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①开展综合能源系统低碳/零碳调度的科研建模与算法开发;②复现高水平期刊(如SCI/EI)论文中的优化模型与仿真结果;③学习如何将智能优化算法(如遗传算法、灰狼优化、ADMM等)应用于实际能源系统调度问题;④掌握Matlab在能源系统仿真与优化中的典型应用方法。; 阅读建议:建议结合文中提供的Matlab代码与网盘资源,边学习理论模型边动手调试程序,重点关注不同优化算法在调度模型中的实现细节与参数设置,同时可扩展应用于自身研究课题中,提升科研效率与模型精度。
本系统采用Java作为核心编程语言,基于Spring Boot框架构建,运行环境配置为JDK 1.8与Tomcat 7应用服务器。数据存储选用MySQL 5.7数据库,并借助Navicat 11进行数据库管理操作。开发工具可在Eclipse、MyEclipse或IntelliJ IDEA中任选,项目依赖管理通过Maven 3.3.9完成。 该简历管理平台在架构设计阶段,着重强化了代码结构的清晰度与可维护性,同时兼顾系统的实用价值与扩展灵活性。整体设计遵循通用化原则,确保后期维护简便,用户界面力求直观简洁。 系统通过标签分类机制实现功能模块化管理,主要包含以下三个角色维度: 管理员端涵盖综合管理功能:包括控制面板、用户账户管理、简历模板维护、模板分类设置、招聘会组织、报名信息处理、上传简历审核、求职社区管理、收藏夹维护及系统参数配置。 普通用户端提供个性化功能:涉及个人中心、招聘活动报名、简历文件上传及个人收藏记录管理。 公共访问端集成信息展示与交互模块:主要展示首页内容、简历模板库、招聘会资讯、简历上传入口、求职讨论区、系统公告栏,并提供个人中心入口、后台管理通道与在线客户服务。 该系统旨在通过结构化功能设计,提升简历相关数据的管理效率与组织化程度。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
考虑实时市场联动的电力零售商鲁棒定价策略(Matlab代码实现)内容概要:本文提出了一种考虑实时市场联动的电力零售商鲁棒定价策略,并提供了基于Matlab的代码实现。该策略充分考虑电力市场中电价波动、可再生能源出力不确定性以及用户需求响应等因素,构建鲁棒优化模型以提升零售商在复杂市场环境下的定价能力与经济效益。通过引入场景生成与削减技术处理不确定性,结合改进算法进行求解,实现了在保证运营稳健性的同时优化定价决策的目标。研究还涵盖了风光场景生成、负荷聚类分析等关键技术支撑模块。; 适合人群:具备一定电力系统背景和Matlab编程基础,从事电力市场、能源优化等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①应用于电力零售商业务中制定更具竞争力和抗风险能力的动态定价策略;②为电力市场仿真、需求响应建模、新能源接入影响分析等研究提供方法支持与代码参考;③促进对鲁棒优化、场景分析等高级数学工具在实际能源系统中应用的理解与实践。; 阅读建议:建议读者结合文中提供的Matlab代码逐段理解算法实现细节,重点关注不确定性建模与鲁棒优化求解部分,可借助YALMIP等工具包进行模型复现与扩展实验,同时推荐参考文档中列出的相关案例以深化对整体技术体系的认知。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值