跟韩老师学java

入门阶段:

1.文档注释:

/**

* @author   名字(作者)

*@version  1.0(版本)

*/

2.相对路径和绝对路径

相对路径:从当前目录开始定位,形成的路径

绝对路径:从顶级目录开始定位形成的目录

需求:从D:\abc\test100 访问D:\abc2\test100\hello.txt

相对路径:..\..\abc\test100\hello.txt(..表示上一级)

绝对路径:D:\abc2\test100\hello.txt

Dos命令:cls:清屏     tree 目录:查看目录下的子目录(生成一个树)

3.加号“+”的使用:

当两边都是数字时做加法运算;当左右有一方为字符串,做拼接运算;运算顺序为从左到右

System.out.println("100"+98)结果为10098

System.out.println(100+3+hello)结果为103hello

System.out.println("hello"+100+3)结果为hello1003

4.基本数据类型

整型:byte[1],short[2],int[4],long[8]

浮点型(小数):float[4],double[8]注:1字符=8字节

字符型:char[2]存放单个字符

布尔类型:boolean[1]存放true和false

5.引用数据类型

类(class)

接口(interface)

数组({})

6.关于浮点型:

浮点数=符号位+指数位+尾数位

尾数部分可能丢失,造成精度损失(小数都是近似值)

7、自动类型转换细节:

当不同类型混合运算时,先自动将数据转换成容量最大的那种数据类型,然后进行计算

数据类型;byte->short->int->long->float->double(精度由小到大)

char->int->long->float->double

当把精度大的数据类型赋值给小的数据类型的时候,就会报错。

例:int a = 10

float b = a + 1.1则程序会报错

若float b = a + 1.1F则不会报错。

byte = 10;//当把一个数赋值给byte会先判断该数是否在byte范围内,如果是就可以。 

当把一个变量赋值的时候会先判断类型。

byte、short、char三者进行运算,先将精度转换成int然后再进行运算

故byte a = 1;

short b = 2;

short c = a+b //会报错

byte d = 3;

byte e = a+d;//也会报错

表达式结果类型自动提升为操作数中最大的类型

进行复合赋值运算符会有个强制的类型转换

byte b = 3 ;  b + = 2//强制类型转换,将b+2转换为byte型,b++同理

取余的计算:a%b=a - a / b * b

8、switch分支结构

表达式数据类型,应和case后的常量类型一致,或者是可以自动转成可以相互比较的类型,比如输入的是字符,而常量是int

switch(表达式)中表达式的返回值必须是(byte,short,int,char,enum,String)

case子句中的值必须是常量,而不能是变量

default子句是可选的,当没有匹配的case时,执行default

break语句用来在执行完一个case分支后使程序跳出switch语句块;如果没有写break,程序会顺序执行到switch结尾

9、continue

continue会跳过此次循环,进入到下一次循环

如for(int i=0;i<4;i++){if(i==2)continue;System.out.println(i)}

输出结果是0和1和3

10、数组

动态初始化:(指定长度)数据类型[] 数组名字 = new 数据类型[数组长度];

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

可拆分         int[] arr;  

                arr=new int[3]

注意:数组有订定长特性,长度一旦指定就不可以更改

静态初始化:(指定内容)

数据类型[] 数组名 = new 数据类型[]{元素一,元素二,元素三}

可拆分           int arr[];  

                arr =new int[]{1、2、3、4、5}

11、二维数组

        从定义形式上看int[][]

        可以理解为原来的一维数组的每个元素是一维数组,就构成二维数组

内存结构:

 二维数组列数可以不相同:即int[][] arr = new int [3][];

12、Java对象

对象在内存中的形式

Cat cat = new cat();

cat.name = '小白';

cat.age = 12;

cat.color = '白色';

 定义:访问修饰符 属性类型 属性名;

四种访问修饰符:public,protected,默认,private

属性的定义类型可以为任意类型,包含基本类型或引用类型

属性如果不赋值,有默认值,规则和数组一致

Java创建对象的流程简单分析

        先加载类信息(属性和方法信息,只会加载一次)        

        在堆中分配空间,进行默认初始化(看规则)

        把地址付给(对象名)比如p,o就指向对象

        进行指定初始化

 同一个类中的方法调用:直接调用即可

跨类中的方法调用:A类调用B类方法:需要通过对象名调用。例:对象名.方法名(参数)

引用类型传递的是地址(传递也是值,但是值是地址)可以通过形参影响实参

public String  方法名 (String name ,double... scores)其中,double... scores 是可变参数,即不确定参数个数,必须放在方法声明的最后一行,并且一个里面只能有一个。

属性和全局变量可以加修饰符,局部变量不能。

13、构造方法/构造器

构造器的修饰符可以默认,也可以是public、pravite、protected

构造器没有返回值

方法名和类名必须一样

参数列表和成员方法一样的规则

构造器的调用系统完成

14、对象创建流程分析

        加载person类信息(person.class),只会加载一次

        在堆中分配空间(地址)

        完成对象初始化(默认初始化age = 0,name = null ->显式初始化 age = 90 name = null,->构造器初始化 age=20 name = 小倩)

        在对象在堆中的地址,返回给p(p是对象名)也可以理解成是对象的引用

15、this

this关键字可以用来访问本类的属性

哪个对象调用,this就代表哪个对象

this只在类定义的内部使用,不能在类定义的外部使用

16、包

命名规则:只能包含数字、字母、下划线、小圆点,但不能用数字开头,不能是关键字或保留字com.公司名.项目名.业务模块名

import java.util.Scanner//表示只会引入java.util包下的Scanner

import java.util.*  //表示将java.util包下的所有类都引入

建议:使用哪个类就引入哪个类即可,不建议使用*导入

17、继承

 子类继承了所有的属性和方法,非私有的属性和方法可以在子类直接访问,但是私有属性和方法不能在子类直接访问,要通过父类提供公共的方法去访问。

当创建子类时,不管使用子类的哪个构造器,默认情况下总会调用父类的无参构造器,如果父类没有提供无参构造器,则必须在子类的构造器中用super去指定使用父类的哪个构造器完成对父类的初始化工作,否则,编译不会通过。

如果需要指定调用父类的某个构造器,则显式调用一下:super(参数列表),不写或者参数列表没有参数将默认调用无参构造器

super()在使用时,必须放在构造器的第一行

super()和this()都只能放在构造器的第一行,因此两个方法不能共存在一个构造器

java所有类都是Object类的子类,Object是所有类的基类

父类构造器调用不限于直接父类,将一直往上追溯直到Object类(顶级父类)

18、super关键字

super代表父类的引用,用于访问父类的属性、方法、构造器

可以访问父类的属性,但不能访问父类的私有属性,可以访问父类的方法,但不能访问父类的私有方法

super遵循就近原则

19、方法重写

        子类的方法的形参列表,方法名称,要和父类方法的形参列表,方法名称完全一样

        子类方法的返回类型和父类方法返回类型一样,或者是父类返回类型的子类

            比如:父类返回类型是Object,子类方法的返回类型是String

        子类方法不能缩小父类方法的访问权限,public>protected>默认>private

20、多态

        方法的多态:重写和重载就体现多态

        对象的多态(核心):

                一个对象的编译类型和运行类型可以不一致

                编译类型在定义对象时,就确定了,不能改变

                运行类型是可以变化的

                编译类型看定义时 = 号的左边,运行类型看=号的右边

        向上转型:父类调用了子类的对象  语法:父类类型  引用名 = new 子类类型()

        特点:编译类型看左边,运行类型看右边

                可以调用父类中的所有成员(需遵守访问权限)

                不能调用子类的特有成员

                最终运行效果看子类的具体实现

        向下转型: 语法:子类类型   引用名 = (子类类型)父类引用

                只能强转父类的引用,不能强转父类的对象

                要求父类的引用必须指向的是当前目标类型的对象

                当向下转型后,可以调用子类类型中所有的成员

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值