建设一个网站的所有代码一个具体网站的seo优化
阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
文章目录
- 阅读前请看一下:我是一个热衷于记录的人,每次写博客会反复研读,尽量不断提升博客质量。文章设置为仅粉丝可见,是因为写博客确实花了不少精力。希望互相进步谢谢!!
- 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、总结
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!
码字不易,谢谢点赞!!!