Java学习笔记(第一阶段)

一.Java语言的重要特点

1. 面向对象的(opp)
2. 健壮的
3. 跨平台性的(一个编译好的.class文件可以在多个系统下运行)
4. 解释性语言

二、Java核心机制-Java虚拟机

1. JVM基本介绍

(1)全称:Java virtual machine(Java虚拟机)
(2)JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令、管理数据、内存、寄存器,包含在JDK中
(3)对于不同的平台,有不同的虚拟机
(4)实现“一次编译,到处运行”

2. JDK基本介绍

(1)全称:Java development kit(Java开发工具包)
(2)JDK=JRE+JAVA的开发工具【Java,javac,javadoc,javap】
(3)JDK包含了Java开发工具,也包括了JRE

3. JRE基本介绍

(1)全称:Java runtime environment(Java运行环境)
(2)JRE=JVM+Java的核心类库
(3)包括Java虚拟机和Java核心类库。若要运行开发好的Java程序,只需安装JRE即可

三、Java开发快速入门

1. 运行原理

在这里插入图片描述

2. 注意事项

(1)源文件以.java为扩展名,基本组成部分是类
(2)Java程序执行入口为main()方法,其固定格式为:public static void main(String[] args){…}
(3)Java语言严格区分大小写
(4)源文件中最多包含一个public类,其他类个数不限
(5)文件名必须为public类类名
(6)可将main方法写在非public类中,指定运行非public类,这样入口方法就为非public的main方法

四、Java转义字符

  在控制台,输入tab键,可以实现命令补全
  \t:一个制表位,实现对齐的功能
  \n:换行符
  \\:一个\
  \":一个"
  \':一个'
  \r:一个回车

五、注释

1. 注释类型

(1)单行注释 //(2)多行注释/* /(3)文档注释/* */

2. 细节

(1)多行注释里不允许有多行注释嵌套

六、代码规范

  1. tab默认整体向右移动,shift+tab整体向左移
  2. 运算符和=两边习惯各加一个空格
  3. 行宽度不超过80字符

七、变量

1. 概念
       变量相当于内存中一个数据存储空间
2. 使用注意事项

(1)变量表示内存中的一个存储区域,类型不同,占用空间大小不同
(2)变量必须先声明再使用
(3)变量三要素:变量名+值+数据类型
(4)程序中+的使用:左右两边都为数值型时,做加法运算;左右两边有一方为字符串时,则做拼接运算

3. 数据类型

(1)基本数据类型:数值型【byte,short,int,long,float,double】,字符型【char】,布尔型【boolean】
(2)引用类型:【类,接口,数组】

4. 整数类型
类型占用存储空间
byte1字节
short2字节
int4字节
long8字节

使用细节:
(1)整型常量默认为int型,声明long型常量需后加’l’或’L’
(2)1byte=8bit

5. 浮点类型
类型占用存储空间
单精度float4字节
双精度double8字节

使用细节:
(1)浮点型常量默认为double型,声明float型常量需后加’f’或’F’
(2)通常情况下,应该使用double型,它比float型更精确
javaAPI文档:
API(应用程序接口)

6. 字符类型
 	使用细节:
(1)char类型占用2个字节
(2)char本质是一个整数,在输出时,是unicode码对应的字符,char类型是可以进行运算的
7. 布尔类型
 	使用细节:
(1)boolean类型占用1个字节
(2)boolean类型只允许取值true和false
8. 基本数据类型转换

在这里插入图片描述

自动类型转换

(1)概念:在Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的类型
(2)细节:

  • 自动提升原则:表达式结果的类型自动提升为操作数中的最大类型
  • 多种类型混合运算时,系统首先自动将数据转换为容量最大的那种数据类型,载进行计算
  • (byte,short)和char之间不会相互转换
  • byte,short,char他们可以计算,在计算时首先转换为int
  • boolean不参与转换

强制类型转换
(1)概念:将容量大的数据类型转换为容量小的数据类型,需加上强制转换符()
(2)细节:

  • 强制符号只针对最近的操作数有效
  • char类型可以保存int的常量值,但不能保存int的变量值
  1. 基本数据类型和string类型的转换
    (1)基本类型转string类型:将基本类型的值+“”即可
    (2)string类型转基本数据类型:通过基本类型的包装类调用parseXX方法即可

八、运算符

1. 算术运算符

在这里插入图片描述
细节:
对于除号“/”,整数之间做除法时,只保留整数部分而舍弃小数部分

2. 关系运算符【比较运算符】

在这里插入图片描述

3. 逻辑运算符

1)a&b : & 叫逻辑与:规则:当 a 和 b 同时为 true ,则结果为 true, 否则为 false
2) a&&b : && 叫短路与:规则:当 a 和 b 同时为 true ,则结果为 true,否则为 false
3) a|b : | 叫逻辑或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
4) a||b : || 叫短路或,规则:当 a 和 b ,有一个为 true ,则结果为 true,否则为 false
5) !a : 叫取反,或者非运算。当 a 为 true, 则结果为 false, 当 a 为 false 是,结果为 true
6) a^b: 叫逻辑异或,当 a 和 b 不同时,则结果为 true, 否则为 false

细节:
&&短路与:如果第一个条件为false,则第二个条件不会判断(常用)
&逻辑与:不管第一个第一个条件如何,第二个条件都要判断
(短路或与逻辑或与上述特点相同)

4. 赋值运算符

细节:
运算顺序
&逻辑与:不管第一个第一个条件如何,第二个条件都要判断
(短路或与逻辑或与上述特点相同)

5. 三元运算符

基本语法:
条件表达式?表达式1:表达式2
运算规则:
1.如果条件表达式为true,运算后的结果是表达式1
2.如果条件表达式为false,运算后的结果是表达式2

6. 运算符优先级

在这里插入图片描述

九、程序控制结构

1. 顺序控制

程序从上到下逐行执行

2. 分支控制

(1)单分支
(2)双分支
(3)多分支
(4)嵌套分支
(5)switch分支

基本语法:
switch(表达式){
case 常量1:
语句块1;
break;
case 常量2:
语句块2;
break;

default:
default语句块;
}
细节:
(1)case子句中的值必须是常量,而不能是变量
(2)当没有匹配的case时,执行default
(3)如果没有写break,程序会顺序执行到switch结尾
(4)表达式中表达式的返回值必须是(byte,short,int,char,enum[枚举],string)

3. 循环控制

(1)for循环控制

基本语法:
for(循环变量初始化;循环条件;循环变量迭代){
循环操作(可以多条语句);
}
细节:
(1)for(;循环判断条件;)中省略的内容可以写到其他地方,但分号不能省略
(2)当循环变量初始化和变量迭代有多条语句时,中间用逗号隔开

(2)while循环控制

基本语法:
while(循环条件){
循环体(语句);
循环变量迭代;
}

(3)do…while循环控制

基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
细节:
(1)先执行,后判断,一定至少会执行一次

(4)多重循环控制

基本语法:
循环变量初始化;
do{
循环体(语句);
循环变量迭代;
}while(循环条件);
细节:
(1)先执行,后判断,一定至少会执行一次

4. 跳转控制语句-break

用来终止某个语句块的执行

5. 跳转控制语句-continue

用于结束本次循环,继续执行下一次循环

6. 跳转控制语句-return

用于跳出所在的方法

十、数组、排序、查找

1. 数组

(1)数组介绍
数组可以存放多个同一类型的数据,数组也是一种数据类型,是引用类型。
(2)数组使用

使用方法1:动态初始化
定义:数据类型 数组名{} = new 数据类型[大小]
声明数组:数据类型 数组名[]/ 数据类型[] 数组名;
创建数组:数组名=new 数据类型[大小]
使用方法2:静态初始化
初始化数组:数据类型 数组名[]={元素值,元素值…}

(3)注意事项和细节

(1)数组创建后,如果没有赋值,有默认值int 0,short 0,byte 0,float 0.0,double 0.0,char \u0000,boolean false,string null
(2)数组属引用类型,数组型数据是对象(object)

(4)数组赋值机制

(1)基本数据类型赋值,值为具体数据,且相互不影响
(2)数组在默认情况下是引用传递,赋的值是地址

(5)数组拷贝

(1)基本数据类型赋值,值为具体数据,且相互不影响
(2)数组在默认情况下是引用传递,赋的值是地址

2. 排序

冒泡排序法

基本思想:
排序序列从后往前,依此比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部

3. 查找

(1)顺序查找
(2)二分查找(待补充)

4. 二维数组

(1)数组使用

使用方法1:动态初始化
语法:类型[][] 数组名 = new 类型[大小][大小]
在这里插入图片描述
先声明:类型 数组名[][];再定义:数组名=new 类型[大小][大小]
使用方法2:静态初始化
定义:类型 数组名[][]= {{值1,值2…},{值1,值2…},…}

(2)使用细节

二维数组声明方式有:int[][] y/int[] y[]/int y[][]
二维数组实际上是由多个一维数组组成的,各个一维数组的长度可以相同,也可以不同。


版权声明:本文为zbq147258_原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。