Java学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
文章目录
- 阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
- 1、简介
- 1.1、JDK、JRE、JVM
- 1.2、JDK的安装目录
- 1.3 DOS常用命令
- 1.4 第一个程序的编写
- 1.5 HelloWorld常见小问题
- 1.6 关键字
- 1.7 常量
- 1.8 变量使用注意事项
- 1.9 标识符
- 1.10 类型转换
- 1.11 Scanner,从控制台输入数据
- 2、运算符
- 2.1 算术运算符
- 2.2 字符的'+'操作
- 2.3 字符串的'+'操作
- 2.4 赋值运算符=、+=等操作
- 2.5 ++、-- 操作
- 2.6 关系运算符
- 2.7 逻辑运算符
- 2.8 短路逻辑运算符
- 2.8 三元运算符
- 2.9 具体案例
- 3、if、switch、for、while语句
- 3.1 switch语句
- 3.2 水仙花数,for语句的案例
- 3.3 珠穆朗玛峰,while循环的案例
- 3.4 三种循环对比
- 3.5 跳转控制语句continue、break
- 3.6 循环嵌套
- 3.7 Random
- 3.7 Random案例:猜数字
- 4、IDEA
- 4.1 IDEA安装
- 4.2 IDEA编程HelloWorld
- 4.3 IDEA项目结构
- 4.4 IDEA中快捷键
- 4.5 IDEA中模块的分类
- 5、数组
- 5.1 数组的定义格式
- 5.2 数组的初始化
- 5.2.1 数组动态初始化
- 5.2.2 数组访问
- 5.2.3 内存分配
- 5.2.4 多个数组内存图(指向不同)
- 5.2.5 多个数组内存图(指向相同)
- 5.2.6 数组静态初始化
- 5.2.7 数组操作中常见的问题:数组越界、空指针异常
- 5.2.8 数组常见操作:遍历and获取数组长度
- 6、方法
- 6.1 定义
- 6.2 形参、实参
- 6.3 带返回值方法的定义和调用
- 6.4 方法注意事项
- 6.5 ==方法的通用格式!!!==
- 6.6 ==方法的重载!!!==
- 6.7 方法的重载的练习
- 6.8 方法的参数传递(基本类型)
- 6.9 方法的参数传递(引用类型)
- 7、Debug
- 7.1 Debug简述
- 8、基础案例
- 8.1 导包三种方式
- 8.2 百钱百鸡(==利用循环解带约束的三元一次方程组==)
- 8.3 数组反转
- 4、总结
提示:以下是本篇文章正文内容
1、简介
______________________________时间分割符2023/3/9 1h
1.1、JDK、JRE、JVM
visio 2016
JDK:开发环境;
JRE:运行环境;
JVM:相当于一个翻译,保证了JAVA程序能够跨平台使用。
开发工具:编译工具(javac.exe)和运行工具(java.exe)
1.2、JDK的安装目录
1.3 DOS常用命令
1.4 第一个程序的编写
1、记事本编写个 .java 文件;
2、进到所在的目录,执行 javac HelloWorld.java 进行编译,得到一个 HelloWorld.class 的java字节码文件;
3、执行 java HelloWorld ,即运行编译好的 java 程序。
1.5 HelloWorld常见小问题
1.6 关键字
关键字:被java语言赋予了特定含义的单词
1.7 常量
注意:NULL常量是不能直接被输出的,其他常量则可以被直接输出。
___________________________时间分隔符:2023/3.20__2h
1.8 变量使用注意事项
-
long类型的变量定义的时候,为了防止数过大,要在后面加L。
后面加“L”的原因:不加默认为int,相当于把int类型的数据赋值给long类型,而本身10000000000是超过int的数据范围了,因此不加就会报错”超过范围“!!!
- float类型的变量定义时,为了防止类型不兼容,后面要加F。因为默认小数默认double,而double是无法直接转换为float的(什么都不加的情况下)。
1.9 标识符
-
标识符定义规则
-
标识符命名约定
1.10 类型转换
- 自动类型转换
- 强制类型转换
1.11 Scanner,从控制台输入数据
步骤:
1、导包
2、创建对象
3、接收数据
//1、导包
import java.util.Scanner;
pubilc class MethodTest_02 {public static void main(String[] args) {//2、创建对象Scanner sc = new Scanner(System.in);//3、接收数据int week = sc.nextInt();}
}
2、运算符
2.1 算术运算符
整数操作只能得到整数,要想得到小数,必须要有浮点数参与运算
System.out.println(3 / 2);
System.out.println(3.0 / 2);
2.2 字符的’+'操作
其实就是在讲ASCII码,不过多讲了个类型是如何自动提升的
int k = 1 + 1.0; 报错
double k = 1 + 1.0; 不报错
2.3 字符串的’+'操作
System.out.println("黑马" + 6 + 66); 输出:黑马666
System.out.println(1 + 99 + "黑马"); 输出:100黑马
2.4 赋值运算符=、+=等操作
只用注意一个点:+=、-=等等扩展的赋值运算符,自动包含了强制类型转换
short s = 10;
s += 20; //不会报错,因为自动包含了强制类型转换
System.out.println("s: " + s);short x = 10;
x = x + 20; //报错,int无法转换为short,解决办法是强类型转换,不过复杂了
System.out.println("x: " + x);
2.5 ++、-- 操作
- 单独使用时,放前后都一样!!!
- 参与使用时,放前后不一样!!!
2.6 关系运算符
关系运算符的结果都是True or False,千万不要把 “==” 成 “=” 。
2.7 逻辑运算符
注意各个逻辑运算符的规则,尤其是“异或”容易忘。
2.8 短路逻辑运算符
注意 “短路逻辑运算符” 和 “逻辑运算符” 的区别,自己之前没接触过此类运算符。
2.8 三元运算符
跟C++差不多。
2.9 具体案例
具体案例可以看“两只老虎”、“三个和尚”。其实分析的过程基本都是如下:
1、首先分析需要几个变量去表示;
2、想想用什么数据结构去实现(例如最简单的比大小,复杂点的就是排序咯)
3、输出结果。
3、if、switch、for、while语句
3.1 switch语句
要注意case穿透现象是什么,如何利用case穿透现象进行程序的编写。
3.2 水仙花数,for语句的案例
关键点是记住,给一个指定数字,如何获取指定位置上的数字。
3.3 珠穆朗玛峰,while循环的案例
这里要注意,什么时候用for,什么时候用while。
若知道循环次数,for更好;若不知循环次数,则用while更好。
3.4 三种循环对比
do while:先执行后判断;
while:先判断后执行;
for:先判断后执行。
for、while的区别就是i的作用域不同。
死循环格式了解即可。
3.5 跳转控制语句continue、break
两者对比
continue:用于循环中,跳过某次循环的内容,执行下一次循环;
break:用于循环中,终止循环体内容的执行,即终止当前整个循环体的执行。
3.6 循环嵌套
注意两层循环是怎么分析出来的
3.7 Random
注意random的使用规则:
3.7 Random案例:猜数字
注意分析过程,很巧妙:
如何生成1——100的随机数?
循环究竟选取for还是while?
如何结束循环?视频里用break。自己想的是定义一个是否猜对的标志变量。
4、IDEA
4.1 IDEA安装
公众号:软件安装管家目录安装专业版的破解版。
注意,别安装社区版,虽然免费,但是例如Spring功能没法一键配置。
4.2 IDEA编程HelloWorld
六步如下:
其次还需要知道,.java 文件编译后生成的 .class 文件,是在该目录下的 out 文件夹下。例如下图中 idea_test 是模块目录有 .java 文件,而 .class 文件是在 out 目录里。
4.3 IDEA项目结构
项目、模块、包、类(即 .java 文件):
4.4 IDEA中快捷键
4.5 IDEA中模块的分类
新建模块;
删除模块;
导入模块。
5、数组
5.1 数组的定义格式
推荐使用方法一。
5.2 数组的初始化
动态初始化 + 静态初始化。
5.2.1 数组动态初始化
定义:初始化时只指定数组长度,由系统为数组分配随机初始值。
格式如下: (其中new代表向内存申请空间)
5.2.2 数组访问
数组名[索引] 等同于 变量名,是一种特殊的变量名。
5.2.3 内存分配
一定要深刻理解第一行代码的过程;同时理解栈区与堆区。
5.2.4 多个数组内存图(指向不同)
5.2.5 多个数组内存图(指向相同)
1、
2、
5.2.6 数组静态初始化
注意:
1、即便知道数组长度,里面也不能写;
2、推荐简化格式,且简化格式里没有new关键字,但是要做到清楚这个过程是有new的。
5.2.7 数组操作中常见的问题:数组越界、空指针异常
索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。
ArrayIndexOutOfBoundsException。看到这个错误一般反应过来大概率是索引越界。
空指针异常:访问的数据不再指向堆内存的数据,造成空指针异常。
NullPointerException。看到这个错误一般反应过来大概率是指向的为空。
package itheima_04;
//数组操作常见的两个小问题
/*索引越界:访问了数组中不存在的索引对应的元素,造成索引越界问题。ArrayIndexOutOfBoundsException。看到这个错误一般反应过来大概率是索引越界。空指针异常:访问的数据不再指向堆内存的数据,造成空指针异常。NullPointerException。看到这个错误一般反应过来大概率是指向的为空。
*/
public class ArrayDemo {public static void main(String[] args) {int[] arr = new int[3];//System.out.println(arr[3]);arr = null;System.out.println(arr[0]);}
}
5.2.8 数组常见操作:遍历and获取数组长度
遍历好说,for循环完事。但若不知道数组长度,就需要获取数组长度,要明白如何获取数组长度,以及遍历数组统一的格式。
遍历通用格式:
6、方法
6.1 定义
方法就是一个代码集,其实就是函数,需要先定义,再调用。
分为 带返回值的方法(int、boolean、float等等) 和 不带返回值的放法(void)。具体每一种又分是否带参数。
6.2 形参、实参
6.3 带返回值方法的定义和调用
1、定义
2、调用
推荐格式2,且要注意方法的返回值通常会使用变量接收,否则该返回值将毫无意义。
6.4 方法注意事项
1、方法不能嵌套定义
2、void 表示无返回值,可以省略return,也可以单独的写return,后面不加数据
6.5 方法的通用格式!!!
做到两个明确:
1、明确返回值类型:主要是明确方法操作完毕之后是否有数据返回,如果没有写void;如果有,则写对应的数据类型;
2、明确参数:主要是明确参数的类型和数量。
调用方法时:
1、void类型的方法,直接调用;
2、非void类型的方法,推荐用变量接收调用。
6.6 方法的重载!!!
方法重载通常用于创建完成一组任务相似但参数的类型或参数的个数不同的方法。
如何判断:
1、多个方法在一个类中;
2、多个方法具有相同的方法名;
3、多个方法的参数不相同,具体指:类型不同 或 数量不同 或 两者都不同。
4、重载仅针对同一个类中方法的名称与参数进行识别,与返回值无关。换句话说,不能通过返回值是否相同来判断两个方法是否构成重载。
注意下图中第四个,都不在同一个类中,自然不是方法的重载。
再比如下列代码,方法一、二、三为方法的重载,但是四、五却不是,代码放在IDEA里也会报错。
public class MethodDemo {public static void main(String[] args) {}// 方法一public static int sum(int a, int b) {return a + b;}// 方法二public static double sum(double a, double b) {return a + b;}// 方法三public static int sum(int a, int b, int c) {return a + b + c;}// 方法四public static boolean sum(int a, int b) {return false;}// 方法五public static int sum(int c, int d) {return c + d;}
}
6.7 方法的重载的练习
需求:使用方法重载的思想,设计比较两个整数是否相同的方法,兼容全整数类型(byte,short,int,long)。
package itheima_05;
// 方法重载的练习
public class MethodTest {public static void main(String[] args) {System.out.println(comapre(10,20));System.out.println(comapre((byte)10,(byte)20));System.out.println(comapre((short)10,(short) 20));System.out.println(comapre((long)10,(long)20));System.out.println(comapre(10L,20L));}public static boolean comapre(int a, int b) {System.out.println("int");return a == b;}public static boolean comapre(byte a, byte b) {System.out.println("byte");return a == b;}public static boolean comapre(short a, short b) {System.out.println("short");return a == b;}public static boolean comapre(long a, long b) {System.out.println("long");return a == b;}
}
6.8 方法的参数传递(基本类型)
一定深刻理解在内存里是如何进行的。形参的改变,并不会影响实际参数的值。
6.9 方法的参数传递(引用类型)
一定深刻理解在内存里是如何进行的。对于引用类型的参数,形参的改变,会影响实际参数的值。
7、Debug
7.1 Debug简述
如何加断点?
如何运行加了断点的程序?
看哪里?
点哪里?
如何删除断点?
8、基础案例
8.1 导包三种方式
以Scanner为例,有三种方式:
1、手动导包;
2、快捷键导包:Alt + Enter;
3、自动导包
8.2 百钱百鸡(利用循环解带约束的三元一次方程组)
题目:
分析:
package itheima;
// 百钱买百鸡,如何利用循环解带约束的三元一次方程组
public class Test_05 {public static void main(String[] args) {for(int i=0; i<=20; i++) {for(int j=0; j<=33; j++){int z = 100 - i - j;if(z%3==0 && 5*i+3*j+z/3==100){System.out.println(i + "," + j + "," + z);}}}}
}
8.3 数组反转
需求:
分析:
1、定义一个数组,静态初始化;
2、循环遍历数组,这一次初始化语句定义两个循环变量,start、end,判断条件是start < end;
3、变量交换(定义临时空间);
4、遍历打印新的数组。
4、总结
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
相关文章:

Java学习记录
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!! 文章目录阅读前请看一下:我是一…...

OpenGL API 之 glVertexAttribPointer
glVertexAttribPointer 定义通用顶点属性数据的数组 C Specification format void glVertexAttribPointer(GLuint index,GLint size,GLenum type,GLboolean normalized,GLsizei stride,const void * pointer); Parameters nametypedescriptionindexGLuint Specifies the inde…...

蓝桥杯真题4
[蓝桥杯 2017 省 AB] 分巧克力 题目描述 儿童节那天有 KKK 位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友们。 小明一共有 NNN 块巧克力,其中第 iii 块是 HiWiH_i \times W_iHiWi 的方格组成的长方形。 为了公平起见,小明需要从这 NN…...

day02_基本语法
今日内容 上课同步视频:CuteN饕餮的个人空间_哔哩哔哩_bilibili 同步笔记Java2307_沐沐霸的博客-CSDN博客 零、复习昨日 一、程序&Java介绍 二、安装JDK&配置环境变量 三、DOS命令 四、第一个程序[重点] 五、Java语言规范[重点] 六、运行机制 七、Typora工具使用 附录:…...

多线程之单例模式
前言 本篇介绍的是wait与notify方法,通过wait来顺序控制执行一些代码,了解单例模式,进行单例模式的简单实现,介绍饿汉模式下出现线程不安全的问题与解决;如有错误,请在评论区指正,让我们一起交…...

2023年绿色建筑国际会议(ICoGB 2023) | Springer独立出版
会议简介 Brief Introduction 2023年绿色建筑国际会议(ICoGB 2023) 会议时间:2023年5月21日-23日 召开地点:瑞典斯德哥尔摩 大会官网:www.icogb.org 2023年绿色建筑国际会议(ICoGB 2023)将围绕“绿色建筑”的最新研究领域而展开,为…...

Python中进程和线程到底有什么区别?
人生苦短,我用python python 安装包资料:点击此处跳转文末名片获取 一、进程和线程的关系 线程与进程的区别可以归纳为以下4点: 地址空间和其它资源(如打开文件):进程间相互独立,同一进程的各线程间共享。…...

2023美赛春季赛F题思路数据代码论文分享
文章目录赛题思路赛题详情参赛建议(个人见解)选择队友及任务分配问题(重要程度:5星)2023美赛春季赛F题思路数据代码【最新】赛题思路 (赛题出来以后第一时间在CSDN分享) 最新进度在文章最下方卡片,加入获取…...

念一句咒语 AI 就帮我写一个应用,我人麻了...
原文链接:https://forum.laf.run/d/232 作为人类,我们时常会有自己独特的想法和脑洞大开的创意。然而,这些想法往往因为成本过高而无法实现,毕竟每个人的能力和精力都是有限的,尤其是对于程序员而言,不可能…...

开放平台设计之接口签名认证
前言 当前时代,数据是王道!当我们自己的平台有了足够大的数据量,就有可能诞生一个开放平台宫第三方分析、使用。那么我们怎么去实现对外部调用接口的控制与鉴权呢?这是我们今天的重点——接口签名认证!!&a…...

Vue自创插件发布到npm以及使用方法
Vue自创插件发布到npm以及使用方法 目标:创建my-popup-selector下拉框组件,并发布到npm,效果如下图: 禁用时样式: ①创建vue项目: my-popup-selector ②项目目录结构截图如下: ③在项目根目录…...

合成孔径雷达干涉测量InSAR数据处理、地形三维重建、形变信息提取、监测等实践技术
合成孔径雷达干涉测量(Interferometric Synthetic Aperture Radar, InSAR)技术作为一种新兴的主动式微波遥感技术,凭借其可以穿过大气层,全天时、全天候获取监测目标的形变信息等特性,已在地表形变监测、DEM生成、滑坡…...

Java刷题,蓝桥杯省赛第十二届(第一场)4-------------6
4、相乘题目本题总分:10 分【问题描述】小蓝发现,他将 1 至 1000000007 之间的不同的数与 2021 相乘后再求除以1000000007 的余数,会得到不同的数。小蓝想知道,能不能在 1 至 1000000007 之间找到一个数,与 2021 相乘后…...

Docker Cgroups——Docker 资源限制背后的技术原理
Docker Cgroups——Docker 资源限制背后的技术原理虽然在容器内部进程只能看到“掩饰”过的视图,但是在宿主机上,它就是一个普通的进程,与其他所有进程之间是平等竞争的关系。这就意味着虽然表面上被隔离了,但它实际上在与其他进程…...

十四. MySQL 锁相关
目录一. MySQL 锁基础Mysql 锁分类二. InnoDB 下的锁增删改查操作时底层的加锁处理表级锁1. 意向锁2. AUTO-INC锁id不连续对主从同步的影响3. 其它表锁行锁分析1. 记录锁 Record Locks2. 间隙锁 Gap Locks3. 临键锁 Next-Key Locks4. 插入意向锁5. 隐式锁6. 加锁算法InnoDB 行锁…...

ModStartBlog v7.0.0 网站简单统计,支持博客分享
ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 …...

【C语言蓝桥杯每日一题】—— 递增序列
【C语言蓝桥杯每日一题】—— 递增序列😎前言🙌递增序列🙌总结撒花💞😎博客昵称:博客小梦 😊最喜欢的座右铭:全神贯注的上吧!!! 😊作者…...

node_express框架01
01_express 基本结构 注意点:app.get 指定了 get 方法,如果是 app.all 就是指定了所有的请求方法(例如:post delete 都是包含的),而 app.get(/) 里面访问的是根路径,如果访问别的路径ÿ…...

想转行做程序员,该怎么选择开发语言?哪个岗位工资最高?
本文主要针对零基础想了解或者转行从事开发岗的同学。 我们收集了往届毕业同学和一些正在咨询的同学,发现大家在学习初期,对转行互联网做开发,最多的疑问或者顾虑大体分为几类: 现在哪门语言比较火? 学什么语言好找到工…...

JavaWeb——【笔记】3.2JavaWeb_Web核心_Request(请求)+Response(响应)
Request(请求)Response(响应)两个对象 request、response是service()方法中的两个参数。作用分别是获取请求数据进行逻辑处理;对数据解析设置响应数据 一、简介 示例: 二、Request(请求) 1、Request继承体系 能更清楚其是由谁创建及查阅什么文档 2、Request获…...

HTML 标签和属性
一些标签 单双标签 双标签。双标签指标签是成对出现的,也就是有一个开始标签和一个结束标签,开始标签用 <标签名> 表示,结束标签用 </标签名> 表示,只有一对标签一起使用才能表示一个具体的含义。例如 <html>&…...

MySQL 连接的使用
MySQL 连接的使用 在前几章节中,我们已经学会了如何在一张表中读取数据,这是相对简单的,但是在真正的应用中经常需要从多个数据表中读取数据。 本章节我们将向大家介绍如何使用 MySQL 的 JOIN 在两个或多个表中查询数据。 你可以在 SEL…...

配置案例丨EtherCAT转Profinet网关连接凯福科技总线步进驱动器
西门子S7-1200/1500系列的PLC,采用PROFINET实时以太网通讯协议,需要连接带EtherCAT的通讯功能的伺服驱动器等设备,就必须进行通讯协议转换。小疆GW-PN-ECATM系列的网关提供了,快速可行的解决方案。GW-PN-ECATM支持两种实时以太网通…...

VSCODE连接ssh服务器时提示could not establish connection to解决方法
VSCODE连接ssh服务器时提示could not establish connection to解决方法 1.点击扩展设置 在Remote.ssh:config file中输入config路径 重新连接即可,如果是之前连接过ubuntu现在无法连接则需要打开刚刚的地址文件中删掉known_hostsj即可 虚拟机中ubuntu安…...

网络安全之防火墙 双机热备实验
目录 网络安全之防火墙 双机热备实验 实验图 基本配置 PC1 SW2 PC2 编辑 SW3配置 登陆防火墙图形界面 编辑 FW1的配置 FW2的配置 新建trust to untrust 区域的安全策略 配置心跳线 在FW1与FW2之间拉一条心跳线 编辑 配置FW1 g 1/0/2 口 ip 编辑 配置FW2 g…...

Java高频面试题(2023最新整理)
Java的特点 Java是一门面向对象的编程语言。面向对象和面向过程的区别参考下一个问题。 Java具有平台独立性和移植性。 Java有一句口号:Write once, run anywhere,一次编写、到处运行。这也是Java的魅力所在。而实现这种特性的正是Java虚拟机JVM。已编…...

mongoDB学习笔记
1.大数据定义: 数据量级大 byte kb MB GB TB PB ... 数据种类多 数据维度 例如:人物画像 数据处理速度快 数据有价值 问题:①.存储 ? ②.数据分析? ③.高并发? 大数据应用领域: 电商(推…...

快速融人,融资的共享模式,实体,线上皆可参考
有一种模式现在非常流行,它既能帮助商家快速收钱,又能帮助商家快速裂变更多客户,这个神奇的模式就是共享股东模式,现在很多老板都在用这个模式。 梦龙商业案例分析,带你了解商业背后的秘密 这个模式也适用于很多个行…...

纯干货版阿里巴巴国际站入门攻略
阿里巴巴国际站作为目前全球排名名列前茅的B2B电商平台,很多跨境电商卖家都很想入局。但是目前很多公司的国际站都没有专职运营的人员,只是靠外贸业务员操作,所以涉猎的都是比较浅的东西。今天龙哥就来讲讲如果想要深研这个平台的话ÿ…...

jQuery四、其他方法
零、文章目录 文章地址 个人博客-CSDN地址:https://blog.csdn.net/liyou123456789个人博客-GiteePages:https://bluecusliyou.gitee.io/techlearn 代码仓库地址 Gitee:https://gitee.com/bluecusliyou/TechLearnGithub:https:…...