Java学习笔记


java基础


java简介

java是面向对象的语言,是由Sun公司在95年出品的,2009年Sun公司被ORACLE公司收购。

java SE是基础部分,java EE是java的企业版,相比java SE,java EE增加了JSP、EJB等技术。

JVM:Java虚拟机,JDK:Java开发工具包,JRE:Java运行环境。

Java开发环境搭建

  • 安装JDK
  • 配置环境变量
    • JAVA_HOME配置JDK安装路径
    • PATH配置JDK命令文件的位置(bin目录)
    • CLASSPATH配置类库文件的位置(lib目录)

利用文本文件编辑Java程序

  • 用文本文件去编写Java的源代码文件,源代码文件以.java结尾。
  • 用编译器(javac命令),对源代码文件进行编译的操作。把它编译成以.class结尾的字节码文件,字节码文件与平台无关,实现跨平台。
  • 在不同的平台中用不同的解释器(java命令),去解释运行字节码文件,就可以得到程序运行的结果。

Eclipse

Eclipse开发Java程序分为四步

  1. 创建一个Java项目
  2. 创建程序包
  3. 编写Java源程序
  4. 运行Java程序

Java基本语法

约定俗成的命名规则

  1. 类和接口名。每个字的首字母大写,含大小写。
  2. 方法名。首字母小写,含大小写,少用下划线。例如,myName,setTime。这种方法叫驼峰式命名。
  3. 常量名。基本数据类型的常量名全部大写字与字至之间用下划线分隔。对象常量可大小混写。例如,SIZE_NAME。
  4. 变量名。可大小混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,尽量做到见名知义。

变量

基本数据类型默认值存储格式数据范围
short02个字节-32768到32767
int04个字节-2147483648到2147483647
byte01个字节-128到127
char
long
float
double
boolean

Java中变量需要先声明再使用。

Java运算符

算术运算符

+、-、*、/、%、++、–。

赋值运算符

=、+=、-=、*=、/=、%=。

比较运算符

,<,==,!=。(==和!=的操作数可以是数值类型和引用类型)

逻辑运算符

&&、||、!、^(一真一假结果为真,其他的都是假)

条件运算符

布尔表达式?表达式1 : 表达式2

运算符的优先级

多总结就行了

Java控制语句

条件控制语句

if(条件){
    条件成立时执行的代码
}
if(条件){
    代码块1
}
else{
    代码块2
}
if(条件1){
    代码块1
}
else if(条件2){
    代码块2
}
...
else {
    代码块n
}
    switch(表达式){
    case1:
        代码块1
        break;
    case2:
        代码块2
        break;
    ...
    default:
        默认执行的代码块
}

循环控制语句

while(条件){
    代码块
}
do{
    代码块
}while(条件);

跳转语句

break、continue

Java数组

数组定义和初始化

声明数组:

数据类型[ ] 数组名;  //或者: 数据类型 数组名[ ];

分配空间:

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

声明的同时初始化

int [] ages = {12,18,9,33,45,60}; //声明并初始化了一个数组,它有6个元素
char [] symbol = new char[10] //声明并分配了一个长度为5的char型数组

数组遍历

int [] ages = {12, 18, 9, 33, 45, 60};
for(int i = 0; i < ages.length; i++){ //ages.length是获取数组的长度
    System.out.println("数组中第"+(i+1)+"个元素是 "+ages[i]); //数组下标是从零开始,一定要注意
}
for(元素类型 元素变量:遍历对象){
    执行的代码
}

Java方法

方法的定义

访问修饰符 返回值类型 方法名(参数列表){
    方法体
}

参数和参数列表

  1. 调用带参方法时,必须保证实参的数量、类型、顺序与形参一一对应
  2. 调用方法时,实参不需要指定数据类型
  3. 当方法参数有多个时,多个参数间以逗号分隔

返回值

  1. 如果方法的返回类型为 void ,则方法中不能使用 return 返回值。
  2. 方法的返回值最多只能有一个,不能返回多个值。
  3. 方法返回值的类型必须兼容,也就是说如果返回值类型为 int ,则不能返回 String 型值。
  4. 调用带返回值的方法时,由于方法执行后会返回一个结果,因此在调用带返回值方法时一般都会接收其返回值并进行处理。

Java类和对象

  • 对象是一个具体的,确定的物体。
  • 是封装对象的属性和行为的载体,反过来说具有相同属性和行为的一类实体被称为类。
public class 类名{
//定义属性部分(成员变量)
属性1的类型 属性1;
属性2的类型 属性2;
...
//定义方法部分
方法1;
方法2;
...
}

对象

要使用一个对象,首先要先创建一个对象。

类名 对象名 = new 类名();

构造方法

1.构造方法的名称与类名相同,并且没有返回值。
2.如果在定义类的时候没有写构造方法,系统会默认生成一个无参构造方法,不过这个构造方法什么也不会做。
3.当有指定的构造方法时,系统不会再添加无参构造方法。
4.构造方法的重载:方法名相同,但参数不同的多个方法,调用时会自动根据不同的参数选择相应的方法。

Java封装

面向对象有三大特性:封装、继承、多态。
封装的好处:

  • 隐藏类的实现细节
  • 让使用者只能通过事先定制好的方法来访问数据,可以方便地加入控制逻辑,限制对属性的不合理操作
  • 便于修改,增强代码的可维护性

如何实现封装:

  1. 修改属性的可见性,在属性的前面添加修饰符
  2. 创建 getter/setter方法,用来读写属性
  3. 在 getter/setter方法里加入属性的控制语句,例如可以加一个判断语句,对于非法输入给予否定。

Java访问修饰符

访问修饰符本类同包子类其他
private
默认
protected
public

this关键字

使用this.属性操作当前对象的属性,this.方法调用当前对象的方法。

内部类

内部类的主要作用有:

  1. 内部类提供了更好的封装,可以把内部类隐藏在外部类之内,不允许同一个包中的其他类访问该类
  2. 内部类的方法可以直接访问外部类的所有数据,包括私有的数据
  3. 内部类所实现的功能使用外部类同样可以实现,只是有时使用内部类更方便

使用方法:

  1. 定义成员内部类后,必须使用外部类对象来创建内部类对象,即
    内部类 对象名 = 外部类对象.new 内部类()

  2. 如果外部类和内部类具有相同的成员变量或方法,内部类默认访问自己的成员变量或方法,如果要访问外部类的成员变量,可以使用 this 关键字

静态内部类:

  1. 静态内部类不能直接访问外部类的非静态成员,但可以通过
    new 外部类().成员 的方式访问
  2. 如果外部类的静态成员与内部类的成员名称相同,可通过类名.静态成员访问外部类的静态成员;如果外部类的静态成员与内部类的成员名称不相同,则可通过成员名直接调用外部类的静态成员
  3. 创建静态内部类的对象时,不需要外部类的对象,可以直接创建 内部类 对象名= new 内部类();

Java继承

语法

class 子类 extend 父类{
    ...
}

子类重写父类的方法:
重写的方法一定要与原父类的方法语法保持一致,比如返回值类型,参数类型及个数,和方法名都必须一致。

继承的初始化顺序
系统会先创建父类对象,在创建子类对象,先初始化属性,在调用构造函数

Java多态

父类的引用指向子类的对象
父类调用子类的对象的继承方法或重写方法

多态引用类型转换

例子:

Dog a = new Dog();
Animal b = a; //自动类型提升 向上类型转换(无风险)
/*
Dog c = b; 
//将父类引用转换成子类引用,编译器不允许这样做
*/
Dog c = (Dog)b; //在父类前加上小括号,里面加上子类类型,实现强制转换
//向下类型转换
/*
Cat d = (Cat)b;
//虽然编译器不会报错,但运行会出问题,因为b是指向Dog类的,它们是不同类型的对象,这里就存在风险
*/

抽象类

从多个具有相同特征的类中抽象出一个抽象类,以这个抽象类作为子类的模板,从而避免了子类设计的随意性,同是抽象类也规定和约束了子类实现哪些方法。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值