J2SE基础篇——数据类型、执行过程、进制、编码

本文详细介绍了Java中的基本数据类型,包括它们的大小、范围及默认值,并解释了String的特殊性。此外还讨论了基本数据类型之间的转换规则、运算符、语句等核心概念。

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

原文链接:http://blog.youkuaiyun.com/bjyfb/article/details/6762191

一、基本数据类型

按照声明位置划分

   局部变量:方法或语句块定义的变量;

   成员变量:方法外部、类的内部定义的变量;

按照数据类型划分

         

   上面这种图还不足以说明情况,请看下表,注意色彩和文字粗细的不同,有些人经常记不住那些类型占用几个字节,看完下面归纳的图,我想应该就差不多了。

基本数据类型

类型

大小(bit)

范围

默认值

byte(字节)

8

-128至127

0

char(字符型)

16

‘\u0000至 u\ffff ’

‘\u0000

shot(短整型)

16

-32768至32768

0

int(整型)

32

-2147483648至2147483648

0

float(浮点型)

32

-3.40292347E+38至3.40292347E+38

0.0f

long(长整型)

64

-9233372036854477808至9233372036854477808

0

double(双精度)

64

-1.79769313486231570E+308至1.79769313486231570E+308

0.0d

boolean(布尔型)

1

true/false

False

比较有意思的就是String,首先String不属于8种基本数据类型,String是一个对象,由于String对象特别常用,所以在对String对象进行初始化时,Java提供了一种简化的特殊语法,格式如:String s = “abc”; s = “Java语言”;其实按照面向对象的标准语法,其格式应该为:Strings = new String(“abc”); s = new String(“Java语言”);

只是按照面向对象的标准语法,在内存使用上存在比较大的浪费。例如Strings = new String(“abc”);实际上创建了两个String对象,一个是”abc”对象,存储在常量空间中,一个是使用new关键字为对象s申请的空间。其它的构造方法的参数,可以参看String类的API文档。

二、基本数据之间的转换

boolean类型不可以转换为其他数据类型

整形、字符型,浮点型的数据在混合运算中相互转换,遵守以下原则:

    1) 容量小的类型自动转换为容量大的数据类型;

    2) 容量大的数据类型转换为容量小的数据类型,要加上强制转换符,有可能造成精度降低或溢出;

    3) 有多种类型的数据混合运算时,系统首先自动的将所有数据类型最大的那一种,然后再计算;

    4) 实数常量默认为double;

    5) 整数常量默认为int;


三、运算符

运算符和C#中几乎一致,分为算术运算符、关系运算符、逻辑运算符、位运算符、赋值运算符、扩展赋值运算符、字符串连接运算符;

比较特殊的是三目运算符:三目运算符的语法格式为:x?y:z;其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值。

四、语句

if语句

    If······;If···else···;If···elseif···;If···elseif···elseif···;If···elseif···elseif···else··;

for循环语句

    for(表达式1;表达式2;表达式3){语句;···;}

While& do while语句

  while语句和do while最大的不同点是:dowhile语句无论是否符合执行的条件至少执行一次。

Break& continue语句

  break语句用于终止某个语句块的执行,用在循环语句体中,可以强行退出循环;

 continue语句用在循环体中,用于终止某此循环过程,跳过循环体continue语句下面未执行的循环,开始下一次循环过程。

五、程序执行过程

 

   如上图所示。

六、进制表示方法

由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。   
  但,二进制数太长了。比如int   类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:   
  0000   0000   0000   0000   0110   0100   
  面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++,以及java中   没有提供在代码直接写二进制数的方法。  
  八进制数的表达方法   
  如何表达一个八进制数呢?如果这个数是   876,我们可以断定它不是八进制数,因为八进制数中不可能出7以上的阿拉伯数字。但如果这个数是123、是567,或12345670,那么它是八进制数还是10进制数,都有可能。   
  所以规定,一个数如果要指明它采用八进制,必须在它前面加上一个0,如:123是十进制,但0123则表示采用八进制。这就是八进制数的表达方法。   
  现在,对于同样一个数,比如是100,我们在代码中可以用平常的10进制表达,例如在变量初始化时:   
  int   a   =   100;   
  我们也可以这样写:   
  int   a   =   0144;   //0144是八进制的100;一个10进制数如何转成8进制,我们后面会学到。   
  千万记住,用八进制表达时,你不能少了最前的那个0。否则计算机会通通当成10进制。不过,有一个地方使用八进制数时,却不能使用加0,那就是我们前面学的用于表达字符的“转义符”表达法。   
  

十六进制数的表达方法   
  如果不使用特殊的书写形式,16进制数也会和10进制相混。随便一个数:9876,就看不出它是16进制或10进制。   
  16进制数必须以   0x开头。比如   0x1表示一个16进制数。而1则表示一个十进制。另外如:0xff,0xFF,0X102A,等等。其中的x也也不区分大小写。(注意:0x中的0是数字0,而不是字母O)   
  以下是一些用法示例:   
  int   a   =   0x100F;   
  int   b   =   0x70   +   a;   
  至此,我们学完了所有进制:10进制,8进制,16进制数的表达方式。最后一点很重要,10进制数有正负之分,比如12表示正12,而-12表示负12,;但8进制和16进制只能用达无符号的正整数,如果你在代码中里:-078,或者写:-0xF2,编译器并不把它当成一个负数。

七、字符编码

http://www.ruanyifeng.com/blog/2007/10/ascii_unicode_and_utf-8.html

http://www.regexlab.com/zh/encoding.htm#main

http://zhidao.baidu.com/question/74014835.html
内容概要:本文介绍了基于Python实现的SSA-GRU(麻雀搜索算法优化门控循环单元)时间序列预测项目。项目旨在通过结合SSA的全局搜索能力和GRU的时序信息处理能力,提升时间序列预测的精度和效率。文中详细描述了项目的背景、目标、挑战及解决方案,涵盖了从数据预处理到模型训练、优化及评估的全流程。SSA用于优化GRU的超参数,如隐藏层单元数、学习率等,以解决传统方法难以捕捉复杂非线性关系的问题。项目还提供了具体的代码示例,包括GRU模型的定义、训练和验证过程,以及SSA的种群初始化、迭代更新策略和适应度评估函数。; 适合人群:具备一定编程基础,特别是对时间序列预测和深度学习有一定了解的研究人员和技术开发者。; 使用场景及目标:①提高时间序列预测的精度和效率,适用于金融市场分析、气象预报、工业设备故障诊断等领域;②解决传统方法难以捕捉复杂非线性关系的问题;③通过自动化参数优化,减少人工干预,提升模型开发效率;④增强模型在不同数据集和未知环境中的泛化能力。; 阅读建议:由于项目涉及深度学习和智能优化算法的结合,建议读者在阅读过程中结合代码示例进行实践,理解SSA和GRU的工作原理及其在时间序列预测中的具体应用。同时,关注数据预处理、模型训练和优化的每个步骤,以确保对整个流程有全面的理解。
内容概要:本文详细介绍了如何使用PyQt5创建一个功能全面的桌面备忘录应用程序,涵盖从环境准备、数据库设计、界面设计到主程序结构及高级功能实现的全过程。首先,介绍了所需安装的Python库,包括PyQt5、sqlite3等。接着,详细描述了SQLite数据库的设计,创建任务表和类别表,并插入默认类别。然后,使用Qt Designer设计UI界面,包括主窗口、任务列表、工具栏、过滤器和日历控件等。主程序结构部分,展示了如何初始化UI、加载数据数据、显示任务列表以及连接信号与槽。任务管理功能方面,实现了添加、编辑、删除、标记完成等操作。高级功能包括类别管理、数据导入导出、优先级视觉标识、到期日提醒、状态管理和智能筛选等。最后,提供了应用启动与主函数的代码,并展望了扩展方向,如多用户支持、云同步、提醒通知等。 适合人群:零基础或初学者,对Python和桌面应用程序开发感兴趣的开发者。 使用场景及目标:①学习PyQt5的基本使用方法,包括界面设计、信号与槽机制;②掌握SQLite数据库的基本操作,如创建表、插入数据、查询等;③实现一个完整的桌面应用程序,具备增删改查和数据持久化功能;④了解如何为应用程序添加高级特性,如类别管理、数据导入导出、到期日提醒等。 阅读建议:此资源不仅适用于零基础的学习者,也适合有一定编程经验的开发者深入理解PyQt5的应用开发。建议读者跟随教程逐步实践,结合实际操作来理解和掌握每个步骤,同时可以尝试实现扩展功能,进一步提升自己的开发技能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值