当前位置: 首页 > news >正文

原版百度wordpress 七牛云优化

原版百度,wordpress 七牛云优化,网络推广培训怎样,广告设计公司名称推荐一、Java简述 1、Java的历史 Java是美国Sun公司在1995年推出的一门计算机高级编程语言。 它初期叫做Oak(橡树)#xff0c;但是注册商标的时候发现已经有人注册了#xff0c;后来就改成 Java (印度尼西亚爪哇岛)#xff1b; Java之父#xff1a;詹姆斯高斯林 (James Gosli…一、Java简述 1、Java的历史 Java是美国Sun公司在1995年推出的一门计算机高级编程语言。 它初期叫做Oak(橡树)但是注册商标的时候发现已经有人注册了后来就改成 Java (印度尼西亚爪哇岛) Java之父詹姆斯·高斯林 (James Gosling)。 在2009年Sun公司被Oracle甲骨文以74亿美元收购这就意味着Java属于Oracle了。 2、为什么要使用Java 世界上最流行的编程语言之一在国内使用最为广泛的编程语言。 可移植性(跨平台)、安全可靠、性能较好。 开发社区最完善、功能最丰富。 3、Java可以做什么 桌面端应用开发例如 Eclipse、IDEA等等移动端应用开发例如 Android大数据开发例如 Hadoop企业级应用开发例如 微服务、大型互联网应用游戏开发例如 我的世界物联网用python或者c/c用的多爬虫 4、Java的技术体系 Java SEJava Standard EditionJava标准版Java技术的核心与基础。 Java EEJava Enterprise EdiitonJava企业版企业级应用开发的一套解决方案。 Java MEJava Micro EditionJava微型版针对移动设备应用的解决方案。 Java主要擅长分布式系统开发、大数据开发、Android应用开发三个方向学好Java有饭吃 根据市场的就业形势一般人都会选择分布式系统开发(Web应用开发)然后积累2-3年以上工作经验以后可以转向大数据开发方向。 二、Java环境搭建 1. JDK JDKJava开发工具包是学Java的第一步不管是学习Java编程还是要搭建JavaWeb开发环境或者是搞Android开发环境都离不开它。 1.1 JDK介绍 JDK (Java Development Kit) Java开发工具包JDK包含Java开发工具(javacjavajavadocjar等)以及JREJRE (Java Runtime Environment) Java运行环境JRE包含了开发Java程序时需要类库(时间日期、集合、并发、IO、网络、反射等) 和 JVM(Java虚拟机真正运行Java程序的地方) JDK体系结构 JDK的发展史 LTSlong-term support长期支持版目前最新版本JDK18企业常用的是JDK8 1.2 下载JDK Java官网地址https://www.oracle.com/java/ Java下载地址https://www.oracle.com/java/technologies/downloads/ Java历史版本下载地址https://www.oracle.com/java/technologies/oracle-java-archive-downloads.html 目前Oracle官方提供了3个长期版本的JDK选择jdk的时候一定选择官方长期支持的版本 Java8 (Oracle官方支持到2030年12月)企业目前都用Java8(JDK8)开发Java项目也是目前最主流的JDK版本Java11 (Oracle官方支持到2026年9月)Java17 (Oracle官方支持到2024年9月) Windows版JDK8下载 JDK8也叫做Java8 1、我们根据自己电脑配置下载对应的JDK这里我们下载Windows64位版本的JDK 2、选择Windows 3、同意许可协议并且登录Oracle账号然后点击下载 下载成功后本地会出现一个jdk-8uxxx-windows-x64.exe文件。 注jdk-8u202是最后一个免费商用版本Oracle于 2019-01-15 停止免费商用更新。 1.3 安装JDK 1、双击JDK的安装包如jdk-8u201-windows-x64.exe,进入安装界面然后一直下一步即可。 2、设置JDK的安装路径可选 3、设置JRE的安装路径可选 4、安装成功后点击关闭即可 JDK目录结构 bin目录包含一些用于开发Java程序的工具例如编译工具(javac.exe)、运行工具 (java.exe) 、打包工具 (jar.exe)等include目录C语言的头文件用于支持Java程序设计jre目录Java运行时环境db这是一个纯 Java 实现、开源的数据库管理系统DBMS源于 Apache 软件基金会ASF名下的项目 Derbyjie\bin目录包含Java平台所使用工具和类库的可执行文件和DLL文件。jre\lib目录Java运行时环境所使用的核心类库lib目录包含开发Java程序所使用的类库文件src.zip压缩包归档的Java源代码。 jdk/bin目录下可执行文件 java这个可执行程序其实就是JVM运行Java程序就是启动JVM然后让JVM执行指定的编译后的代码javac这是Java的编译器它用于把Java源码文件以.java后缀结尾编译为Java字节码文件以 .class 后缀结尾jar用于把一组.class文件打包成一个.jar文件便于发布javadoc用于从Java源码中自动提取注释并生成文档jdbJava调试器用于开发阶段的运行调试。 查阅Java文档 Java8官方文档Java Platform Standard Edition 8 Documentation (oracle.com) Java8官方文档可能不够直观我们可以切换Java11和Java17的官方文档 java11官方文档JDK 11 Documentation - Home (oracle.com) java17官方文档JDK 17 Documentation - Home (oracle.com) 1.4 配置环境变量 鼠标右键 “我的电脑”—“属性”—“高级”—“环境变量”。 1、新建一个系统变量 变量名 JAVA_HOME 变量值 D:\Program Files\Environment\Java\jdk1.8.0_201 jdk所在目录为什么需要配置JAVA_HOME: JAVA_HOME本质就是JDK的绝对路径D:\Program Files\Environment\Java\jdk1.8.0_201后期Java开发会使用很多工具和组件比如 Tomcat、Maven、Jmeter等他们会依赖这个JAVA_HOME目录如果没有的话这些程序会无法运行 2、然后将%JAVA_HOME%\bin 填加到系统变量的Path变量中 %JAVA_HOME%\bin之后一直点确定来保存我们的配置。 3、查看是否配置成功 按快捷键winr打开运行窗口然后输入cmd并回车打开指令控制台 ) 在命令提示符窗口中输入javac -version或者java -version ok出现上述结果表示我们已经配置成功了。 1.4 卸载JDK JDK和我们日常用的软件卸载方式类似卸载后删除文件和环境变量即可。 1.5 编写第一个Java程序 开发Java程序的三个步骤编写代码、编译代码、运行代码。 1、开启系统扩展名 2、在桌面空白处新建一个文本文档文件并命名为HelloWord.java。 3、编辑文本文件 public class HelloWord {//main方法是程序执行的入口public static void main(String[] args){System.out.println(hello Java!!!);} }4、Ctrl S保存文件 5、按快捷键winr然后输入cmd回车打开指令控制台 6、javac (java文件的绝对路径 ) 编译 例如javac HelloWord.java 7、会在原java文件的位置生成一个HelloWorld.class (字节码文件) 8、 java -xxx (执行目标文件) 例如java HelloWorld 执行过程xxx.java(源文件) -javac.exe(编译器)- xxx.class字节码文件 -java.exe(执行/翻译)- JVM(java虚拟机) -(解释成机器码并运行) -- 操作系统。 1.6 Java 跨平台原理 Java程序是运行在JVMJava Virtual Machine之上这就是Java跨平台的本质原因而且由于Java是开放的有越来越多的编程语言开发的程序也可以运行在JVM之上例如 大数据开发的Scala、安卓开发的Kotlin以及脚本语言Grovvy等。 2. IntelliJ IDEA IDEA全称IntelliJ IDEA是 JetBrains 公司的产品IntelliJ IDEA 在业界被公认为最好用的 Java 集成开发工具结合智能编码辅助与符合人体工程学的设计让开发不仅高效更成为一种享受。 安装地址https://blog.csdn.net/qq_46921028/article/details/124209921 三、注释 注释用来对代码进行解释说明被注释的内容会被编译器忽略掉。 Java中注释有三种写法单行注释、多行注释、文档注释 // 单行注释 快捷键:ctrl //*多行注释*/ 多行注释也可以写在方法的参数列表中 , 快捷键:ctrl shift //**文档注释*/查看编译后的class字节码文件发现注释已经被被编译器忽略掉了 四、变量 1、字面量 在Java程序中直接写出来的数据叫字面量/常量/直接量。 常见数据在程序中书写格式 常用数据生活中的数据程序中的写法说明整数-128127-128127写法一致小数3.142.7183.142.718写法一致字符男女可‘男’‘女’‘可’程序中必须使用单引号有且仅能一个字符字符串HelloWorld“HelloWorld”程序中必须使用双引号内容可有可无布尔真、假true、false只有两个值: true:代表真false: 代表假空值值是null一个特殊的值空值 package com.baidou.literal;/*** 字面量** author 白豆五* version 2022/6/16 8:19* since JDK8*/ public class LiteralDemo {public static void main(String[] args) {// 1、整数System.out.println(666);// 2、小数System.out.println(3.14);// 3、字符System.out.println(a);System.out.println( );//空字符/*转义字符\n 换行 , \t 一个tab缩进*/// 4、字符串System.out.println(你好Java);// 5、布尔值只有两个值真true、假falseSystem.out.println(true);System.out.println(false);} }2、变量 变量可以理解为存储数据的容器它里面存储的数据是可以变化的。 使用的时候系统会自动为变量在内存中开辟一个区域然后我们只需要通过变量名就可以获取它里面的数据啦。 ​ 3、变量定义的格式 数据类型 变量名称 初始值;数据类型强制限制盒子中存储数据的形式。例如: int ( 整数类型)、double(小数类型)等变量名称取名字(首字母小写)之后通过变量名我们可以访问它对应的数据。初始值存的初始数据。 /*** 变量的使用** author 白豆五* version 2022/6/16 8:44* since JDK8*/ public class VariableDemo {public static void main(String[] args) {// 变量定义的格式:数据类型 变量名 初始值;int age 18;System.out.println(age age);age 25;System.out.println(age age);} }4、变量使用的注意事项 变量要先声明再使用同一个作用域范围内的变量不能重复定义变量只能在定义的作用域范围内使用什么类型的变量只能存储什么类型的数据变量定义的时候可以没有初始值,但是使用的时候必须给初始值。 5、按照声明的位置不同变量可分为两种 在类内方法体外声明的变量叫做成员变量也叫做属性在方法体内声明的变量叫做局部变量 6、常见的计算机信息存储单位 位(bit) 计算机信息存储最小单位位只有两种形式0和1(因为计算机只有高低电压两种状态所以就用0和1表示)字节(Byte) 计算机的基本存储单位字节是由8个比特位组成的 1Byte8bit (也叫做比特/比特位)千字节(KB) 1KB1024B兆字节(MB1MB1024KB吉字节(GB) 1GB1024MB太字节(TB) 1TB1024GB 五、关键字、保留字、标识符 1. 关键字 关键字就是被Java语言赋予了特殊的含义用作特殊用途的单词。(是程序员和编译器的一个约定) 关键字的特点就是单词都是小写字母。 Java关键字介绍https://docs.oracle.com/javase/tutorial/java/nutsandbolts/_keywords.html 2. 保留字 保留字就是现有Java版本尚未使用但是可能以后的版本会作为关键字使用例如 const、goto就是Java语言中的保留字。 3. 标识符 在写Java程序的时候凡是需要取名字的地方就是标识符。 如 项目名、包名、类名(接口名、枚举名、注解名)、方法名、变量名和常量名。 标识符的命名规则 标识符由字母、数字、下划线_、美元符$、中文字符组成。不能用数字开头推荐以字母开头。不能把java关键字和保留字作为标识符。如break、case、if、char、int、for等等标识符对大小写敏感。各操作系统存在文件名长度限制。 (名字不要取太长) 一些常用规范 项目、包小写。类、抽象类、接口、注解大驼峰命名法如HelloWorld、Data。变量、方法小驼峰命名法 如 userName、getUserName()。常量、枚举大写(多个单词之间用下划线_分割)如 USER_SESSION 扩展内存与硬盘 内存存储临时数据(断电数据就会消失)硬盘存储长期数据。硬盘便宜内存较贵。硬盘存储速度慢内存存储速度快。 「突发小技巧」如果你的笔记本受卡槽的限制、或者主板镶嵌的原因无法扩展内存可以通过修改虚拟内存手段来缓解部分内存压力。缺点容易损伤硬盘 六、数据类型 数据类型就是约束变量存储数据的形式包括申请内存空间的大小以及存储什么类型的数据。 1. 整数类型 整型是日常生活中经常使用的类型例如描述人的年龄、书本的页数、班级的人数、楼房的栋数等。 Java语言中整数类型按照占据内存空间大小以及表数范围分成如下四种byte、short、int、long。 数据类型内存占用(字节数)默认值取值范围byte10-128~127short20-32768~32767int (默认)40-2147483648~214748364710位数大约21亿long80l-9223372036854775808~922337203685477580719位数 1Byte 8 bit 比特位 使用程序查看整型的表数范围和所占字节大小 package com.baidou.java.syntax.primitivetype;/*** ClassName: IntegerLimitsTest* Description: 查看四种整数类型的表数范围和占据内存的字节数* Author: baidou 1433021114qq.com* Date: 2022/4/28 07:26* Version: 1.0*/public class IntegerLimitsTest {public static void main(String[] args) {//%d 表示该格式为整数//第一个%d会被Byte.MAX_VALUE替换//第二个%d会被Byte.MIN_VALUE替换//第三个%d会被Byte.Bytes替换System.out.printf(byte所能存储的最大值是%d,byte所能存储的最小值是%d,byte占据的字节数是%d \n,Byte.MAX_VALUE,Byte.MIN_VALUE,Byte.BYTES);//%d 表示该格式为整数//第一个%d会被Short.MAX_VALUE替换//第二个%d会被Short.MIN_VALUE替换//第三个%d会被Short.Bytes替换System.out.printf(short所能存储的最大值是%d,short所能存储的最小值是%d,short占据的字节数是%d \n,Short.MAX_VALUE,Short.MIN_VALUE,Short.BYTES);//%d 表示该格式为整数//第一个%d会被Int.MAX_VALUE替换//第二个%d会被Int.MIN_VALUE替换//第三个%d会被Int.Bytes替换System.out.printf(int所能存储的最大值是%d,int所能存储的最小值是%d,int占据的字节数是%d \n,Integer.MAX_VALUE,Integer.MIN_VALUE,Integer.BYTES);//%d 表示该格式为整数//第一个%d会被Long.MAX_VALUE替换//第二个%d会被Long.MIN_VALUE替换//第三个%d会被Long.Bytes替换System.out.printf(long所能存储的最大值是%d,long所能存储的最小值是%d,long占据的字节数是%d \n,Long.MAX_VALUE,Long.MIN_VALUE,Long.BYTES);} }运行结果如下 注在使用整数类型时需要考虑该数是否在表数范围内如果不在表数范围内程序会发生错误。 整数类型的使用 在Java程序中直接写出来的整数类型的数据叫字面量/常量/直接量默认类型是int 如果想要表示long类型的整数字面量需要在整数字面量的后面加上L后缀 日常开发中使用的整数是byte、int、long以及对应的包装类Byte、Integer、Long 如果想要使用比long更大的整数可以使用java.math.BigInteger类 整数字面量的四种进制表示 在Java语言中整数字面量支持四种进制表示方式 二进制以0b或者是0B开头二进制的字面量由0和1组成例如 0b1101八进制以0开头八进制的到字面量由0-7之间的8个数字组成例如 017十进制十进制的到字面量由0-9之间的10个数字组成整数字面量的默认进制表示十六进制以0x或者0X开头十六进制的字面量由0-9之间的10个数字以及a-f或者A-F之间的6个字母组成例如 0x1F 示例代码 package com.baidou.java.syntax.primitivetype;/*** ClassName: IntegerRadixTest* Description: 整数字面量的四种进制表示* Author: baidou 1433021114qq.com* Date: 2022/4/28 08:34* Version: 1.0*/ public class IntegerRadixTest {public static void main(String[] args) {//二进制的整数字面量byte binary 0b1101; //二进制转十进制:1*2^3 1*2^2 0*2 1*2^0 13// System.out.println()打印输出四种进制的整数字面量的结果都是十进制的System.out.println(binary binary);//八进制的整数字面量int octal 017; //1*87*8^015System.out.println(octal octal);//十进制的整数字面量int number 10;System.out.println(number number);//十六进制的整数字面量int hex 0x1f; //1*1615*16^031System.out.println(hex hex);} }运行结果如下 整数字面量使用下划线 如果Java源文件中存在着很长的整数字面量值不易阅读此时可以使用JDK7以后新增的特性数值字面量使用下划线来分割数值使得数值更加容易阅读。 我们可以在整数和浮点数的数值之间使用下划线但是编译器在编译的时候会自动过滤掉该下划线 2. 浮点类型 浮点类型就是生活中的小数例如 银行的利率、员工的薪资、圆周率3.14等。 Java中浮点类型分为单精度的char和双精度的double两种。 float占据4个字节(byte)也就是32位bitdouble占据8个字节byte也就是64位bit 由于浮点数的存储机制和整数存储不一样Java的浮点类型遵守IEEEZ54标准采用二进制的科学计数法表示浮点数。 对于float第1位是符号位接下来8位表示指数位后面的23位表示尾数位。 对于double第1位是符号位接下来11位表示指数位后面的52位表示尾数位。 float所能存储的数值范围大于占据8个字节的long package com.baidou.java.syntax.primitivetype;/*** ClassName: FloatLimitsTest* Description: Java两种浮点类型的表示范围和占据内存字节数* Author: baidou 1433021114qq.com* Date: 2022/5/11 14:07* Version: 1.0*/ public class FloatLimitsTest {public static void main(String[] args) {// float表示范围和占据内存字节数// %f表示该格式为浮点数 %.10f表示小数点后10位// %d表示该格式为整数// %e表示该格式用科学计数法表示System.out.printf(float所能存储的最大值是%f,float所能存储的最小值是%e,float所占据的字节数是%d \n,Float.MAX_VALUE,Float.MIN_VALUE,Float.BYTES);System.out.printf(long所能存储的最大值是%d,long所能存储的最小值是%d,long所占据的字节数是%d \n,Long.MAX_VALUE,Long.MIN_VALUE,Long.BYTES);System.out.printf(double所能存储的最大值是%f,double所能存储的最小值是%f,double所占据的字节数是%d \n,Double.MAX_VALUE,Double.MIN_VALUE,Double.BYTES);} }浮点类型的使用 在Java程序中直接写出来的浮点类型数据叫字面量/常量/直接量。 浮点类型的字面量可以使用十进制的浮点数和科学计数法两种方式表示。 浮点类型的字面量默认是double类型如果需要表示float类型的字面量需要在float类型字面量的结尾添加F或f。 package com.baidou.java.syntax.primitivetype;/*** ClassName: FloatVariableTest* Description: 浮点类型的使用* Author: baidou 1433021114qq.com* Date: 2022/5/11 14:49* Version: 1.0*/ public class FloatVariableTest {public static void main(String[] args) {// 十进制双精度浮点数double dblVal 120.0;System.out.println(dblVal: dblVal);// 科学计数法双精度浮点数dblVal 1.2E2; //1.2*10^2System.out.println(dblVal: dblVal);//float fltVal 3.14; 不兼容的类型: 从double转换到float可能会有损失float fltVal 3.14f;System.out.println(fltVal fltVal);double PI 31415926E-7; //31415926*10^-7System.out.println(PI PI);} }浮点类型的精度问题 我们在使用float或者double的时候就会遇到精度问题如果想要浮点数的结果是完全精确的也就是不允许有误差可以使用java.math.BigDecimal类型替换float和double。 package com.baidou.java.syntax.primitivetype;import java.math.BigDecimal;/*** ClassName: FloatPrecisionTest* Description: 浮点类型的精度问题* Author: baidou 1433021114qq.com* Date: 2022/5/11 15:01* Version: 1.0*/ public class FloatPrecisionTest {public static void main(String[] args) {float fltVal 3.1415926f;System.out.println(fltVal fltVal); //3.1415925float floatLeft 2.0f;float floatRight 1.2f;float floatResult floatLeft - floatRight;System.out.println(floatResult floatResult); //0.79999995double doubleLeft 0.1;double doubleRight 0.2;double doubleResult doubleLeft doubleRight;System.out.println(doubleResult doubleResult); //0.30000000000000004// 解决问题的实现方式BigDecimal double1 new BigDecimal(Double.toString(0.1)); //使用String方式传入BigDecimal double2 new BigDecimal(Double.toString(0.2));BigDecimal sum double1.add(double2);System.out.println(sum sum.doubleValue()); //0.3} }3. 字符类型 字符类型就是用于描述单个字符的数据类型在Java语言中使用 ’ ‘一对单引号将字符字面量包裹起来例如 ‘男’、’\n’、\u4e2d’等。 在Java语言中使用char关键字表示字符类型char占据2个字节内存空间并且char没有符号位表示范围是0~65535。 由于现实生活中很少数据使用字符去描述因此以后在开发中更多使用字符串字符串的字面量使用双引号包裹起来字符串类型使用java.lang.String表示。 String name 李雷; String address 河南省昆明市;计算机底层只能识别0和1组成的二进制序列对于’男’、‘\n’、\u4e2d’等字符不能满足该规则因此字符数据不能直接在计算机中存储但是现实生活中又有这个需求为了能够让这些字符数据存储在计算机中可以给这些字符指定一个编号这个编号就是ASCII 字符 ‘a’ 对应的ASSCII编码是97字符 ‘A’ 对应的ASSCII编码是65字符 ‘0’ 对应的ASSIC编码是48字符 空格 对应的ASSIC编码是32字符换行符对应的ASSIC编码是10 字符类型的使用 package com.baidou.java.syntax.primitivetype;import java.nio.charset.Charset;/*** ClassName: CharacterASCIITest* Description: ASCII字符集的使用* Author: baidou 1433021114qq.com* Date: 2022/5/11 19:40* Version: 1.0*/ public class CharacterASCIITest {public static void main(String[] args) {char aVal a;System.out.println(aVal aVal);System.out.println(字符a对应的编码是 (int) aVal); //97// UTF-8兼容ASCII码System.out.println(当前JVM采用的编码是 Charset.defaultCharset()); //UTF-8} }Unicode字符集的概念和使用 Java的字符类型是采用Unicode字符集每套字符集都至少有一套编码例如Unicode字符集有UTF-8、UTF-16等。 Unicode字符集是国际组织指定可以容纳世界上所有国家的文字和符号的字符集解决方案因此Java程序可以支持各种语言的字符。 package com.baidou.java.syntax.primitivetype;/*** ClassName: CharacterUnicodeTest* Description: Unicode* Author: baidou 1433021114qq.com* Date: 2022/5/11 19:40* Version: 1.0*/ public class CharacterUnicodeTest {public static void main(String[] args) {//Unicode编码支持中文char chinese \u4e2d;System.out.println(chinese chinese);System.out.println(该字符对应的UTF-8编码的编号是 (int)chinese);} } 转义字符的使用 在日常生活中会使用以下的转义字符 \n 换行\t 制表符(tab)\\ 路径转义\’ 转义单引号\ 转义双引号 4. 布尔类型 布尔类型是用于描述真假信息的布尔类型boolean的字面值取值只能是true或者false。 布尔类型占据一个字节的内存空间 package com.baidou.java.syntax.primitivetype;/*** ClassName: CharacterUnicodeTest* Description: Unicode* Author: baidou 1433021114qq.com* Date: 2022/5/11 19:40* Version: 1.0*/ public class CharacterUnicodeTest {public static void main(String[] args) {//Unicode编码支持中文char chinese \u4e2d;System.out.println(chinese chinese);System.out.println(该字符对应的UTF-8编码的编号是 (int)chinese);} }5. 数据类型转换 按精度排序byte - short/char - int - long - float - double (小-大) 隐式自动类型转换显示需要强制类型转换精度会丢失。 注自动数据类型转换不代表不会发生精度丢失。 示例强制类型转换 short a 1; short b 2; short c (short)ab; //强转:大-小 // 因为JVM虚拟机把byte、short的运算都转成int了。示例精度丢失 double d1 0.1; double d2 0.2; double d3 d1 d2; //0.30000000000000004 //基本数据类型不适合做高精度运算如 航天、医疗、金融等解决方案使用高精度数字BigDecimal)七、运算符 运算符用于指明对操作数的运算方式在Java程序中运算符有算数运算符、关系运算符、逻辑运算符、赋值运算符、三目运算符、位运算符。 1. 算数运算符 算数运算符有(加)、-减、*乘、/除、%取模/求余数、自增、--自减。 先乘除后加减可以使用小括号 () 改变运算优先级。 对于字符串也可以使用 进行字符串连接操作。 2. 赋值运算符 赋值 将右侧的数据赋值给左侧 加等于 减等于- 乘等于* 除等于/ 模等于% 3. 关系运算符 大于小于等于 ! 不等于大于等于 小于等于 instanceof(用于测试左边的对象是否是它右边类的实例)。4. 逻辑运算符 逻辑与()运算符前后的操作数都必须是true运算结果返回true否则返回false。短路与()运算符前后的操作数都必须是true运算结果返回true否则返回false附加了短路的特性。逻辑或( | )运算符前后的操作数只有一个为true运算结果返回true否则返回false。短路或( || )运算符前后的操作数只有一个为true运算结果返回true否则返回false附加了短路的特性。逻辑非(!)取反比如 操作数为true时逻辑非的运算结果为false逻辑非只有一个操作数。逻辑异或(^)当两个操作数不同的时候返回true当两个操作数相同的时候返回false。 日常开发中经常使用的逻辑运算符是短路与()、短路或( || )、逻辑非( ! )。 逻辑运算符的操作数都是布尔类型的例如布尔类型的字面量啊、变量、表达式。 逻辑运算符的运算结果也是布尔类型的true或者false。 逻辑运算符的短路特性 逻辑运算符的短路特性当已经明确逻辑运算的最终结果就不会再执行剩余的表达式这样可以提升程序的性能。 1、短路与 package com.baidou.java.operator.logic;/*** ClassName: ShortCircuitAnd* Description: 短路与* Author: baidou 1433021114qq.com* Date: 2022/5/12 08:43* Version: 1.0*/ public class ShortCircuitAnd {public static void main(String[] args) {int left 10;int right 20;/*left10 false left11因为短路与前面的表达式结果为false,根据短路特性( right-- 20就不会执行) 所以right20*/boolean result left 10 right-- 20;System.out.println(result result); //falseSystem.out.println(left left); // 11System.out.println(right right); // 20} }2、短路或 package com.baidou.java.operator.logic;/*** ClassName: ShortCircuitOr* Description: 短路或* Author: baidou 1433021114qq.com* Date: 2022/5/12 09:12* Version: 1.0*/ public class ShortCircuitOr {public static void main(String[] args) {int left 10;int right 20;boolean result left 10 || right-- 20;System.out.println(result result); //falseSystem.out.println(left left); // 11System.out.println(right right); // 20} }逻辑运算符判断四位数 四位数大于等于1000 And 小于等于 9999 package com.baidou.java.operator.logic;/*** ClassName: ShortCircuitAndTest* Description: 逻辑运算符判断四位数* Author: baidou 1433021114qq.com* Date: 2022/5/12 09:20* Version: 1.0*/ public class ShortCircuitAndTest {public static void main(String[] args) {int num 8888;System.out.println(num1000 num9999 (num 1000 num 9999));num 888;System.out.println(num1000 num9999 (num 1000 num 9999));} }5. 三目运算符 语法: 表达式1?表达式2:表达式3; //用来简化if-else的使用6. 位运算符 按位与()按照二进制位进行与运算同1为1否则为0 10-000-0 按位或(|)按照二进制位进行或运算同1为1同0为0 按位取反(~)按照二进制位取反1为00为1 按位异或(^)按照二进制位进行异或运算相同为0不同为1 左移() 例如1左移1位相当于乘2 右移() 例如1右移1位相当于除以2 八、Scanner 1. 如何学习Java API 学习方法阅读 Java API文档 或者 查看 Java API源码 。 Java API 的介绍 我们学习Java语言主要是学习Java提供的日常开发Java项目中经常使用的API(如类、接口、枚举、注解)。 在IntelliJ IDEA的编译器中按住Ctrl键然后选中类名便会自动跳转对应的源代码文件。 Java API源文件位于src.zip文件中Java API字节码文件位于rt.jar文件中。 Java常用的包 java.io IO操作java.lang 语言基础、反射java.math 数学运算java.net 网络编程java.nio 异步IO编程java.sql 数据库编程java.text 文本格式化java.time 日期/时间java.util 集合、并发、函数式编程、Stream编程、正则表达式、日志 Java API文档的使用 通过阅读Java API文档的方式学习它的使用。 Java8 API文档https://docs.oracle.com/javase/8/docs/api/index.html Java API文档使用JDK提供的javadoc工具生成的。 以java.lang包下的String类为例 Java API源码的使用 使用INtellij IDEA查看Java API源码的步骤 1、双击shift打开搜索框然后搜索对应的API 源文件*.java 2、点击左下角的Structure查看该类的结构m方法、f字段 如果想要查找某个具体的方法可以按CtrF12列出当前类中所有的方法然后搜索你想要的方法即可 2、Scanner的使用 Scanner用于接收键盘输入数据使用前需要导包import java.util.Scanner; 语法如下 // 创建扫描器对象 Scanner in new Scanner(System.in); in.next(); 接收字符串,不接收空格 in.nextLine(); 接收字符串,识别空格 in.nextInt(); 接收数字 ......九、程序流程控制 程序的执行流程分为三种结构顺序结构、分支结构、循环结构。 除此之外还提供了break和continue关键字来控制循环结构 1. 分支结构 目的满足某些条件的时候才执行某段代码(代码块)。 Java中支持两种分支结构if 、switch 。if 用的最多可以代替 switch 。 IF 语句 第一种 IF: if(条件表达式){语句块; }语句块可以是单行语句也可以是复合语句如果是单行语句{}可以省略但最好不要省略整个 if 是一个逻辑语句因此不能直接在 if 后面加分号。 示例if语句的使用 int age 19; if(age18){System.out.println(你成年了); }第二种 IF : if((条件表达式){语句1; }else{语句2; } 示例if-else的使用 int score 80; if (score 60) {System.out.println(合格);} else {System.out.println(尚未合格);} }第三种 IF: if((条件表达式1){语句1; }else if(表达式2){语句2; } ... else{语句n; } 有点像一给我里giao giao那鬼东西。 示例if-else if-else的使用 int score 80;if (score 60){System.out.println(不及格); } else if(score 60 score 70 ){System.out.println(及格); }else if (score70score80){System.out.println(一般); }else if (score80score90) {System.out.println(中等); }else{System.out.println(优秀); }IF 嵌套 if((条件表达式1){if((条件表达式2){语句1;}else{语句2;} }else{语句3; }SWITCH 语句 switch(条件表达式) {case 条件1:语句1;break;case 条件2:语句2;break;...default:语句; }switch语句中支持的变量类型有byte、short、int或者char。从jdk7开始switch语句支持字符串String类型了同时 case 标签必须为字符串常量或字面量。 2. 循环结构 根据循环条件判断来重复执行某段代码(代码块)Java中支持四种循环结构分别是for循环、while循环、do-while循环以及JDK5.0以后新增的foreach。 WHILE循环 while(条件表达式){循环体 }先判断条件表达式如果条件表达式为ture就会执行循环体执行完循环体会再次判断条件表达式......直到条件表达式为false时结束循环。例如while循环的使用 // 从10数到0 int i 10; while (i0) {System.out.println(白豆五i);i--; } System.out.println(while结束);控制台输出如下: 白豆五10 白豆五9 白豆五8 白豆五7 白豆五6 白豆五5 白豆五4 白豆五3 白豆五2 白豆五1 白豆五0 while结束// 统计0到10的和 int j 0; int sum 0; //创建一个临时变量用于加和操作 while (j 10) {sum j;j; } System.out.println(sum); //55// 用while循环实现从5打印到11 int y 5; while(y 11) {System.out.println(y);y; }do-while 循环 do{循环体 }while(条件表达式);两者的区别while先判断后执行do-while是先执行后判断。 FOR循环 既 WHILE 何生 FOR while 、do…while 、for 都可以实现循环可以互换。不同的需求用不同语法难易程度不同。使用频率for while do…while 。 for 循环语法如下 for(表达式1;表达式2;表达式3) {循环体; }(1)先执行表达式1,它只会执行一次。 (2)执行表达式2,如果该表达式2结果为真,执行循环体,然后执行下面第(3)部。如果为假,直接结束for循环。 (3)执行表达式3,然后跳到第(2)步重新执行。用while表示for 表达式1; while(表达式2) {循环体;表达式3; } 示例for循环的使用 // 打印10个数 for (int i1;i10;i){System.out.print(i\t); // 1 2 3 4 5 6 7 8 9 10 }// 第二种声明 int j 0; //将之前for循环内部的局部变量,丢到循环体外面相当于提权,然后都可以调用这个变量。 for(;j3;j){System.out.println(j); }// 用while等价for int i 0; while (i 10) {System.out.println(i);i; }// 从10倒数到0 for (int i 10; i 0; i--) {System.out.print(i \t); }// 统计0到10的和 int sum 0; for (int i 0; i 10; i) {sum i; } System.out.println(sum);// 打印2 4 6 8 10 for (int y 2; y 10; y y 2) {System.out.println(y); }for-each语句 for(数据类型type 变量x : 遍历对象obj){引用变量x的java语句; }循环嵌套 循环嵌套就是循环里套着循环。此套娃非彼套娃。嵌套循环可以嵌套n层一般也就用两层。 三种循环(while、do…while、for)可以相互嵌套不过使用最多的是for循环嵌套。 示例使用嵌套循环打印99乘法表 for (int i 1; i 9; i) {for (int j 1; j i; j) {System.out.print(j * i (i * j) \t);}System.out.println(); }示例力扣27 // 力扣27题通过双指针来移除数组中的元素 /* 给你一个数组 nums 和一个值 val你需要 原地 移除所有数值等于 val 的元素并返回移除后数组的新长度。不要使用额外的数组空间你必须仅使用 O(1) 额外空间并 原地 修改输入数组。元素的顺序可以改变。你不需要考虑数组中超出新长度后面的元素。*/ public int removeElement(int[] nums, int val) {if (nums null || nums.length 0) {return 0;}int l 0;int r nums.length - 1;while (l r) {while (l r nums[l] ! val) {l l 1;}while (l r nums[r] val) {r r - 1;}int temp nums[l];nums[l] nums[r];nums[r] temp;}System.out.println(Arrays.toString(nums));return nums[l] val ? l : l 1; }// 优解 public int removeElement(int[] nums, int val) {if (nums null || nums.length 0) {return 0;}int j 0;for(int i 0;inums.length;i){if(nums[i]!val){int temp nums[i];nums[i]nums[j];nums[j]temp;j;}}return j; }BREAK和CONTINUE break 和 continue都可以和while、do…while、for 一起用。break强制结束循环。continue不再执行本次循环后面的代码然后继续进行下一次循环。 示例break和continue的使用 //break for (int i0;i5;i){if (i3){break;}System.out.println(i); } 打印结果 0 1 2// continue for (int i0;i5;i){if (i3){continue;}System.out.println(i); } 打印结果 0 1 2 4 5 十、随机数Random 作用产生一个随机数 1、导包 import java.util.Random; 2、创建随机数对象Random r new Rabdom(); 3、获取随机数r.nextInt(n); // nextInt(n)功能只能生成: [0,n之间的随机数包含0不包含n。 示例猜数小游戏 package com.baidou.random; // 导包 import java.util.Random; import java.util.Scanner;/*** 猜数小游戏** author 白豆五* version 2022/6/17 8:55* since JDK8*/ public class RandomDemo {public static void main(String[] args) {// 创建随机数对象Random random new Random();// 生成1-100之间的随机数int ranNumber random.nextInt(100) 1;// 创建键盘输入对象Scanner sc new Scanner(System.in);System.out.println(欢迎使用猜数游戏);while (true) {System.out.println(请输入你要猜的数字(1~100):);int inNumber sc.nextInt();if (inNumber ranNumber) {System.out.println(猜大了);} else if (inNumber ranNumber) {System.out.println(猜小了);} else {System.out.println(猜对了);break;}}System.out.println(程序结束);} }十一、数组 1. 数组的定义 数组是一种数据结构存数据的一种方式它会在连续的内存空间中存储一批相同类型的元素。 例如向数组中存储一批数据 int[] arr {1,2,3,4,5};String[] {张三,李四,王五};**数组的优点**它会自动给数组中的元素从0开始编号,方便操作这些元素。下标从0开始 1.1 静态初始化数组 静态初始化数组的定义格式 //完整版 数据类型[] 数组名 new 数据类型[]{元素1,元素2,元素3,...}; 例如: int[] scores new int[]{55,66,77,88,99};//简化版 数据类型[] 数组名 {元素1,元素2,元素3,...}; 例如: int[] scores {55,66,77,88,99}; System.out.println(scores); //[I4c873330注数组变量名中存储的是数组在内存中的地址,数组是引用类型。 1.2 动态初始化数组 动态初始化定义数组的时候只确定元素的类型和数组的长度之后在存入具体的数据。 1、动态初始化数组的定义格式 数据类型[] 数组名 new 数据类型[元素个数或数组长度];2、动态初始化元素默认值规则 数据类型明细默认值基本类型byte、short、int、long0float、double0.0booleanfalse引用类型类、接口、数组、Stringnull 示例动态初始化数组的定义和使用 public class ArrayDemo2 {public static void main(String[] args) {//动态初始化数组的定义int[] scores new int[3]; //int类型数组默认值: [0,0,0]System.out.println(scores[0]);System.out.println(scores[1]);System.out.println(scores[2]);System.out.println(-----------------);//赋值scores[0]99;scores[1]88;scores[2]77;System.out.println(scores[0]);System.out.println(scores[1]);System.out.println(scores[2]);} }3、数组的几个注意事项 数据类型[] 数组名 也可以写成 数据类型 数组名[]。什么类型的数组只能存放什么类型的数据否则报错。数组一旦定义出来之后它的类型和长度就固定了。 2. 数组的访问 访问数组中的元素数组名称[索引] 获取数组的长度数组名称.length。 数组的最大索引**数组名称.length - 1 **前提元素个数大于0 示例数组的访问 public class ArrayDemo {public static void main(String[] args) {int[] arr {11, 22, 33};// 取值, 格式: 数组名称[索引]System.out.println(arr[0]); //11// 赋值, 格式: 数组名称[索引]数据;arr[0] 111;System.out.println(arr[0]); //111System.out.println(数组长度为:arr.length); //元素个数:3} }3. 数组的遍历 遍历就是一个一个数据的访问。 为什么要遍历搜索、数据统计等等都需要用到遍历。如果数据量过多手动获取就太麻烦了 方式一使用for循环 方式二使用foreachjdk1.5新特性 示例1计算 11,22,33,44,55这5个数的总和。 int[] arr {11,22,33,44,55}; int sum 0; for (int i 0; i arr.length; i) {sumarr[i]; } System.out.println(sum sum); //165示例2查找数组中最大值。 System.out.println(-------begin--------); int[] nums {3, 1, 2, 9, 8, 7}; int max 0; for (int i 0; i nums.length; i) {int n nums[i];if (n max) {System.out.println(n比目前的最大值大max,因此更新最大值为n);max n;}else {System.out.println(n不比目前的最大值max大);} } System.out.println(max); System.out.println(-------end--------);示例3逐位计算两个数组并将值赋给第三数组。 System.out.println(-------begin--------); int[] nums1 {9, 8, 7}; int[] nums2 {3, 1, 2}; int[] nums3 new int[nums1.length]; for (int i 0; i nums1.length; i) {nums3[i] nums1[i] nums2[i]; } System.out.println(Arrays.toString(nums3)); System.out.println(-------end--------);4. 数组的排序 所谓的数组排序就是元素按照升序(由小到大)或者降序( 由大到小)的操作。 数组排序的技术冒泡排序、选择排序、快速排序、插入排序等等。 数组搜索相关的技术二分搜索、分块查找、哈希表查找等等。 4.1 冒泡排序 1、冒泡排序的思想 从头开始两两比较把较大的元素与较小的元素进行交换。每轮把当前最大的一个元素放到数组的尾部。 2、冒泡排序实现的步骤 确定总共需要做几轮数组的长度 - 1。每轮比较几次数组长度 - 1 - i 。 public class BubbleSortDemo1 {public static void main(String[] args) {// 定义一个数组,存储一些数据int[] arr {1, 3, 2, 66, 23, 11};// 1、定义一个循环控制比较的轮数,i0、1、2、3for (int i 0; i arr.length - 1; i) {// 2、定义一个循环控制每轮比较的次数第i轮比较len-i次,j4、3、2、1/*第一轮 4次第二轮 3次第三轮 2次第四轮 1次*/for (int j 0; j arr.length - 1 - i; j) {// 3、交换相邻元素位置if (arr[j] arr[j 1]) {int temp arr[j];arr[j] arr[j 1];arr[j 1] temp;}}}// 遍历数组for (int arrs : arr) {System.out.println(arrs);}} }5 Java内存结构 我们的数据都是存放在内存中Java内存大体可以分为寄存器、堆、栈、方法区、常量池。 程序数据结构算法数据结构存在堆中算法存在方法区中。 堆 由线程共享存放 new 出来的对象或者数组是垃圾回收器的主要工作区域。 栈 线程私有分为 Java 虚拟机栈和本地方法栈存放局部变量表、操作栈、动态链接、方法出口等信息方法的执行对应着入栈到出栈的过程。 方法区 线程共享存放已被加载的类信息、常量、静态变量、即时编译器编译后的代码等信息JDK 1.8 中方法区被元空间取代使用直接内存。 **本地方法栈**Native关键字凡是被Native修饰的方法都会去调用底层的C语言的库会调JNI接口本地方法接口比如java驱动打印机打印 JNI的作用就是为了拓展Java的使用融合不同的语言为Java所用 6. 数组内存结构图 1、变量和数组在内存中表示 public class ArrayMemoryDemo1 {public static void main(String[] args) {int a 66; // 基本数据类型存储的是数据本身System.out.println(a a);int[] arr {11,22,33}; // 引用类型存储的是对象的地址System.out.println(arr arr);arr[0] 10;arr[1] 11;arr[2] 100;System.out.println(arr[0] arr[0]);System.out.println(arr[1] arr[1]);System.out.println(arr[2] arr[2]);} }2、两个数组变量指向同一个数组对象 public class ArrayMemoryDemo2 {public static void main(String[] args) {int[] arr1 {11, 22, 33};int[] arr2 arr1;System.out.println(arr1 arr1); // [I1b6d3586System.out.println(arr2 arr2); // [I1b6d3586System.out.println(arr1[0] arr1[0]); // 11System.out.println(arr2[0] arr2[0]); // 11} }7. 使用数组常见的问题 问题一如果访问元素的位置超过最大索引执行时会出现 数组索引越界异常ArrayIndexOutOfBoundsException。问题二如果数组变量中没有存储数组的地址而是null , 在访问数组信息时会出现NullPointerException (空指针异常)。 8、Debug工具的使用 IDEA自带的断点调试(排错)工具可以控制代码从断点开始一行- -行的执行然后详细观看程序执行的情况。 Debug工具基本使用步骤 1、点击指定代码行的左侧, 形成断点。设置断点 2、选择使用Debug方式启动程序启动后程序会在断点处暂停。 3、控制代码一行一行的往下执行。 思维导图 十二、方法 方法是一种语法结构它可以把一段代码封装成-一个功能以方便重复调用。 我们设计方法的时候最好保持方法的原子性也就是说一个方法只完成一个功能这样利于我们后期的扩展。 12.1 方法的组成 方法由方法名、参数、返回值组成。 方法名是别人调用本命令的标识符。参数是调用方法的时候传递的数据。方法可能没有参数可能有1个或多个参数。返回值是方法调用完成的结果。方法可能没有返回值对于有返回值的方法我们也可以忽略返回值。 修饰符 返回值类型 方法名([参数列表]){方法体(需要执行的功能代码)[return 返回值;] }// 如果方法没有返回值,则把返回值类型改写为void,然后把return xxx;去掉。例如 // 两个数的加和 public int printA(int a,int b){ //这里的a和b指的是形参,用来接收数据return ab; }12.2 方法重载 方法重载就是在一个类中有相同的函数名称但形参不同的函数。 方法重载规则 方法名称必须相同参数列表必须不同 (个数不同类型不同参数排列顺序不同)方法的返回类型可以相同也可以不同仅仅返回类型不同不足以成为方法重载 12.3、方法的调用 1、java静态方法调用有两种方式 使用对象来调用 如new Student().getName();可以直接用类名来调用如Arrays.toString(); 2、非静态方法 (没有static修饰也不是构造方法) 或者叫成员方法 通过对象的方式来调用它。
http://www.hkea.cn/news/14440716/

相关文章:

  • 网站建设的风险预测技校软件开发专业
  • 公司门户网站怎么做360搜索首页网址是多少
  • 西宁做网站君博领先中国建设银行中国网站
  • 小公司网站开发广告策划书前言范文
  • 天津商务网站建设建站网络建立科技开发
  • 网站怎么做跳转链接全网关键词搜索工具
  • 无锡做网站价格市网站开发公司
  • 提供常州网站推广做百度网站每年的费用多少合适
  • 河南海华工程建设监理公司网站建设公司简介怎么写
  • 做网站怎样申请域名做网站片头的软件
  • 用jsp做婚纱网站的流程网站 成品下载
  • 企业网站推广公司 知乎网络营销都具有哪些功能
  • 做图网站大学生兼职手机商城系统总结
  • 如何建立自己的购物网站东莞网站制作公司是什么
  • 沈阳网站公司哪个好外贸采购网官网
  • 襄阳市做网站 优帮云网站建站费用多少钱
  • 同一个ip网站太多 seo阳江公司网站建设
  • 兴宁市住房和城乡规划建设局网站网站建设与管理提纲
  • 网站制作 常见问题我做夫人那些年网站登录
  • 广州有建网站的公司吗专业做网站建设公司好吗
  • 教育类网站怎么做免费发布活动的平台
  • 家居企业网站建设教程自己代理一款手游需要多少钱
  • 网站怎么制作成软件网站怎么做子网页
  • 网站建设企业关键词专业的营销型网站企业文化
  • 男女做暖暖的试看网站网站根目录在哪儿
  • 做网站需要什么准备做网站的
  • 佛山新网站建设信息手工制作大全创意废物利用
  • 网站建设为大学生服务大石桥网站建设
  • 湖北什么网站建设值得推荐临沂百度seo
  • 河北省建设资格执业中心网站企业网站要怎么做