java基础语法难点(day01-day05)

2024-05-20 19:58

本文主要是介绍java基础语法难点(day01-day05),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

学学高级语言,面向对象的语言,和c语言比起来,前面的语法还是有一定的相似度的,所以,在学习面向对象之前,简单的把java的一些常用的基础语法过一遍,相当于复习了。

有个隐形的类型转换,但是就是小的转到大的,可以。但是如果是int数据类型转到小一点的short去,不强制类型转换就会溢出报错。

注意+=这个扩展运算符是可以接受类型转换的,所以不会报错。

三元运算符中的三个数比较最大值:

int a = 10;
int b = 20;
int c = 30;
int max = (a>b)?a:b;
max = (max>c)?max:c;//通过两次使用三元运算符来判断最大值。 

和c语言一样,要注意自增和自减,a++是赋值不会+,在后面才会,++a是赋值的时候就已经加了。

还有&, &&,|,||。逻辑与和短路与,逻辑或和短路或他们的优缺点要知道。

和c语言不同的是要从键盘上输入的时候需要写

import java.util.*;//主义是小写的import
Scanner scanner = new Scanner(System.in);
int name = scanner.nextInt();

流程语句也是类似,不管是什么问题,水仙花,还是珠穆朗玛峰折纸。算法其实不是最重要的,这里的语法才是,如果写嵌套,具体循环的条件哪三个要清楚,不能越界。


最重要的还是函数和数组,因为我们不可能在一个主函数里面完成任何需求,所以一旦需要,我们要通过封装一段程序,下次我们需要的时候就可以调用。

函数的使用注意事项:
1.函数中只能调用函数,不能定义函数,没有定义函数之前,不能调用函数。
2.输出语句只能对有具体返回结果的函数的进行打印。
3.返回值类型是void的函数,是不可以被输出语句打印的。
4.函数需要实现功能,那么函数只实现所需功能即可,不要实现不需要的功能。

对于数组,需要注意的是栈和堆中内存的分布情况。

下面主要是要举排序的例子:
1.直接排序(选择排序)
思路:使用索引值为0的元素与其他未知的元素挨个比较一次,如果有发现比0号索引值元素大的,那么交换位置。大的在前,小的在后。

/*选择排序。以一个角标的元素和其他元素进行比较。在内循环第一次结束,最值出现的头角标位置上。*/public static void selectSort(int[] arr){for(int x=0; x<arr.length-1; x++){for(int y=x+1; y<arr.length; y++)//为什么y的初始化值是 x+1?因为每一次比较,都用x角标上的元素和下一个元素进行比较。因为第一个位置在外层循环中已经确定了。所以不用再比较{if(arr[x]>arr[y]){int temp = arr[x];arr[x] = arr[y];arr[y] = temp;}}}} 

2.冒泡排序
思路:相邻的两个元素挨个比较,大的元素放右边,小的放左边。

 /*冒泡排序。比较方式:相邻两个元素进行比较。如果满足条件就进行位置置换。原理:内循环结束一次,最值出现在尾角标位置。*/public static void bubbleSort(int[] arr){for(int x=0; x<arr.length-1; x++)//避免越界{for(int y=0; y<arr.length-x-1; y++)//-x:让每次参与比较的元减-1:避免角标越界。因为外层循环第一个已经确定好了位置,内层循环就需要把外层的x减去,把剩下的几个元素进行排序就可以{if(arr[y]>arr[y+1]){int temp = arr[y];arr[y] = arr[y+1];arr[y+1] = temp;}}}
}

3.折半查找(二分法)
思路:定义三个变量分别记录要查找元素的范围最大索引值,最小索引值,中间索引值,每次都是使用中间索引值的元素与目标元素币交一次,如果不是我们所需要的元素,那么缩小查找的范围。

/*为了提高查找效率,可使用折半查找的方式,注意:这种查找只对有序的数组有效。这种方式也成为二分查找法。*/public static int halfSeach(int[] arr,int key){int min,mid,max;min = 0;max = arr.length-1;mid = (max+min)/2;while(arr[mid]!=key){if(key>arr[mid])min = mid + 1;else if(key<arr[mid])max = mid - 1;if(min>max)return -1;mid = (max+min)/2;}return mid;}

就相当于你要从一本电话簿里面查找一个人的电话,A-Z,你要找m开头的,那么你自己肯定先从中间开始翻起,看到的是G,那么肯定是比目标的M要小所以你就要再往后面翻一翻,但是翻到了R,翻过了,所以得往前翻一翻,这样二分查找法就是比较目标(mid)与最大最小的关系,最终相等了就是结果。

4.数组翻转

/*反转其实就是头角标和尾角标的元素进行位置的置换,然后在让头角标自增。尾角标自减。当头角标<尾角标时,可以进行置换的动作。*/public static void reverseArray(int[] arr){for(int start=0,end=arr.length-1; start<end; start++,end--){swap(arr,start,end);}}//对数组的元素进行位置的置换。public static void swap(int[] arr,int a,int b){int temp = arr[a];arr[a] = arr[b];arr[b] = temp;}

这篇关于java基础语法难点(day01-day05)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/995935

相关文章

springboot集成easypoi导出word换行处理过程

《springboot集成easypoi导出word换行处理过程》SpringBoot集成Easypoi导出Word时,换行符n失效显示为空格,解决方法包括生成段落或替换模板中n为回车,同时需确... 目录项目场景问题描述解决方案第一种:生成段落的方式第二种:替换模板的情况,换行符替换成回车总结项目场景s

SpringBoot集成redisson实现延时队列教程

《SpringBoot集成redisson实现延时队列教程》文章介绍了使用Redisson实现延迟队列的完整步骤,包括依赖导入、Redis配置、工具类封装、业务枚举定义、执行器实现、Bean创建、消费... 目录1、先给项目导入Redisson依赖2、配置redis3、创建 RedissonConfig 配

SpringBoot中@Value注入静态变量方式

《SpringBoot中@Value注入静态变量方式》SpringBoot中静态变量无法直接用@Value注入,需通过setter方法,@Value(${})从属性文件获取值,@Value(#{})用... 目录项目场景解决方案注解说明1、@Value("${}")使用示例2、@Value("#{}"php

SpringBoot分段处理List集合多线程批量插入数据方式

《SpringBoot分段处理List集合多线程批量插入数据方式》文章介绍如何处理大数据量List批量插入数据库的优化方案:通过拆分List并分配独立线程处理,结合Spring线程池与异步方法提升效率... 目录项目场景解决方案1.实体类2.Mapper3.spring容器注入线程池bejsan对象4.创建

线上Java OOM问题定位与解决方案超详细解析

《线上JavaOOM问题定位与解决方案超详细解析》OOM是JVM抛出的错误,表示内存分配失败,:本文主要介绍线上JavaOOM问题定位与解决方案的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一、OOM问题核心认知1.1 OOM定义与技术定位1.2 OOM常见类型及技术特征二、OOM问题定位工具

基于 Cursor 开发 Spring Boot 项目详细攻略

《基于Cursor开发SpringBoot项目详细攻略》Cursor是集成GPT4、Claude3.5等LLM的VSCode类AI编程工具,支持SpringBoot项目开发全流程,涵盖环境配... 目录cursor是什么?基于 Cursor 开发 Spring Boot 项目完整指南1. 环境准备2. 创建

Spring Security简介、使用与最佳实践

《SpringSecurity简介、使用与最佳实践》SpringSecurity是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架,本文给大家介绍SpringSec... 目录一、如何理解 Spring Security?—— 核心思想二、如何在 Java 项目中使用?——

SpringBoot+RustFS 实现文件切片极速上传的实例代码

《SpringBoot+RustFS实现文件切片极速上传的实例代码》本文介绍利用SpringBoot和RustFS构建高性能文件切片上传系统,实现大文件秒传、断点续传和分片上传等功能,具有一定的参考... 目录一、为什么选择 RustFS + SpringBoot?二、环境准备与部署2.1 安装 RustF

springboot中使用okhttp3的小结

《springboot中使用okhttp3的小结》OkHttp3是一个JavaHTTP客户端,可以处理各种请求类型,比如GET、POST、PUT等,并且支持高效的HTTP连接池、请求和响应缓存、以及异... 在 Spring Boot 项目中使用 OkHttp3 进行 HTTP 请求是一个高效且流行的方式。

java.sql.SQLTransientConnectionException连接超时异常原因及解决方案

《java.sql.SQLTransientConnectionException连接超时异常原因及解决方案》:本文主要介绍java.sql.SQLTransientConnectionExcep... 目录一、引言二、异常信息分析三、可能的原因3.1 连接池配置不合理3.2 数据库负载过高3.3 连接泄漏