注释:其实就是对代码的解释和说明的文字,不会参与程序的编译和运行
注释分类:
单行注释 //
多行注释 /* /
文档注释 /* */
关键字的特点
关键字是指被java语言赋予了特殊含义的单词
关键字的字母全部小写。 常用的代码编辑器对关键字都有高亮显示,比如现在我们能看到的public、class、static等。
常量:在程序运行过程中,其值不可以发生改变的量
Java中的常量分类:
1 、字符串常量 用双引号括起来的多个字符(可以包含0个、一个或多个),例如"a"、“abc”、"中国"等
2、 整数常量 整数,例如:-10、0、88等
3、 小数常量 小数,例如:-5.5、1.0、88.88等
4、 字符常量 用单引号括起来的一个字符,例如:‘a’、‘5’、‘B’、'中’等
5、 布尔常量 布尔值,表示真假,只有两个值true和false
6、 空常量 一个特殊的值,空值,值为null
字节的概述
我们知道计算机是可以用来存储数据的,但是无论是内存还是硬盘,计算机存储设备的小信息单元叫“位 (bit)”,我们又称之为“比特位”,通常用小写的字母”b”表示。而计算机中基本的存储单元叫“字节(byte)”,
通常用大写字母”B”表示,字节是由连续的8个位组成。
1B(字节) = 8bit
1KB = 1024B
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB
数据类型的概述
Java是一个强类型语言,对于每一种数据都给出了明确的数据类型,不同的数据类型也分配了不同的内存空间,所以 它们表示的数据大小也是不一样的。在Java中的数据类型包括基本数据类型和引用数据类型两种。
Java中的基本数据类型内存占用和取值范围:
在java中整数默认是int类型,浮点数默认是double类型
赋值运算符的书写
赋值运算符的作用是将一个表达式的值赋给左边,左边必须是可修改的,不能是常量。
关系运算符:
也叫比较运算符,是用来两个数据之间进行比较运算的,运算结果都是布尔值 true 或者 false 。
关系运算符有6种关系,分别为等于、不等于、大于、大于等于、小于、小于等于。
千万不要把“==” 误写成 “=”, “= =” 是判断是否相等的关系,"="是赋值。
逻辑运算符
&逻辑与: 遇false则false;只有2边同时为true,才为true
|逻辑或: 遇true则true;只有2边同时为false,才为false
^逻辑异或:2边相同为false,2边不同为true
!逻辑非(取反): true变false,false变true
短路逻辑运算符
短路逻辑与和基本逻辑与的区别
基本逻辑与&,无论左边真假,右边都会执行
短路逻辑与&&,如果左边为真,右边执行;如果左边为假,右边就不执行
短路逻辑或和基本逻辑或的区别
基本逻辑或|,无论左边真假,右边都要执行。
短路或||,如果左边为假,右边执行;如果左边为真,右边不执行
Scanner类的使用
1.导包 import java.util.Scanner;
2.创建对象 Scanner sc = new Scanner(System.in);
3.获取键盘录入的整数 int i = sc.nextInt();
if语句格式
if语句格式的执行流程
①首先计算关系表达式的值
②如果关系表达式的值为true就执行语句体1
③如果关系表达式的值为false就执行语句体2
④继续执行后面的语句内容
for循环语句格式
while循环语句格式
世界最高山峰是珠穆朗玛峰(8844.43米=8844430毫米),假如我有一张足够大的纸,它的厚度是0.1毫米。请 问,我折叠多少次,可以折成珠穆朗玛峰的高度?
do…whiler循环语句格式
for循环和while循环的区别
条件控制语句所控制的自增变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问到了 条件控制语句所控制的自增变量,对于while循环来说不归属其语法结构中,在while循环结束后,该变量还可 以继续使用.
书写死循环
1.for(; ; ){}
2 while(true){}
3 do {} while(true);
跳转控制语句
(continue) 跳过本次循环,继续下次循环
(break) 结束当前循环
continue关键字的注意事项
continue只能在循环中进行使用! continue不能单独使用
break的作用是:
结束当前循环
还可以在选择结构的switch中使用
break不能单独使用
循环嵌套的概述
循环嵌套是指一个循环的循环体包含另一个循环。比如for循环里面还有一个for循环,就是嵌套循环。
循环嵌套的格式
Random
Random类似Scanner,也是Java提供好的API,内部提供了产生随机数的功能
Random的使用步骤
- 导入包
Scanner
1.导包 import java.util.Scanner;
2.创建对象 Scanner sc = new Scanner(System.in);
3.获取键盘录入的整数 int i = sc.nextInt();
数组
动态初始化数组
数组动态初始化就是只给定数组的长度,由系统给出默认初始化值
动态初始化格式
数组索引
每一个存储到数组的元素,都会自动的拥有一个编号,从0开始。这个自动编号称为数组索引(index),可以通 过数组的索引访问到数组中的元素。
获取数组长度
格式: int 变量名 = 数组名.length;
内存分配
数组中的元素有默认值:
数组元素为整数类型,默认值为0
数组元素为小数类型,默认值为0.0
数组元素为字符类型,默认值为’\u0000’
数组元素为布尔类型,默认值为false
数组元素为引用类型,默认值为null
索引越界异常
解决方案 将错误的索引修改为正确的索引范围即可!
空指针异常
给数组一个真正的堆内存空间引用即可
数组遍历:
就是将数组中的每个元素分别获取出来,就是遍历。
遍历也是数组操作中的基石。
从数组的所有元素中找出最大值。 数组: int[] arr = { 5, 15, 2000, 10000, 100, 4000 };
方法入门
方法总共有4类:
无参数无返回值的方法
有参数无返回值的方法
无参数有返回值的方法
有参数有返回值的方法
方法的注意事项
方法不能定义在方法里面(方法不能嵌套定义)
方法不调用不会执行
方法定义位置,是在类中方法外
返回值类型必须和return语句的类型相同,否则编译失败
void表示无返回值,可以省略return,也可以单独的书写return,后面不加数据
不能在 return 后面写代码, return 意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
方法定义的通用格式
方法重载
是指在同一个类中,允许存在一个以上的同名方法,但是只要它们的参数列表不同即可,与修 饰符和返回值类型无关
重载与修饰符和返回值类型无关
基本数据类型作为方法的参数传递的是具体的值
引用数据类型作为方法的参数传递的是地址值
System.out.println(“内容”); 输出内容并换行
System.out.print(“内容”); 输出内容不换行
System.out.println(); 起到换行的作用
-类和对象
类是用来描述一类具有共同属性和行为事物的统称,由属性和行为组成。可以看成是一类事物的模板,使用事 物的属性特征和行为特征来描述该类事物。
单个对象内存图
只要创建对象,就会在堆区开辟一块空间
只要调用方法,就会在栈区开辟一块空间,用来执行该方法
多个对象内存图
多个对象在堆内存中,都有不同的内存划分,
成员变量存储在各自的内存区域中,
成员方法多个对象共用的 一份
多个变量指向相同对象内存图
当多个对象的引用指向同一个内存空间(变量所记录的地址值是一样的) 只要有任何一个对象修改了内存中的数据,随后,无论使用哪一个对象进行数据获取,都是修改后的数据。
成员变量和局部变量的区别
类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
内存中位置不同:成员变量(堆内存)局部变量(栈内存)
生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而 存在,醉着方法的调用完毕而消失)
初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)
封装、
对属性封装的步骤
- 使用private修饰成员变量
- 对需要访问的成员变量,提供对应的 getXxx 方法(获取属性的值) 、 setXxx 方法(给属性赋值)。
private关键字
set和get方法
this关键字
小贴士:方法中只有一个变量名时,默认也是使用 this 修饰,可以省略不写。
小结 :
this关键字的作用: 如果方法中有局部变量和成员变量同名,那么就需要使用this关键字来区分
this关键字使用格式: this.成员变量名
构造方法
构造方法是一种特殊的方法,主要是完成对象的创建和对象数据的初始化
标准类制作
API