JavaSE学习笔记

Java基础

标识符和关键字

  • Java所有的组成部分都需要有名字,类名,变量名以及方法名都被称为标识符 ,所有的标识符都应该以英文字母(a-z,A-Z),美元符($),或者下划线(_)开头
  • 首字母之后可以是字母,美元符下划线或数字的任何字符组合
  • 不能使用关键字作为标识符
  • 标识符是大小写敏感的
  • 可用使用中文命名,但是不建议

下面的标识符是合法的:
myName,My_name,Points,$points,_sys_ta,OK,_23b,3
下面的标识符是非法的:
#name,25name,class,&time,if

Java 9规定:不允许单独使用下划线作为分隔符。
Java 的关键字加上goto const true false nulll 一共有53个关键字和保留字,都不能作为Java的标识符。

Java数据的类型

  • 基本类型
  • 引用类型
    在这里插入图片描述
    注意
  • 其中float需要float需要这样来声明 float = 0.1f;float是有限,离散,舍入误差,大约,接近但不等于,因此最好不要用浮点数进行 == 这样的确定是否相等的操作,会有精度的损失,可以采用BigDecimal数学工具类;
  • String是引用类型,不是基本类型;
  • Java和C不同的是,Java采用Unicode编码,范围是 0-65536;
  • 布尔类型的初始值为false
  • 在C语言中,char类型占一个字节,在Java中char类型占2个字节。
  • 比较字符串时最好使用str.equal()方法进行比较

注意点
在这里插入图片描述
上图中,false的原因是因为两个字符串在不同的对象中,因此为false,而后一个没有对象,在同一片内存中,因此为true;

类型转换

类型转换主要有两种类型转换
在这里插入图片描述
byte只有128位
数字间是可以用下划线间隔的,更加方便阅读数字
在这里插入图片描述

变量

在这里插入图片描述
分为实例变量和局部变量

  • 局部变量直接就可以使用
  • 实例变量必须通过对象来调用
  • 加上了static即成为了类变量,跟类一起出现消失,可以直接通过类调用

常量

在这里插入图片描述

运算符

在这里插入图片描述
尤其应该注意一下位运算
<< 左移一位即 原数*2 ; 左移三位即原数 *2 *2 *2 是次方的关系
<< 右移则同理
在这里插入图片描述

插入一个idea的快捷键
ctrl+D 复制当前行到下一行

关于注释时的参数

  • @author 作者名
  • @version 版本号
  • @since 指明需要最早的jdk版本
  • @param 参数名
  • @return 返回值情况
  • @异常抛出情况

输入

Java使用Scanner对象进行输入操作
在这里插入图片描述

public class Demo1{
   //创建一个扫描器对象,用于接收键盘数据
   Scanner scanner = new Scanner(System.in);
   System.out.println("使用next方式接收:");
   //判断用户有没有输入信息,这个在这里没有必要,主要是后面的循环部分用得比较多
   if(Scanner.hasNext()){
   //使用next方式进行接收
     String str = Scanner.next();//String str = Scanner.nextLine();
     System.out.println("输出的内容为:"+str);
   }
   //养成好习惯,用完后关闭scanner;
   scanner.close();

}

关于next()和nextLine()
next()会以空格结束,而nextLine()以enter结束,所以可以输入带空格的字符串

输入单个字符 char c = sc.next().charAt(0);

增强for循环

增强for循环主要用于输出,因为它没有下表,不方便操作数据
在这里插入图片描述

for(int x:nums){
    System.out.println(x);
}//这里x表示循环时的数据名称类似i ; nums则是循环的数组名称

for(int ants:nums[]){
    for(int x:ants){
       System.out.println(x);
  }
}//输出二维数组

方法

在这里插入图片描述

重载

熟记重载的规则
在这里插入图片描述

可变参数

在这里插入图片描述
可变参数的使用
在这里插入图片描述
其实本质就是数组

数组

数组和C语言类似,就是声明时有所不同
在这里插入图片描述

Java的内存
在这里插入图片描述

数组三种初始化

即有

  1. 静态初始化
  2. 动态初始化
  3. 隐式初始化
    在这里插入图片描述

特殊点: 布尔型的初始为false;

Java里数组可以通过 shuzuname.length() 来直接获得长度;

多维数组

声明

int[][] array = new int[10][10];

多维数组的其他部分皆于C语言相同,此处不再赘述;

Arrays类

在这里插入图片描述
toString()方法
在这里插入图片描述
.sort() 排序方法 默认为升序;
.fill() 填充方法 参数可以填(数组名,起始点,终止点,待填充的数字) 若不填起始点,终止点则会全部填充

面向对象

在这里插入图片描述

本质:以类的方式组织代码,以对象的组织(封装)数据

三大特性

  1. 封装

  2. 继承

  3. 多态


类和对象

emmm…这部分没啥写的

关于静态方法: 静态方法可以直接调用,非静态方法必须将类实例化后才能通过对象调用此方法

在这里插入图片描述引用传递

即传参时传递一个对象 相当于指针,在方法中是可以改变参数

构造器
默认有一个无参的,在new对象时就是调用,自己写了有参的之后需要把无参的构造方法加上,不然会损失无参构造.

封装

只需要记住.属性私有(private)
则需要getter和setter方法

public int getAge(){//getter方法
   this.age = age;
   return age;
}

public void setAge(int age){//setter方法
   this.age = age;
}

如果是private非静态属性依旧需要new一个对象才能访问

继承

在这里插入图片描述
java只有单继承:简单的理解 一个儿子一个爸爸,一个爸爸多个儿子

在这里插入图片描述
所有的类都是继承了object类的

继承之后,子类可以直接调用父类的方法,即使是没有static

私有的方法是无法被继承的,即通过super也调了,如上图所示就会报错
在这里插入图片描述
在new子类的时候,也调用了父类的无参构造,在这里 super();是隐藏代码
在这里插入图片描述
父类的构造器必须在子类构造器的第一行,这里不写也没有关系,反正都是隐藏代码

super的注意点

  1. super调用父类的构造方法,必须在构造方法的第一位
  2. super必须只能出现在子类的方法或者构造方法中
  3. super和this不能同时调用构造方法

和 this 比较

  1. 代表的对象不同
    this:本身调用者这个对象
    super:代表父类对象的应用
  2. 前提
    this没有继承也可以使用
    super:只能在继承关系下才能使用
  3. 构造方法
    this();本类构造
    super();父类的构造;

多态

在这里插入图片描述
方法的重写
重写都是方法重写和属性无关在这里插入图片描述
如上图,static方法是无法被重写的,相当于两个方法,这时候能调什么方法都看左边是什么类型
在这里插入图片描述
重写后一般会有@override注释
并且重写只能是public方法,如果是私有方法,则会出现如上图所示的报错

关于重写

  1. 需要有继承关系,子类重写父类的方法
  2. 方法名必须相同
  3. 修饰符:范围可以扩大但不能缩小 publci > Protected >defalt>private
  4. 抛出的异常:范围可以被缩小,但不能扩大:ClassNotFoundException -->Exception
  5. 子类的方法和父类必要一致,方法体不同

在这里插入图片描述
对象能执行那种方法主要看左边是什么类型和右边关系不大 要想调用,可以强制转换
在这里插入图片描述
如上图:强制转换(上向下)就可以调用了
多态注意事项

  1. 多态是方法的多态,属性没有多态
  2. 父类和子类,有联系 类型转换异常 ClassCastException
  3. 存在条件:继承关系,方法需要重写,父类引用指向子类对象 Father f1 = new Son();

不可以重写的

  1. static 方法,属于类,它不属于实例
  2. final常量
  3. private方法

instanceof关键字在这里插入图片描述
instanceof关键字就是用来判断子父类的关系的,值得注意的是再上图中Object是student new出来的所以在Teacher 那里依然是false

static 详解

在这里插入图片描述
简单的来说就是

  • 非可以调静

  • 静不可以调非

  • main函数也是静,所以不可以直接调用非静的方法

关于代码块
在这里插入图片描述
以下顺序是代码执行的顺序

  1. 静 只执行一次
  2. 匿名
  3. 构造方法
    构造方法竟是最后执行的,令人震惊

抽象类

在这里插入图片描述

接口

在这里插入图片描述

  • 接口中的所有定义方法都是抽象的public abstract

  • 在接口中常量都是public static final前缀

  • 类可以实现接口implements

  • 实现了接口中的类,就必须实现接口中的方法

  • 接口可以实现多就继承

例如

public class UserServiceImpl implements UserService,TimService{

}

内部类

在这里插入图片描述
成员内部类
在这里插入图片描述

Outer.Inner inner = outer.new Inner();//实例化一个内部类

内部类可以获得外部类的私有属性

在这里插入图片描述
一个Java类中可以有多个class类,但是只能有一个public class类(这不叫内部类)

静态内部类
在这里插入图片描述

局部内部类
在这里插入图片描述
匿名内部类
在这里插入图片描述

异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
最大就是throwable在这里插入图片描述
在这里插入图片描述
局部内部类

public class Test{
     public static void main(String[] args){
       int a = 1;
       int b = 0;
       try{//try监控区域
          System.out.println(a/b);
       }catch(ArithmeticException e){
          System.out.println("程序出现异常,变量b不能为0");
       }finally{//处理善后工作
          System.out.println("finally");
       }
     
   } 
}

finally可以不要,一般用于处理关闭IO流的相关操作

idea快捷键 ctrl+alt+T try catch包裹代码

在这里插入图片描述

自定义异常

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
JavaSE结束,后面开始Java多线程和注解反射

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值