java基础

================================================================

一,初始java

1、为什么学习Java?

(1)用途广泛

(2)入门基础

(3)大数据开发

2、什么是程序?

程序是一种解决某个问题的逻辑。

3、什么是计算机语言?

计算机语言是指人与机器之间交流的工具。

4、Java的体系结构:

(1)Java SE[Standard Edition标准版]

(2)Java EE[Enterprise Edition企业版]

(3)Java ME[Micro Edition微缩版]

5、下载,安装,配置,卸载Java开发环境(JDK)

(1)从官网下载:https://www.oracle.com/java/technologies/downloads/#java8-windows

(2)安装之前确认没有安装任何其他版本的java,在安装过程中一路“下一步”

(3)配置环境变量

    JAVA_HOME=jdk安装目录的路径

    PATH=.;%JAVA_HOME%\bin;.........

(4)测试安装是否成功,检查版本

    打开dos窗口,输入以下命令:

    java -version

    正常情况下显示

    java version "1.8.0_251"

    Java(TM) SE Runtime Environment (build 1.8.0_251-b08)

    Java HotSpot(TM) 64-Bit Server VM (build 25.251-b08, mixed mode)

6、开发Java程序分三步:

(1)通过Notepad【记事本】编写程序文件,文件名必须要以“Xxx.java”命名,其中Xxx与class后单词一致

(2)通过javac命令编译程序文件并生成以Xxx.class命名的字节码文件

(3)通过java命令运行字节码文件,运行时不需要指定后缀后.class

7、Java虚拟机不跨平台,对于不同的操作系统需要安装不同版本的Java虚拟机

8、在编译java源程序文件之后生成的java字节码文件是跨平台的,即一个class文件可以任意一台计算机中的java环境中运行

9、Java程序内容,功能是在屏幕上输出Hello World!!!:

public class HelloWorld{

  public static void main(String[] args){

    System.out.println("Hello World!!!");

  }

}

10、print()与println()的区别:

    前者在输出后没有空行,后者在输出后会有空行

11、\n表示换行,\t表示制表符【相当于8个空格宽度】

12、注释:在程序文件中用来说明代码的文本

(1)单行注释://注释文本

(2)多行注释:/*注释文本*/

13、编写代码时的规范性:

(1)每行只写一条代码

(2){}必须配对

(3)每行代码必须通过空格缩进

14、清屏:cls

15、退出:exit

16、IDE【Integrated Development Environment】集成开发环境,即把编写,编译,运行等工作集为一体的工具软件

17、安装,卸载IntelliJ IDEA

18、使用方法:

(1)界面的修改File->Settings->Appearance & Behavior->Appearance=>Theme

(2)字体的修改File->Settings->Editor->General=>Mouse:Change font size [Zoom] with Ctrl+Mouse Wheel

    或者File->Settings->Eidtor->Font=>Size

(3)自动生成程序框架:psvm 或 main

(4)自动生输出语句:sout

(5)复制代码行:ctrl+d

(6)删除代码行:ctrl+y

(7)撤消操作:ctrl+z

(8)插入新行:shift+enter【下插新行】,ctrl+alt+enter【上插新行】

(9)移动代码行:ctrl+shift+↑或↓【向上或下移动】

(10)打开或隐藏工程窗口:alt+1

(11)隐藏运行窗口:shift+esc

19、运用包【子目录】管理java文件

(1)编写:创建包:package aaa.bbb.ccc;必须首行

(2)编译:javac -d . HelloWolrd.java

(3)运行:java aaa.bbb.ccc.HelloWorld

20、在cmd中打包的运行方式

【不能直接运行】

(1)jar -cvf hello.jar aaa

(2)java -cp hello.jar aaa.bbb.ccc.HelloWorld

【可直接运行】

(1)jar -cvfe world.jar aaa.bbb.ccc.HelloWorld aaa

(2)java -jar world.jar

21、在idea中打包的运行方式

(1)File->Project Structure...->Artifacts->"+"->jar->From modules with dependencies...->Main Class->OK->Apply->OK

(2)Build->Build Artifacts->Build

(3)out\artifacts\xxx_jar\xxx.jar->show in explorer

================================================================

二,变量与数据类型

学习内容:

0、快捷键:

(1)单行注释开关:ctrl+/

(2)多行注释开关:shift+ctrl+/

(3)格式对齐:ctrl+alt+l(字母)

(4)大小写切换:ctrl+shift+u

(5)提示不区分大小写:File->Settings->Editor->General->Code Completion->Match case 把勾去掉

(6)变量替换:shift+f6

(7)方法参数提示:ctrl+p

(8)自动完成输出:.sout

(9)自动完成声明:.var

(10)自动修正错误:alt+enter

1、变量是指不确定的数据

2、变量的重要属性:名称,类型,数据

3、变量名称的命名规则:

(1)可由以下字符构成:字母符a-zA-Z,下划线_,美元符$,数字符0-9

(2)数字不能开头

(3)骆驼大小写:从第二个单词开始每个单词的首字母大写,比如studentName,gradeAndClassId

(4)见名知义;myName,studentNumber

(5)不能使用关键字,即java中的保留字

4、数据类型是指对于数据的分类

5、数据类型的分类:

(1)数值类型之整型:byte[1],short[2],int[4],long[8],表示的数值范围不同

(2)数值类型之浮点型:float[4],double[8],表示的数值范围和精度不同

(3)非数值类型之字符型:char[2],表示一个字符,采用单引号界定

(4)非数值类型之字符串型:String,表示一个以上的字符序列,采用双引号界定

6、在输出时可通过“+”连接需要输出的数据,应用于非数值类型与任意类型之间的连接

7、在程序中使用变量

(1)声明变量:数据类型 变量名称;

(2)赋值变量:变量名称 = 数据;

(3)调用变量:通过“变量名”调用变量中的数据

8、常量

(1)一种特殊的变量,其数据不能更改

(2)常量名称通常采用全大写形式,若是复合单词则采用下划线分隔

(3)声明方式:final 数据类型 常量名称 = 数据;

9、键盘输入

(1)导入:import java.util.Scanner;

(2)创建:Scanner input = new Scanner(System.in);

(3)输入:Xxx yyy = input.nextXxx();

(4)关闭:input.close();

10、nextLine()可以清理输入缓冲区中的回车符

11、自动类型转换

(1)int可自动转换为double

(2)规则一:double至上

(3)规则二:目标类型要大于源类型且要兼容

12、强制类型转换,目标类型必须与源类型兼容

13、包含赋值运算符【=】的表达式称为赋值表达式:变量名=表达式

14、两个数据之间的交换

15、算术运算符:+【和】-【差】*【积】/【商】%【模】++【递增+1】--【递减-1】

16、++和--若出现在其他语句中或赋值表达式中则前置表示“先运算后使用”,后置表示“先使用后运算”,如果是单独语句则无论前置还是后置没有区别

17、赋值算术运算符+=,-=,*=,/=,适用于变量自身的运算

18、布尔类型数据boolean:true【真,成立】,false【假,不成立】

19、关系运算符:==【等于】!=【不等于】>【大于】<【小于】>=【大于等于】<=【小于等于】,结果是boolean值

20、逻辑运算符:

(1)非运算:!true==false !false==true

(2)与运算:true  && true【true】(记住:两个都为真则为真,有一个为假则为假) 

            true  && false【false】

            false && true【false】

            false && false【false】

(3)或运算:true  || true【true】(记住:两个都为假则为假,有一个为真则为真)

            true  || false【true】

            false || true【true】

            false || false【false】   

(4)优先级:非-》与-》或

(5)短路与:A&&B,当A为假时不计算B

    短路或:A||B,当A为真时不计算B

21、条件运算符:

    条件表达式 ? 表达式1 : 表达式2

    条件表达式包括布尔表达式,关系表达式,逻辑表达式,因为只有这三类表达式的结果是布尔值

    意义:如果条件表达式返回真则计算并返回表达式1的结果,否则计算并返回表达式2的结果

22、所有运算符优先级:小括号 -》算术 -》关系 -》逻辑 -》赋值

================================================================

三,选择结构

0、快捷键:

(1)ctrl+alt+t:结构化代码块

1、简单选择结构

if(条件表达式){

  语句块;

}

意义:如果条件表达式返回真那么执行语句块。

2、流程图符号:

(1)圆角矩形:开始或结束

(2)直角矩形:计算处理

(3)平行四边形:输入或输出

(4)菱形:选择判断

(5)圆圈:连接

(6)箭头线:执行方向

3、二选一选择结构

if(条件表达式){

  语句块1;

}else{

  语句块2;

}

意义:如果条件表达式返回真那么执行语句块1,否则执行语句块2。

4、多重选择结构

if(条件表达式1){

  语句块1;

}else if(条件表达式2){

  语句块2;

}

......

else if(条件表达式n){

  语句块n;

}else{

  语句块n+1

}

意义:自上而下依次判断每个条件表达式,如果其中任一个条件成立那么执行对应的语句块,其下的条件将不再进行判断并跳过

5、嵌套选择结构:把简单选择结构,二选一选择结构,多重选择结构进行综合使用,通常解决不同类型条件的问题

6、字符串的比较,判断指定的两个字符串是否相等,通过字符串的equals()方法,如果返回true则相等,返回false则不相等

7、Math.random()产生的随机数介于0【包括】与1【不包括】之间,产生0-9之间的随机数

  int random = (int) (Math.random() * 10);

8、多路选择结构:变量类型只能是:char,byte,short,int,String,只能解决等值判断问题

switch(变量){

  case 值1:

    语句块1;

    break;

  case 值2:

    语句块2;

    break;

  ......

  default:

    语句块n+1

}

注意case后面的值不能出现相同的情况

================================================================

四,循环结构

0、快捷键的创建

File=>settings...=>搜live template或postfix completion

1、所谓循环是指一种重复性的动作

2、循环的要素:循环条件,循环操作

3、while循环,语法:

while(条件){

  语句块;

}

意义:只有当条件为true时才执行语句块,否则跳过while语句

常用结构:

(1)声明计数器

(2)确定循环条件

(3)确定循环体

(4)改变计数器

比如

int i=0;

while(i<n){

  循环操作;

  i++;

}

4、do-while循环,语法:

do{

  语句块;

}while(条件);

常用结构:

int i=0;

do{

  循环操作;

  i++;

}while(i<n);

5、while与do-while的区别

(1)语法不同

(2)执行顺序不同:while是先判断后执行,do-while是先执行后判断

6、for循环

语法:

for(初始化;条件判断;更新){

  语句块;

}

意义:初始化只有在第一次执行时被执行,然后进行条件判断,若为true则执行语句块并进行计数器更新再重复执行条件判断,若为false则跳过for语句

7、无论哪一种循环在执行过程中需要中断则采用break处理

================================================================

五,多重循环及程序调试

1、多重循环是指在一个循环当中嵌套另一个循环

2、双重循环常见用法:

(1)外层循环控制行

(2)内层循环控制每行中的列

3、break语句的用法:

(1)通常用于switch语句或while语句或do-while语句或for语句,表示退出【break】当前最近的一层switch或循环

(2)通常不要放在语句块的最后一行

(3)通常与选择结构语句配合使用

4、continue语句的用法:

(1)通常用于while语句或do-while语句或for语句,表示结束本次循环并继续【continue】下一次循环

(2)通常不要放在语句块的最后一行

(3)通常与选择结构语句配合使用

5、break跳过循环最后一行,continue跳到循环最后一行

6、return表示结束当前程序的执行

7、break退出当前循环,return退出当前程序

8、程序调试【Debug】是指跟踪程序的执行并找到可能发生错误的位置

9、程序调试的步骤:

(1)设置断点

(2)单步跟踪

(3)观察变量

================================================================

六,一维数组

1、变量可以存储一个数据,而数组可以存储一批数据。

2、数组的基本要素

(1)数组名称(标识符)

(2)数组类型(元素类型)

(3)数组长度(元素数量)

(4)数组下标(元素位置,必须从0开始编号,也称为索引)

注:元素是指保存在数组中的每个数据

3、使用数组的步骤:

(1)声明数组:

    数据类型[] 数组名称;

(2)创建数组:

    数组名称 = new 数据类型[数组长度];

(3)添加元素

    数组名称[数组下标] = 数据;

(4)调用元素

    通过“数组名称[数组下标]”获取数组元素

4、不同类型的数组在创建后有不同的默认值

(1)byte,short,int,long是0

(2)float,double是0.0

(3)boolean是false

(4)char是空字符(注意:不是空格,是'\u0000')

(5)String是空(注意:使用null表示空引用)

5、在已知数组元素的前提下创建数组

(1)数据类型 数组名称 = new 数据类型[]{元素1,元素2,...};

(2)数据类型 数组名称 = {元素1,元素2,...};

(3)通过键盘输入与循环语句实现数组元素赋值

6、通过“数组名称.length”获取数组的长度

7、通过大括号初始化数组的操作必须要与声明数组在同一条语句中

8、通过数组和循环找出一组数据中的最大值或最小值

9、插入数值的步骤:

(1)准备已排序的数组

(2)把插入数值依次与每个元素比较并找到插入位置

(3)把数组中从后向前每个元素依次向后移位

(4)把插入数值赋值到插入位置

================================================================

七,二维数组

1、冒泡排序算法过程【默认按照从左向右升序排列】:

初始化:16,25,9,90,23

第1趟:16,25,9,90,23->16,9,25,90,23->16,9,25,90,23->16,9,25,23,90

第2趟:9,16,25,23,90->9,16,25,23,90->9,16,23,25,90

第3趟:9,16,23,25,90->9,16,23,25,90

第4趟:9,16,23,25,90

总结:

(1)5个数比较4趟

(2)第1趟比较5个数并且相邻比较了4次

    第2趟比较4个数并且相邻比较了3次

    第3趟比较3个数并且相邻比较了2次

    第4趟比较2个数并且相邻比较了1次

(3)n个数需要比较n-1趟

    第k(1到n-1之间)趟比较n+1-k个数并且相邻比较了n-k次

(4)自左向右,两两比较,小的在前,大的在后

****

***

**

*

i  j

0  4

1  3

2  2

3  1

  5-i-1

把i看成比较的趟数

把j看成每趟比较的次数

2、处理数组运算的对象java.util.Arrays【学过的对象:String,System,Math,Scanner】

(1)比较两个数组是否相等:boolean equals(T[],T[]);只有当两个数组的类型,长度及相应位置的元素均相等才返回true,否则返回false

(2)对指定数组中的元素按升序排列:void sort(T[]);如果需要降序排列可通过*(-1)的方法实现

(3)把数组转换为默义格式字符串[,]:String toString(T[]);如果需要特定格式就要自己实现

(4)按指定值初始化数组:void fill(T[],T);

(5)复制并创建新的数组并可指定新的长度:T2[] copyOf(T1[],int);

(6)在已按升序排列的数组中查找指定元素的位置:int binarySearch(T[],T);如果没有找到返回-1,如果需要不排序的前提下查找就要通过循环和判断自己实现

3、二维数组【本质上是以一维数组做为元素的一维数组】

(1)声明:数据类型[][] 数组名;

(2)创建:数组名 = new 数据类型[长度1][长度2];【注:(1)(2)两步可以合并,长度2可省略】

(3)赋值:数组名[长度1][长度2] = 值;【注:长度1是行下标,长度2是列下标】

(4)使用:通过“数组名[长度1][长度2]”调用指定元素

4、实现以下二维数组

1  2  3  4  5

6  7  8  9  10

11 12 13 14 15

16 17 18 19 20

21 22 23 24 25

*****

*****

*****

*****

*****

i  j

0  5

1  5

2  5

3  5

4  5

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容