基础语法篇

简介: 基础语法篇

基础语法


数据类型

注意点:


1.char在java中可以与int混用,可以自动转换;byte、short、char在计算的时候一律自动转换为int进行计算;char只能自动转成int,和byte和short之间不存在自动转型


2.低等级的数据类型可以向高等级的数据类型自动转换,但高等级的转低等级的需要强转,如果强行用低等级的接收高等级的,会报错。


3.如果用的是二维运算符来运算,就不会出现类型不符合而报错,原因是java会自动转换类型(此时用什么接收,转换的就是哪个类型)

例如:

byte a = 10;
double b = 200.0;
a +=  b;

此时如果用a来接收最后的结果,那么就会自动转成byte类型,然后会由于数值溢出得到一个负数。如果用b接收最后结果,那就会转成double类型,不会存在异常


4.浮点数会存在精度问题


5.boolean不参与类型转换,包括强制


6.表达式中的类型提升会自动将类型提升到最大的那个


7.一旦表达式中存在任何一个变量,整个表达式都不能当做常量,编译器无法自动处理


8.仅仅声明的变量是无法使用的,编译器不会开辟内存空间


标识符

区分大小写、不能以数字开头、不能是关键字和保留字


可以用$和—,也可以用中文,Unicode 字符集中符号大于0xC0的所有符号都可以用


运算符

算术运算符

1.整型除以整型得到的结果会自动舍去小数部分


2.自增自减只能用于变量,如果在前面的话就表示先运算再赋值,如果在后面就是先赋值再运算


赋值运算符

1.二元的赋值运算符表示先进行计算之后再赋值


2.左移就是乘2,右移就是除2


3.二元运算符会自带强转,会出现精度丢失


比较运算符

返回一个布尔类型,注意与赋值运算符进行区分


逻辑运算符

短路:如果第一个结果就能得出表达式的值,那么就不需要继续向下判断了


实际开发中,直接使用短路的 &&、||

三目运算符

a > b ? a : b

通俗的理解:a大于b吗?是则返回a,不是则返回b

Scanner

在使用Scanner的时候,如果出现next()系列的方法和nextLine()混用,会出现因为判断的标志不同而导致扫描出现问题

Scanner sc = new Scanner(System.in);
sc.nextInt();
sc.nextLine();

先使用next()Int然后使用next()Line,这样就会造成后面的nextLine接收到回车后立马结束扫描;


nextLine()会把nextInt(),next(),nextDouble(),nextFloat()的结束换行符作为字符串读入,进而不需要从键盘输入字符串nextLine便已经转向了下一条语句执行


究其原因:next()系列的方法只会读取数值,不会读取空格、换行符等符号,而nextline会读取前面留下的数据,这样就会将换行符传给后面的nextline导致运行结束


如果两个nextline连用的话,line会将换行也一起读取,就不会出现错乱了


不要将nextLine和next系列方法混用


转义字符

常用的:\b退格,\n换行,\r换行,\t就是TAB,


流程控制

break:中断


continue:继续(中断一次循环)


return:直接返回,结束方法


如果有嵌套,可以使用label


如果是在方法中使用if…else,那么一定要注意是否给出了所有情况下的返回值


方法重载

即同名方法;


一个类中的多个方法具有相同的方法名,但形参列表不同,这就是方法重载


形参列表(方法签名)不同的定义:


形参数量不同/形参的数据类型不同/形参数据类型的顺序不同


一定要注意:和形参的名字无关,和返回值类型、修饰符无关,只看形参列表是否不同


方法的传参

Java中所有的方法都是值传递,如果传入的是基本数据类型,就会复制一份该变量的值在方法中,方法销毁,该复制值也会随之销毁;如果传入的是引用数据类型,会拷贝该引用数据类型指向的地址值,但不能修改引用的指向的地址值,可以修改该引用指向的对象,即改变对象的状态


数组

数组是随机访问,根据数组的首地址和下标,使用寻址公式可以计算出对应的内存地址


数组的内存空间是连续的


动态初始化:初始化时不给出具体值,数组中的元素都具有默认值


静态初始化:初始化时给出具体值


注意:不可以动静结合


数组一旦初始化完毕,长度就不可以更改


常见异常

1.下标越界


2.空指针


当使用指向null的引用进行一系列操作时,就会出现空指针


长度为0和null的数组

数组未初始化是无法使用的,但长度为0和null的数组可以认为是经过了初始化的


可变参数

只能出现在形参列表的最后,本质上还是一个参数的数组,


格式: 数据类型… 变量名


JVM内存

栈:存放方法以及其中的局部变量


每当执行一个方法,都会将该方法的栈帧压入栈中,方法执行完毕后,栈帧销毁,其中的局部变量也随之失效


堆:new出来的对象都存放在堆上,对应有地址值,用来给外界访问,引用数据类型引用的就是这个地址值


方法区:


本地方法栈:存放的是本地的方法,即操作系统提供的方法


程序计数器:记录当前执行的行数


相关文章
|
移动开发 自然语言处理 小程序
分享88个企业政府PHP源码,总有一款适合你
分享88个企业政府PHP源码,总有一款适合你
461 2
|
网络协议 物联网 网络性能优化
物联网网络协议-MQTT协议的使用
物联网网络协议-MQTT协议的使用
553 2
|
8月前
|
CDN
阿里云CDN价格表:不知道CDN怎么收费?新手秒懂百科
阿里云CDN收费包括基础费用和增值费用。基础费用提供三种计费方式:按流量、带宽峰值及月结95带宽峰值, 默认按流量计费,价格因地区和用量而异;用户也可购买流量资源包抵扣费用。增值服务如HTTPS、QUIC、WAF及实时日志等按需收费,不使用则不收费。阿小云整理了2025年最新标准,详情参见阿里云官网。
|
11月前
|
供应链 算法 安全
探索区块链技术中的隐私保护机制
探索区块链技术中的隐私保护机制
448 27
|
网络协议 Docker 容器
docker启动报错 (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --
docker启动报错 (iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --
611 0
|
10月前
|
机器学习/深度学习 自然语言处理 算法
《深度Q网络遇上注意力机制:解锁强化学习新高度》
深度Q网络(DQN)结合深度学习与Q学习,在复杂决策问题如Atari游戏上超越人类水平。然而,传统DQN在处理复杂环境时存在局限,难以聚焦关键信息。引入注意力机制后,DQN能更好地提取状态特征、优化动作价值评估,并解决时间序列依赖问题。实验表明,改进后的DQN在游戏和机器人操作任务中表现出色,提升了决策效率和准确性。尽管面临计算复杂度等挑战,未来有望通过硬件提升和算法优化进一步推动其应用与发展。
213 15
|
10月前
|
Kubernetes 持续交付 开发工具
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
阿里云协同万兴科技落地ACK One GitOps方案,全球多机房应用自动化发布,效率提升50%
384 2
|
10月前
|
机器学习/深度学习 弹性计算 人工智能
在阿里云ECS上一键部署DeepSeek-R1
Open WebUI 和 Ollama 的联合,通过集成 DeepSeek-R1 的强大功能,赋予每一位用户使用尖端 AI 技术的能力,使得复杂的 AI 技术不再是遥不可及的梦想。无论是研究人员、开发者,还是企业用户,您都能从这一创新中获得新的灵感和增长点。本文介绍通过计算巢一键部署和使用DeepSeek-R1。
在阿里云ECS上一键部署DeepSeek-R1
|
网络协议 Linux
linux学习之套接字通信
Linux中的套接字通信是网络编程的核心,允许多个进程通过网络交换数据。套接字提供跨网络通信能力,涵盖本地进程间通信及远程通信。主要基于TCP和UDP两种模型:TCP面向连接且可靠,适用于文件传输等高可靠性需求;UDP无连接且速度快,适合实时音视频通信等低延迟场景。通过创建、绑定、监听及读写操作,可以在Linux环境下轻松实现这两种通信模型。
315 1
ly~
|
缓存 监控 编译器
如何优化 SDL 图形库在不同系统中的性能
SDL(Simple DirectMedia Layer)是一个跨平台的多媒体开发库,用于优化不同系统中的图形库性能。在银河麒麟系统中,通过SDL渲染模式提升视频监控客户端性能,支持更多播放路数。优化方法包括:1) 图像加载时使用SDL_ConvertSurface转换图像格式,避免内存中存在多份拷贝;2) 在VSCode下配置SDL时,合理设置编译器选项和项目架构,减少API调用带来的性能开销;3) 使用SDL库在景嘉微7200显卡上优化渲染性能,提高播放路数。综合考虑图像加载优化、系统特性利用及硬件兼容性,以实现最佳性能。
ly~
781 6

热门文章

最新文章