java入门
一、CMD
1.打开cmd
Win打开,输入cmd,回车
2常见cmd的指令
盘符名称+冒号:盘符转换
dir:查看当前路径下的内容
cd目录:进入单级目录
cd..回退到上一级目录
cd 目录一/目录二:进入多级目录
cd\ 返回到盘符目录
cls:清屏
exit:退出命令提示符窗口
2,Java基础概念
注释:
单行注释//
多行注释/* */
文档注释/** */
无论是单行还是多行注释,使用的时候都不要嵌套
关键字:
被Java赋予了特定含义的英文单词
字面量:
数据在程序中的书写形式
分类:整数,小数,字符串,字符,布尔,空。
特殊字面量:水平制表符\t,空null
变量:
01 定义格式:数据名称 变量名 =数据值;
02注意事项
变量只能存一个值
变量名不能重复
一条语句可以定义多个变量
使用前一定要赋值
数据在计算机中的储存
不同进制在代码中的表现形式
二进制:由0和1组成,代码中以0b开头
十进制:由0-9组成,前面不加任何前缀
八进制:由0-7组成,代码中以0开头
十六进制:由0-9和a-f组成,代码中以0x开头
在计算机中,任意数据都是以二进制的形式来储存的
数字直接以二进制存储,汉字和字符则是查询对应的ASCII表再以二进制存储
图片通过每一个像素点中的RGB三原色来存储
声音对声音的波形图进行采样再存储
数据类型:
基本数据类型
整数,浮点数,字符,布尔
整数
byte -128-127
short -32768-32767
int -2147483648-2147483647(10位数)
long -9223372036854775808-9223372036854775807(19位数)
如果要定义long类型的变量,在数据值的后面需要加一个L作为后缀,大小写均可,为防止与数字1混淆建议使用大写L
浮点数
float
double
定义float类型变量的时候数据值也需要加一个F作为后缀,定义double的时候则不需要
字符
char
布尔
boolean
引用数据类型
标识符:
给类,方法,变量等起的名字
由数字,字母,下划线和美元符$组成
不能以数字开头
不能是关键字
区分大小写
键盘录入:
利用已有的类Scanner,用于接收键盘输入的数字
步骤一:导包---Scanner这个类在哪
import java.util.Scanner; 导包的动作必须出现在类定义的上边
步骤二:创建对象---表示我要开始用Scanner这个类了
Scanner sc = new Scanner(System.in);
上面这个格式里面,只有sc是变量名,可以变,其他的都不许变。
步骤三:接收数据---真正开始干活了
int i= sc.nextInt();左边这个格式里面,只有i是变量名,可以变,其他的都不许变。
运算符和表达式
运算符:对字面量或者变量进行操作的符号
表达式:用运算符吧字面量或者变量连接起来符合Java语法的式子就可以称为表达式。
不同运算符连接的表达式体现的是不同类型的表达式
算术运算符 + - * / %
隐式转换的两种提升规则
1:取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
2:byte short char 三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算
强制转换:如果把一个取值范围大的数值,赋值给取值范围小的变量。是不允许直接赋值的。如果一定要这么做就需要加入强制转换。
格式:目标数据类型· 变量名 = (目标数据类型)被强转的数据;
字符串的+操作
当+操作中出现字符串时,这个+是字符串连接符,而不是算数运算符了。会将前后的数据进行拼接,并产生一个新的字符串
连续进行+操作 从左到右逐个执行
1+99+"年黑马" "100年黑马"
字符的+操作
当字符+字符,字符+数字时,会把1字符通过ASCII码表查询到对应的数字再行计算
自增自减
前置:先加后用
后置:先用后加
赋值运算符
+=,*=等
关系运算符
==,>=,<=等
逻辑运算符
& 逻辑与(且) 并且,两边都为真,结果才为真
| 逻辑或 或者,两边都为假,结果才为假
^逻辑异或 相同为false,不同为true
!逻辑非 取反
短路与&&
短路或||
三元运算符(三目运算符)
关系表达式?表达式1:表达式2
若关系表达式为true1值为表达式1,false则为表达式2
原码补码反码
原码:十进制数据的二进制表现形式,最左边是符号位,0为正,1为负
反码:正数的反码是它本身,负数的反码是符号位保持不变,其余位取反
补码:正数的补码使其本身,负数的补码是在其反码的基础上去+1
计算机中的储存和计算都是以补码的形式进行的
运算符&逻辑与
都为1结果为1,其余为0
1100 1000
0000 1010
0000 1000
运算符|逻辑或
有1个及以上1为1
1100 1000
0000 1010
1100 1010
左移<<
向左移动,低位补0
右移>>
向右移动,高位补0或1(根据符号位决定)
无符号右移>>>
向右移动,高位补0
流程控制语句
1.顺序结构
顺序结构是Java程序默认的执行流程,按照代码的先后顺序,从上到下依次进行
2.分支结构
1.if语句
if(关系表达式)
{
语句体1;
}
执行流程1首先计算关系表达式的值
2如果关系表达式的值为true就执行语句体
3如果关系表达式的值为false就不执行语句体
4继续执行后面的其他语句
switch语句
switch中省略break的写法
case 1->{
语句体;
}
循环结构
for
while
do ...while
for :
for(初始化语句;条件判断语句;条件控制语句)
{
循环体语句:
}
初始化语句只执行一次
while循环
高级循环
无线循环
for(; ;)
while(true)
do
{
}while(true);
continue:
结束本次循环进行下次循环
数组
数组容器在存储数据的时候,需要结合隐式转换考虑
建议:容器的类型和存储的数据类型保持一致
数组的定义
1.格式一:数据类型 [ ] 数组名
范例 int [] array
2.格式二:数据类型 数组名 []
范例: int array []
数组的遍历
数组遍历:将数组中的所有内容取出来,取出来之后可以(打印,求和,判断...)
注意:遍历指的是取出数据的过程,不要局限的理解为,遍历就是打印。
数组的动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型 [] 数组名 = new 数据类型 [数组长度];
范例: int [] arr =new int [3];
数组默认初始化值的规律
整数类型 默认值为0
小数类型 默认值为0.0
字符类型 默认初始值为'/u0000'
布尔类型 默认初始值 false
引用数据类型 默认初始值为 null
数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始值
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度。
只要是new出来的一定是在堆里面开辟了一个小空间
如果new了多次,那么在堆里面有多个小空间,每个小空间都有各自的数据
方法
方法(method)是程序中最小的执行单元
好处:提高代码的复用性,提高代码的可维护性
最简单的方法的定义和调用
格式
pubilc static void 方法名(){
方法体
}
带参数的函数定义及调用
形参:全称形式参数,是指方法定义中的参数
实参:全称实际参数,方法调用中的参数
带返回值的方法
1直接调用
2赋值调用
3输出调用
方法的重载
在同一个类中,定义了多个同名的方法,这些同名的方法具有同种的功能。
每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系
简单记:同一个类中,方法名相同,参数不同的方法,与返回值无关
参数不同:个数不同,类型不同,顺序不同
方法被调用之后就会进栈运行
基本数据类型与引用数据类型
基本数据类型中存储的是真实的数据
引用数据类型:储存的是地址值,引用:使用了其他空间中的数据
二维数组的动态初始化
格式 数据类型[][]数组名 = new 数据类型[m][n];
类和对象:
类:共同特征的设计图
对象:真实存在的案例
定义类:
public 类名{
1.成员方法
2.成员变量
构造器
代码块
内部类
}
成员变量只定义不给值
定义方法:类名 对象名= new 类名();
用来描述对象的类叫javabean类
对象代表什么就该封装什么样的数据,并提供数据对应的行为
pirvate 是一个权限修饰符
pirvate
this的作用:可以区分局部变量和成员变量
构造方法的格式
1.方法名与类名相同,大小写也要一致。
2.没有返回值类型,连void都没有
3.没有具体的返回值
执行时机
创建对象时由虚拟机调用,不能手动调用
每创建一次对象,就调用一次构造方法
无参构造方法:初始化对象时所有成员变量均采取默认值
有参构造方法:初始化对象时,同时可以为对象赋值。
标准的javabean类
按住shift点最下面的,全选或者Ctrl+A
插件ptg可以一秒生成
.写代码时用Alt-Insert(Code|Generate…)可以创建类里面任何字段的getter与setter方法。
2.按Ctrl-N再键入类的名字可以快速地在编辑器里打开任何一个类。从显示出来的下拉列表里选择类。同样的方法你可以通过使用Ctrl-Shift-N打开工程中的非Java文件。
3.Ctrl-D复制当前行,Ctrl-Y删除当前行。
4.Ctrl-Shift-U,Ctrl+Shift+Alt+U显示类继承结构图,再按Alt-M。
6.Ctrl-Shift-V 粘贴最近复制过的一些信息。
7.Ctrl-Shift-F7 高亮显示所有该文本,按Esc高亮消失。
8.Ctrl-E 最近打开的文件。
9.Ctrl-P 方法参数提示。
10.Alt+ Up/Down 在方法间快速移动定位。
11.Ctrl+W 选中代码,连续按会有其他效果。
12.Shift + F6 选中目录结构的文件,重命名。
13.Ctrl + Alt + F12 进入当前文件所在磁盘位置。
14.Ctrl + Shift + F搜索文件。
15.Ctrl + Shift + R 搜索指定范围文件,替换文字。
16.Ctrl + Shift +W 返回上一次选择的代码块状态。
17.Ctrl + Shift + J 自动将下一行合并到当前行末尾。
16.Ctrl + Tab Switcher 导航 与 Ctrl + E 类似效果。
17.Ctrl + Shift + C 复制当前文件磁盘路径到剪贴板。 [3]
三种情况的对象内存图
内存:
1.加载class文件
2.申明局部变量
3.在堆空间中开辟一个空间
4.默认初始化
5.显示初始化
6.构造方法初始化
7.将堆空间中的地址值赋给左边的局部变量
两个对象的内存结构
两个引用指向同一个对象
基本数据类型
数据值是储存在自己的空间中
引用数据类型
数据值是储存在其他空间中
自己空间中储存的是地址值
ctrl+p可以显示全部参数
键盘录入
第一套体系
nextInt()接收整数
nextDouble()接收小数
next()接收字符串
遇到空格,制表符,回车就停止接受,这些符号后面的数据就不会接受了
第二套体系
nextline();接收字符串
不建议一二套体系混用,因为例如输入123
nextInt接受123,下面的nextline很可能接受回车
字符串
JAVA某些关于字符串方法的返回值才是操作后的结果
打印对象不是地址值而是属性值
标号:指定外部循环名字为loop,break跳出的为loop
static
静态变量是随着类加载而加载的,优先于对象出现的
静态方法不能调用实例变量
非静态可以访问所有
Java只支持单继承不支持多继承,但支持多层继承
super表示父类的意思
只有被添加到虚方法表中的方法才能被重写
子类重写父类方法时,返回值类型子类必须小于等于父类
判断是不是该类的对象用 instanceof,是该类对象返回true,否则返回false
a instanceof Dog d
先判断a是否为dog类型,如果是强转为dog类型转换之后变量名为d
不是dog类型,返回值为false
多态的优势,方法中,使用父类型作为参数,可以接受所有子类对象