JavaSE

目录

1、Java是面向对象的语言。

2、关于java命名

3、Java中的注释

4、标识符

5、将本地项目放到码云上

6、数据类型划分

7、常量和变量

8、类型转换

9、运算符

10、程序结构

11、输入输出

12、方法的定义和使用

13、数组

14、类和对象

15、static:与具体对象无关,和类本身相关

16、代码块

17、面向对象开发的三大特性

18、final关键字

19、抽象类

20、接口

21、String

22、StringBuffer 和StringBuilder

23、异常

1、Java是面向对象的语言。

(1)通过JDK提供的javac.exe编译器将.java文件编译为.class文件

(2)通过JRE提供的java.exe解释器将.class文件解释为操作系统的字节码。

2、关于java命名

(1)项目名称使用纯小写的英文单词,多个单词间使用“_”分隔。

(2)包的命名:和项目命名相同规范

(3)类名称使用大驼峰命名法,从第一个单词开始首字母大写多个单词。

(4)定义方法或者变量使用小驼峰命名,第一个单词全小写,多个单词从第二个开始首字母大写。

(5)接口命名是用大写的I开头

3、Java中的注释

(1)单行注释://

(2)多行注释:/*...*/

(3)文档注释:定义在类和方法体上面。通过JDK提供的javadoc.exe将项目源文件中所有文档注释生成一个文档。

4、标识符

程序中给类、方法、变量起的名字都是标识符

(1)标识符只能包含字母、数字、下划线、$,不能以数字开头

(2)不能包含关键字。

5、将本地项目放到码云上

(1)在码云端创建空项目:新建仓库—>创建(建议仓库名称和本地项目名称一致)

(2)通过idea初始化本地仓库

  1. File—>Setting—>Version Control—>Git—>在Path to Git executable中选择电脑上安装好的git目录(具体为...\Git\bin\git.exe)(这一步点击确认)—>Create Git Repository(这一步创建本地仓库,本地仓库默认目录就是当前项目)
  2. 在idea中关联本地仓库和远程仓库:点击项目右键—>Git—>Manage Remotes—>填入远程仓库链接—>输入用户名和密码—>连接成功
  3. 将本地仓库推送到远程仓库:点击Git中commit将本地修改提交到本地仓库—>选择要提交的文件(只选择.java文件)—>点击commit and push 将代码上传码云

(3)关联远端仓库不成功:检查码云邮箱和本地提交的邮箱是否一致;(修改本地邮箱步骤。。。)

(4)提交时需要忽略某些文件的方法

  1. 在项目根目录下新建 .gitignore 文件(项目—>new—>File)
  2. 文件中写需要忽略的文件名称(如下图)
  3. 如果提交时已经将不需要的文件上传,则再写 .igitignore是无效的,需要使用命令清空当前缓存。(项目—>open in—>terminal—>命令:git rm -r --cached .)

6、数据类型划分

(1)8大基本数据类型:byte(1字节)、short、int(4字节)、long(8字节)(前四个默认值为0)、float(4字节)、double(8字节) (这两个默认值为0.0)、char(2字节)、boolean(布尔默认值为false)

(2)引用数据类型:数组、类、接口、字符串

注:(1)关于变量默认值,方法中定义的变量都是局部变量,必须赋值后使用。在类中定义的变量存在默认值。

(2)在任意方法中不能定义静态变量,静态变量必须定义在类中。

(3)基本数据类型保存的都是具体的值,引用数据类型保存的是对应对象的地址(堆内存地址)。

(4)引用和对象之间的关系:对象是实实在在存在的实体,通过new 关键字产生,保存在堆内存中。引用就是给对象起的名称,通过这个引用来访问对象。

(5)当一个引用数据类型的值为null时,表示该引用不指向任何的内存空间,因此无法使用该引用获取任何数值。

7、常量和变量

(1)常量:字面常量(直接写出来的值)和普通常量(用const关键字定义)

(2)变量:数据类型  标识符名称=初始值

声明长整型变量要在后面加”l“,浮点型变量要在后面加”f“。

8、类型转换

(1)只有有关系的类型才能转换,无关类型不能转换。

(2)隐式提升(小类型转换到大类型);显示转换(大类型转换为小类型,需要进行强制类型转换,可能会出现精度丢失问题)

(3)其他类型和String类型转换:(int—>String:直接用”+“)(任意类型—>String:使用String类提供的valueOf方法,具体用法String.valueOf(要转换的量))(String—>int:使用Integer.parseInt(str)  )

9、运算符

(1)算术运算符:+, - , *, / , % , 加 减 乘 除 取余

(2)增量运算符:+= ,  -= , *=  , /=,%=,++,--

(3)关系运算符:==,!=,<,>,<=,>=

(4)逻辑运算符:&&,||,!

(5)位运算符:& (两个二进制位都为1,则返回1),|(两个二进制位都为0,则返回0),^(两个二进制位不相同返回1,否则返回0),~(取绝对值(取绝对值就是加符号减一))

(6)移位运算:>> (右移), <<(左移), >>>(无符号右移)

(7)条件运算符

10、程序结构

(1)顺序结构

(2)分支结构

11、输入输出

(1)输出:

 System.out.println( );

(2)输入:

Scanner sc = new Scanner();
int age = sc.nextInt();

sc.hasNextInt():判断输入数据是否为整型,一般用在循环中。

12、方法的定义和使用

(1)方法定义:

public static 返回值 方法名称(参数列表){ 方法体 }

(2)方法调用:直接使用方法名称(参数)即可。

(3)方法重载:在同一个类中,定义若干方法名称相同、参数个数或者类型不同、与返回值无关的一组方法称为重载方法。

(4)方法递归:方法在执行过程中自己调用自己

  1. 大问题可以拆分成若干字问题
  2. 子问题与原问题除了数据规模不同,解决思路完全相同
  3. 存在递归出口

(5)方法重写:发生在有继承关系的类之间,子类定义了和父类除了方法权限不同以外,其他完全相同的方法,子类的方法就称为重写方法。

13、数组

(1)数组初始化

动态初始化:数据类型 [ ]   数组名称  = new  数据类型 [数组长度]

静态初始化:声明并创建数组时就给对应位置元素进行赋值。

(2)数组转字符串:Arrays.toString(数组)

数组拷贝:Arrays.copyOf(数组,长度),使用该方法可以真正复制一个数组(在堆内存上产生新空间,并将原数组内容拷贝过来),可以完全拷贝和部份拷贝。

(3)二分查找时区间中间位置mid的计算:为了避免溢出,用mid=l+(r-1)/2

14、类和对象

(1)在java中定义一个类使用class关键字,使用 ”.“ 来访问对象的属性和方法。

class 类名称{
   一系列属性
   一系列方法 
}

(2)在类中定义构造方法:方法名称和类名称相同;构造方法没有返回值的类型声明

当类中没有构造方法定义时,Java编译器在编译后会生成默认的无参构造,一旦提供构造方法,编译器就不会再生成默认的无参构造。

idea中生成构造方法:alt+insert

(3)关于this关键字:this修饰成员变量,表示直接从类中去寻找同名变量;this修饰成员方法,表示直接从当前类中寻找同名方法。

  1. this调用构造方法只能在构造方法中使用,不能在成员方法使用
  2. this调用其他的构造方法必须写在当前构造方法的首行
  3. this调用必须是线性的,不能成环。

15、static:与具体对象无关,和类本身相关

(1)static修饰属性,则该属性为静态变量,直接通过类名来调用,存储在JVM的方法区,该类所有对象共享此变量。

  1. static只存在类中,方法中不能定义静态变量
  2. 静态属性直接通过类名来访问,没有任何该类对象,这个属性也是存在的。

(2)static修饰方法,称为类方法/静态方法,和具体对象无关,通过类名称直接访问。

(3)static修饰的属性/方法,都称为类的静态域,静态域没有该类对象就能访问。(在静态方法中不能访问成员域;在成员域中可以访问静态域)

(4)static不能修饰类

(5)在静态方法中不能使用this关键字,this是成员域的一部分,修饰当前对象的属性/方法。

16、代码块

(1)使用 { } 括起来的一段代码

  1. 普通代码块:定义在方法中,直接用 { } 括起来的代码块,其作用域仅限于当前代码块内部可见
  2. 构造块:定义在类内部,不加任何修饰符的代码块。构造块优先于构造方法执行,有几个对象产生就执行几次构造块代码,一般用于构造方法之前按进行某些属性的默认值初始化。
  3. 静态代码块:定义在类中,使用关键字static修饰的代码块,在该类被JVM加载时执行一次,后面无论多少对象产生,都只在类加载时执行一次;若当前类中存在主方法,静态块还会优先于主方法执行。

17、面向对象开发的三大特性

(1)封装:体现的是易用性和保护性。

  • private关键字实现属性封装,只在当前类的内部可见,对外部完全隐藏。要想在外部调用,需要使用getter和setter方法。
  • default:包访问权限,其可见性只在当前包(同级目录)下的其他类内部可见
  • protected:继承访问权限
  • public:在当前项目中可见
  • 关于包的导入:在Java中只能导入某个包下的某个具体类(不能导入整个文件夹);
  • 包导入的两种方式:(1)产生对象时,使用类的全名称使用(java,.util.Date);(2)使用import语句导入
  • 关于静态导入:将某个包下的某个类中所有静态域导入到当前类中(import   static  包名.类名.*)
  • 注意:当多个包下都是用通配符导入时,若多个包出现相同的类,就会发生冲突,这时需要使用类的全名称调用。

JDK中常用的包

  • java.lang:常用基础类
  • java.util:Java提供的工具类,整个Java集合框架都在此包中
  • java.sql:数据库开发包
  • java.net:网络编程开发包
  • java.io:I/O开发包

(2)继承:共性抽取,代码复用

  • 语法:访问修饰符  class  子类名称   extends  父类名称{     子类代码     }

继承原则

  • 关于构造方法,调用子类构造方法产生子类对象之前,默认调用父类构造方法先产生父类对象,而后产生子类对象。
  • 不允许多重继承,一个类只能继承一个父类
  • 父类中私有域,子类不能直接使用
  • super修饰属性,表示直接从父类中寻找同名变量;子类构造方法首行必须使用super(参数),表示调用父类构造方法;如果父类不存在无参构造,则必须在子类构造方法首行显式调用父类有参构造。
  • Java中所有类都默认继承Object类。
  • Java中对于引用数据来说,”==“比较的是地址,如果要比较属性值,要使用equals()方法。

(3)多态:相同行为/方法,通过不同对象使用时,展现出不同的状态。

  • 多态条件:a.必须在继承体系下实现多态。b.子类必须要对父类方法进行重写。c.必须通过父类引用来调用这些重写方法。
  • 若要调用子类中独有的方法,需要向下转型,还原为子类对象。具体方法为:子类名称  子类实例=(子类名称)父类引用。
  • 向下转型存在类型强转,必须发生在有继承关系的类之间,毫无关系的类,对象不能发生向下转型。
  • 由于向下转型存在类型转换异常风险,引入 instanceof 关键字。用法:(引用名称 instanceof 类名称)返回布尔值。
  • 注意:尽量避免在构造方法中调用实例方法。

18、final关键字

(1)final修饰的属性称为常量,被final修饰的变量一旦初始化之后值不能更改。

(2)被final修饰的引用类型地址不能更改。

(3)被final修饰的方法不能被重写

(4)final修饰的类不能被继承

19、抽象类

(1)抽象类是普通锅的超集,比普通类多一些抽象方法。

(2)抽象类和抽象方法用abstract关键字定义,抽象方法没有定义,方法名后面直接跟一个分号,而不是花括号。

(3)抽象类必须有子类,抽象方法必须被子类覆写。

20、接口

(1)在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

(2)接口与类的区别:

  • 接口不能用于实例化对象。
  • 接口没有构造方法。
  • 接口中所有的方法必须是抽象方法,Java 8 之后 接口中可以使用 default 关键字修饰的非抽象方法。
  • 接口不能包含成员变量,除了 static 和 final 变量。
  • 接口不是被类继承了,而是要被类实现。
  • 接口支持多继承。

(3)由于接口中只存在抽象方法和全局变量,以下关键字可以省略:a.public ;b.static  final ;c.abstract

(4)JDK中常用的接口

  • java.lang.Comparable接口,必须实现compareTo方法
  • java.lang.Cloneable接口,JDK中的标记接口
  • 在Java中一个类要实现Cloneable接口需要两步:打标记,JVM会将带Cloneable接口的子类赋予其可以拷贝的能力;在类中覆写Object类的clone方法。
  • 浅拷贝:当前类若包含其他类的引用,克隆后的新对象不会产生新的内部对象,浅拷贝只是将原对象中的所有属性值复制一份。
  • 深拷贝:产生的拷贝对象内部,包含的其它类对象也会复制一个新的对象产生。

21、String

(1)字符串对象的产生

  • 直接通过字符串常量产生对象:String str = "1qsd";
  • 通过构造方法产生:String str =new String( "1qsd");
  • 使用字符数组产生字符串对象  char[] v = {'a','b','c'};    String str = String.valueOf(v);

(2)字符串对象比较:用equals;equalsIgnoreCase是不区分大小写的字符串对象比较。

(3)字符串对象大小比较:用compareTo方法

(4)字符串和数值转化:String.valueOf() , Integer.parseInt()

(5)String类涉及的一些方法   Java String 类 | 菜鸟教程 (runoob.com)

(6)关于字符串常量值

当字符串对象采用直接赋值法创建时,JVM会维护一个字符串的常量池,当字符串对象第一次产生时,就会产生该字符串对象,置入常量池中,当使用直接赋值法再次产生该对象,如果常量池中已经包含了该对象,直接复用常量池中的对象,并不会产生新的字符串。

(7)intern手工入池方法

  • 如果常量池中已经包含当前对象,不会将当前对象置入常量池,而是返回常量池中原有对象的地址
  • 如果常量池中没有包含当前字符串对象的内容,就把当前对象置入常量池中。返回的是当前对象的地址。

(8)关于字符串的不可变性

  • 字符串对象一旦产生,其中保存的值不可改变。但是字符串引用可变。

22、StringBuffer 和StringBuilder

(1)StringBuffer是线程安全的类,性能较差,一般用于多线程并发修改内容

StringBuilder是线程不安全的类,性能较高,能满足大部分场景使用。

(2)StringBuilder类常用方法:增(append,insert)删(delete)改(setCharAt,replace)查(CharAt,indexOf,lastindexOf)转置(reverse)

23、异常

(1)在程序执行过程中发生的非预期行为,称为异常。Java 语言定义了一些异常类在 java.lang 标准包中。

 (2)Error及其子类:这类异常一旦发生,当前程序无法解决。Error 用来指示运行时环境发生的错误。例如,JVM 内存溢出。一般地,程序不会从错误中恢复。

异常类有两个主要的子类:IOException 类和 RuntimeException 类。

(3)异常的处理

try.....catch.......finally:对异常进行捕获。一旦try中的代码发生异常,JVM就会寻找与之相关的catch块。

finally代码块:无论是否有异常产生,都一定会执行的代码块。如果finally代码块中存在return语句,无论是否有一场产生,finally中的返回值都会覆盖try或catch中的返回值

  • 如果try中出现异常,有与之相关的catch捕获,程序处理异常后恢复执行直到结束。
  • 如果catch捕获的异常类与try中出现的异常不相同,程序还是会退出。
  • 当try中有可能出现很多种异常时,且编码时也不确定到底有几种异常,可以用catch捕获Exception类型的异常。
  • 如果出现多个catch块,程序之后进入一个catch块中处理。
  • 可以调用printStackTrace方法输出异常的具体信息。

(4)异常抛出(  throws 和 throw )

  • throws用在方法声明,表示当前方法可能产生异常并且该方法不处理该异常。
  • throw用在方法体内部,认为进行异常对象抛出,一般这个关键字搭配自定义异常类使用。
  • 异常分为受查异常和非受查异常。受查异常是指程序编译阶段产生的异常,一旦产生必须进行异常处理。非受查异常在程序编译阶段碰到时,可以不进行异常处理,运行时出现问题再解决,RuntimeException及其子类都属于非受查异常。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值