Java chap-0 重新开始

环境配置

JDK 1.8.0
eclipse:免费但是插件比较少
STS 4.6.1:Spring的eclipse插件版本(本课应用)便于spring开发
IDEA:比较火,Java开发效率最快,付费版本费用高,环境高度集成,占内存

下面这几个都要装
navicat:数据库可视化,增删改查
powerdeginer:数据库设计工具

HBuilder X:当前最快的HTML开发工具,辅助提示比较强大

标识符

建议标识符不超过30个字母

Unicode字符集前256个是ASCII码及其扩展码

共有四类八种基本数据类型

保存批量数据:数组,枚举,集合,对象

两个byte类型的操作结果是一个int类型,需要byte类型要强制类型转换

游戏分区常用byte类型存

long类型常在时间转换为毫秒值的时候使用

小数末尾有f为float,没有的话是double类型

类型 变量名 [=];	//声明可以不写值,使用前必须给值
final 类型 常量值 [=];	//变量名全部大写,单词间下划线分割

短路运算符&&,||

使用快捷键 control+shift+f代码格式化

break跳出整个循环,continue跳出单次循环,循环嵌套可以加标签定位当前循环

动态数组定义时要确定数组大小

增强for循环

String[] num = {"1","2","3","4","5","6"};
     for(String i: num){
     System.out.println(i);
}

优点: 遍历集合和容器简单。

缺点: 在遍历集合过程中,不能对集合本身进行增删等操作,只能够循环遍历输出。

格式:for(Object obj : list) {
        System.out.print(obj);
      }

使用方法: for循环中第一个参数为数据类型(Object),第二个参数为随便定义的一个用作循环赋值输出的变量名,第三个参数为已定义并初始化的变量名(list)。

类和对象

对象:类的具体化

面向对象的特点:

  • 封装性
  • 继承性
  • 多态性:不同类型的对象可以对相同的激励做出不同的响应

面向对象开发的两个步骤:

  1. 抽象出数据模版
  2. 模版具体化到对象

构造方法用于创建对象

类修饰符列表:

类修饰符功能
同包访问
public完全开放
abstract抽象
final没有子类
[修饰符] class 类名 [extends 超类名][implements 接口列表]{
	类体;
}

成员变量的声明:

成员变量修饰符功能
private限制类外访问
同包访问
protected同包及子类访问
public完全开放
static静态
final常量
volatile可被多个线程访问
transient不序列化
[修饰符] 变量类型 变量名 [=]

构造方法调用用new关键字

?在调用对象时没有指明方法,默认调用.toString(),(所有类都继承于Object?)

成员方法的声明:

方法修饰符功能
private
protected
public
static静态
final不能覆盖
native本地方法
abstract抽象
synchronized同步方法
[修饰符] 返回值类型 方法名([参数列表])[thorws 异常类型列表]{
	方法体;
}

方法命名一般采用动宾结构(是一种行为的抽象)

对象是类类型的变量,对象名相当于门牌号(Java中没有指针概念)

方法重载

出现原因:在同一个类中,不同对象的操作方法可能不同

同一类中,方法名相同,形参列表不同的多个方法之间构成方法重载

返回值类型可以相同也可以不相同

形参列表不同指:参数个数、参数类型或参数顺序不同

关键字this

表示当前对象

可以使用无参的构造方法调用有参的构造方法

public Student(){
	this(9);	//调用构造方法
	this.eat();	//调用其他方法
}

public Student(int a){
	this.age = a;
}

封装

信息隐蔽

实现:成员变量私有化,提供公有访问方法

常用于当前类是存储数据的(学生信息表)

public class Student(){
	private int age;
	
	public int getAge(){
		return age;
	}
}

static关键字

把成员变成类的属性,类成员共享的属性(count)

可以直接使用类调用

尽量不要使用,在类加载的时候进内存 占内存!!!

final关键字

常量,不可被覆盖,不可被继承

继承,多态,抽象类,接口与字符串

新类继承现有类的方法和属性,可以根据自身需要进行扩展

父类的私有成员子类虽然能继承,但在子类中不能直接使用(可以通过采用封装的方法解决)。final类不能继承

Java里继承为单继承

覆盖Override

覆盖 (override):也叫重写,就是在当父类中的某些方法不能满足要求时,子类中改写父类的方法。当父类中的方法被覆盖了后,除非用super关键字,否则就无法再调用父类中的方法了

父类子类方法重名,会构成重写

  • 返回值类型相同
  • 方法名相同
  • 形参类型,个数,顺序相同
  • 子类中方法的权限不小于父类中的权限
  • 子类方法不能抛出新的异常
  • 父类里的final方法不能被重写覆盖

Question: 重载和覆盖的联系与区别

重载和覆盖的联系与区别

多态

允许将子类类型赋值给父类类型

多态的特性:编译时接口缩小,运行时动态绑定

tip:删除当前行快捷键:alt+d

super调用父类方法,this调用本类方法

抽象类abstract

具有抽象方法的类一定是抽象类
抽象类未必包含抽象方法
抽象类只能被其他类继承
抽象类不能被实例化(不能被new)

public abstract class Person(){
	...
	public abstract void test();
}

如果一个类继承了抽象类,这个类必须实现抽象类的所有抽象方法(即方法覆盖),否则这个类必须声明为抽象类

abstract与final不能一起使用

接口

不是类,是一组对类的要求,(jdk8.0以后可以有细节)不带任何实现细节

在JDK8.0之后和抽象类差不多

分类:

  • 标记性接口:什么都没有就是个标记,如Serilizable(序列化?),Cloneable等
  • 常量群接口:只有常量(可以直接调用),没有方法,如SwingConstants
  • 一般接口

接口的作用:

  • 接口的使用弥补了Java单亲继承的特点
  • 无关系的类不可能有同一个父亲,但可以有同一个接口
  • 接口的使用使得项目中多个程序员可以并行开发
public interface Operator{
	void fly();	//public abstract void fly();

	public static void study(){}
}

接口中成员变量自动声明为:public static final
接口中成员方法两种声明:static、default,自动声明为public abstract
static可以直接通过接口调用,default要通过类调用,注意具体类(有接口缩小问题)

  • 使用时一定要注意使用范围
  • 接口不能实例化对象
  • 接口只能继承接口
  • 实现接口时必须实现接口中所有的方法,否则该类必须声明为抽象类

是一组类的集合

包名用途
java.langLanguage 语言包
java.awt抽象窗体工具包
java.awt.event事件包
javax.swing跨平台轻量级组件包
java.sql数据库访问包
java.io输入/输出流包
java.net网络包
java.util实用工具包

String字符串

字符串创建两种方式

String s = "崽崽";
String str = new String();
str = "崽崽";

区别:
方法1中,先在内存中查找有没有"11"这个字符串对象存在,如果存在就把s1指向这个字符串对象;
方法2中,不论内存中是否已经存在"11"这个字符串对象,都会新建一个对象。

一个String对象一旦构造后,其值是不可以改变的
String是一个final类
直接构造放在“常量池”中

==和equals()的区别

==:在比较对象时,比较的是对象的引用(地址)
String的equals():比较的是String对象的值是否相同

equals()参数为(Object obj)关于equals方法的重写

StringBuffer类

  • 构造后大小可以改变
  • 只能用构造器对它初始化
  • StringBuffer对象的容量和它的长度是两个概念,其容量大于长度
  • StringBuffer经常的再分配会产生内存碎片,且实现同步会降低执行效率,因此单线程中不常用

StringBuilder类

用法与StringBuffer几乎相同
不能保证同步,常在单线程中使用

  • 运算次数少时使用String类足够
  • 运算次数多时,建议:局部变量一般用StringBuilder,因为一般不会有多线程的问题;成员变量一般用StringBuffer,因为要考虑线程同步问题
  • 必要时可对它们互相转换

查看API具体方法(看源码)

String 重点看String的常用方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值