Java基础

Java基础
    Java基础知识
        Java语言的特点
            面向对象的思想编程
            跨平台性
            安全性
        JDK :开发环境
JRE:运行环境
JVM:Java虚拟机
        配置环境变量:JAVA_HOME=目录
修改path:%JAVA_HOME%\bin
    初识java
        注释:▪ 注释就是程序员为读者作的说明,是提高程序可读性的一种手段
– 类型
▪ // 单行注释 注释内容从//到本行结尾
▪ /* */ 多行注释 /* */ 注释不能嵌套
▪ /** */文档注释 可以通过JDK提供的Javadoc命令,生成程序的
– 注意
▪ 注释不会出现在字节码文件中。
即Java编译器编译时会
跳过注释语句
        反编译工具:▪ 编译
– 源代码----->class
▪ 反编译
– class---->源代码
▪ 反编译软件
– jd-gui.exe
▪ 因为编译的时候不会对注释进行处理,所以反编译时不可能得到注释
    数据类型和运算符
        标识符Identifier
▪ 作用
– 常量、变量、方法、类和包等的名称
▪ 命名规则
– 必须以字母、_下划线、美元符$开头。
– 其它部分可以是字母、下划线“_”、美元符“$”和数字的任意组合
– 大小写敏感,长度无限制。
– 不可以是Java的关键字。
正确的:
name, Name,user_name ,$name , _name,
publicName;
▪ 注意 错误的:
– Java不采用通常语言使用的ASCII字符集 9username ,user name , public
– Java采用unicode这样的标准的国际字符集。因此,这里的字母的含义:英文、汉
字等等。(不建议大家使用汉字来定义标识符!)

        数据类型:
            基本数据类型:
                整数型:       整数类型:byte。short。int。long
                    浮点类型:float。double
                字符型:char
                布尔类型:boolean
            引用数据 类型:
                类class
                接口interface
                数组
        ▪ Java 语言支持如下运算符:







算术运算符: +,-,*,/,%,++,--
赋值运算符 =
扩展赋值运算符:+=,-=,*=,/=
关系运算符: >,<,>=,<=,==,!=
逻辑运算符: &&,||,!
位运算符: &,|,^,~ , >>,<<,>>> (了解!!!)
条件运算符 ?:

        基本数据类型之间的转换

– =右侧:所有变量先转换为字节数最多的数据类型,再计算
– =两侧:左侧宽度>右侧宽度 自动转换
左侧宽度<右侧宽度 强制转换
低位像高位 转换(自动转换)高位像低位转换(强制转换)
        常量和变量
▪ 常量变量定义
– 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在
程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。
    流程控制语句
        选择结构
            if-else多分支选择结构
▪ if(布尔表达式1) {
– 语句块1;
int age = (int) (100 * Math.random());
System.out.print(“年龄是”+ age + “, 属于”);
if (age < 15) {
▪ } else if(布尔表达式2) {
– 语句块2;
System.out.println(“儿童, 喜欢玩!”);
} else if (age < 25) {
▪ }………
System.out.println(“青年, 要学习!”);
} else if (age < 45) {
System.out.println(“中年, 要工作!”);
} else if (age < 65) {
System.out.println(“中老年, 要补钙!”);
} else if (age < 85) {
▪ else if(布尔表达式n){
– 语句块n;
▪ } else {
– 语句块n+1;
System.out.println(“老年, 多运动!”); ▪ }
} else {
}
▪ 逐条if语句进行判断
– 条件匹配,进入语句体
– 否则对if语句继续匹配
System.out.println(“老寿星, 古来稀!”);
            switch多值选择结构
char c = ‘a’;
int rand =(int) (26*Math.random());
char c2 = (char)(c+rand);
System.out.print(c2 + “: ”);
switch (c2) {
case ‘a’:
case ‘e’:
case ‘i’:
case ‘o’:
case ‘u’:
System.out.println(“元音”); break;
case ‘y’:
case ‘w’:
System.out.println(“半元音”); break;
System.out.println(“辅音”);
default:
}

        循环
            while循环
public class WhileTest {
public static void main(String[] args) {
int i = 0;
int sum = 0;
while (i <= 100) {
sum += i; //sum = sum+i;
i++;
}
System.out.println("Sum= " + sum);
}
}
循环结构都由如下四个结构组成:
初始化、条件判断、循环体、迭代

            do-while循环
▪ do-while:
int a = 0;
while(a<0){ – 先执行,后判断。
System.out.println(a);
a++;
▪ while:
– 先判断,后执行。 }
System.out.println(“-----”);
a=0;
do{
System.out.println(a);
a++;
} while (a<0);

            for循环:for(int i=0;i<100 ;i++){
System.out.println("好好学习!");}
        跳转语句---break和continue
▪ 在任何循环语句的主体部分,均可用break控制循环的流程。break用于强行退出循环,
并执行循环中剩余的语句。(break语句还可用于多支语句switch中)
▪ continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行
的语句,接着进行下一次是否执行循环的判定。
            break可用于switch结构和循环结构中
– continue叧能用于循环结构中
        递归算法
    数组
        一堆数组
            ①数组定义、特点、内存分配
②使用一维数组存储数据
③for-each循环
                数据类型[ ] 数组名 = new 数据类型[大小] ;
            一维数组的应用
①查询元素
②数组类型做形参
③查询最大值最小值
④添加元素或删除元素
⑤冒泡排序
⑥Arrays工具类
⑦理解main(String args[])
⑧可变参数
        二堆数组
            二维数组含义、特点、内存分配、举例

                int [][] a= {{1,2},{3,4,5,6},{7,8,9}};
        注:可以用for循环执行数组里的所有单位
    面向对象编程
        类和对象:在现实生活中现有对象在有类而在Java语言中是现有类在有对象
            对象的特征——属性
            对象的特征——方法
            ▪ 方法——对象执行的操作
        局部变量和成员变量
            局部变量和成员变量
            ▪ 区别
            – 声明位置不同 类中 方法中
            – 作用范围不同: 当前类的方法 当前方法
            ▪ 不同的方法中即使有同名的局部变量,没有关系,互不影响,建议相同
            – 内存存放的位置的:栈内存中 堆内存中
            – 成员变量有默认值;局部变量没有默认值
            注:在方法中的变量称为局部变量;在方法外类内的变量称为成员变量
        构造方法(构造器)
            构造器作用:
            – 为对象进行初始化(成员变量)工作。
            ▪ 构造器是一种特殊的方法:
            – 构造器的方法名必须和类名一致!
            – 构造器虽然有返回值,但是不能定义返回类型(返回值的类型肯定是本类),不能在构 造器里调用return。
            – 通过new关键字调用!!
            – 如果我们没有定义构造器,则系统会自动定义一个无参的构造方法。如果已定义则 编译器不会添加无参数构造方法!
            – 和普通方法一样,构造方法也可以重载
        方法的调用
            方法调用
            ▪ 形参和实参
            – 定义方法的参数是形式参数
            – 调用方法的参数是实在参数
            – 调用方法时要求参数个数相同,类型兼容
            ▪ 参数传递
            – 基本数据类型的参数传递
            ▪ 无法通过方法调用改变变量的值
            – 引用数据类型的参数传递
            ▪ 可以通过方法调用改变变量的值
        面向对象三大特征:封装。继承。多态。
    面向对象编程02
        this关键字
            ▪ this的作用:
– this表示的是当前对象本身,
– 更准确地说,this代表当前对象的一个引用。
▪ 普通方法中使用this。
– 区分类成员属性和方法的形参.
– 调用当前对象的其他方法(可以省略)
– 位置:任意
▪ 构造方法中使用this。
– 使用this来调用其它构造方法
– 位置:必须是第一条语句
▪ this不能用于static方法
        子主题 7
        static关键字
            static关键字
▪ 使用static声明的成员变量称为静态变量,
▪ 使用static声明的方法称为静态方法
▪ 静态变量不静态方法又称为类变量和类方法
            static关键字
▪ 静态属性的访问形式
– (1)对象名.属性
– (2)类名.属性
▪ 静态方法
– 访问修饰符 static 返回值类型 方法名(){}
▪ 访问形式
– (1)对象名.方法名();
– (2)类名.方法名();

        代码块
            代码块
▪ 概念:使用”{}”括起来的一段代码
▪ 分类:根据位置可分类
▪ 普通代码块直接在方法或语句中定义的代码块
▪ 构造代码块直接写在类中的代码块
▪ 静态代码块使用static声明的代码块
▪ 同步代码块多线程的时候会学到

            静态初始化块
▪ 如果希望加载后,对整个类进行某些初始化操作,可以使用
static初始化块。
▪ 类第一次被载入时先执行static代码块;类多次载入时,static代
码块只执行一次;static经常用来进行static变量的初始化。
▪ 是在类初始化时执行,不是在创建对象时执行。
▪ 静态初始化块中不能访问非static成员。
        package
            pakage
▪ 为什么需要package?
– 为了解决类之间的重名问题。
– 为了便于管理类:合适的类位于合适的包!
▪ package怎么用?
– 通常是类的第一句非注释性语句。
– 包名:域名倒着写即可,再加上模块名,并不内部管理类。
▪ 注意事项:
▪ 写项目时都要加包,不要使用默认包。
▪ com.gao和com.gao.car,这两个包没有包含关系,是两个完全独立的包。只是
逡辑上看起来后者是前者的一部分。

            JDK中的主要包
java.lang
包含一些Java语言的核心类,如String、Math、Integer、System和Thread,提供常用功能。
java.awt
包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图
形用户界面(GUI)。
java.net
包含执行不网络相关的操作的类。
java.io
包含能提供多种输入/输出功能的类。
java.util
包含一些实用工具类,如定义系统特性、使用不日期日历相关的函数
        import
        封装
            ▪ 封装的步骤
修改属性的可见性 ----- 设为private
            ||(向下箭头)
创建公有的getter/setter方法----用于属性的读写
            ||
在getter/setter方法中加   -------  对属性值的合法性进行判断
入属性控制语句

    面向对象04
        继承
            继承
▪ 类是对对象的抽象,继承是对某一批类的抽象,从而实现对现实
世界更好的建模。
▪ 提高代码的复用性!
▪ extands的意思是“扩展”
。子类是父类的扩展
▪ 不同的叫法:超类、父类、基类、子类、派生类

            使用继承
– 编写父类
class Pet {
//公共的属性和方法
}
class Dog extends Pet {
//子类特有的属性和方法
}
▪ 编写子类,继承父类
class Penguin extends Pet{}
        super关键字
            super关键字
▪super是直接父类对象的引用。
▪可以通过super来访问父类中被子类覆盖的方法或属性。
▪普通方法:
▪没有顺序限制。可以随便调用。
▪构造函数中:
▪任何类的构造函数中,若是构造函数的第一行代码没有显式的调用super(...);那么
Java默认都会调用super();作为父类的初始化函数。 所以你这里的super();加不加
都无所谓
        方法重写(override)
            方法的重写(override)
▪ 在子类中可以根据需要对从基类中继承来的方法进行重写。
▪ 重写方法必须和被重写方法具有相同方法名称、参数列表和返回
类型。
▪ 重写方法不能使用比被重写方法更严格的访问权限。(由于多态
        抽象类
            Java中使用抽象类,限制实例化
public abstract class Pet {
}

            抽象方法
                ▪ abstract也可用于方法——抽象方法
▪ 抽象方法没有方法体
– 抽象方法必须在抽象类里
– 抽象方法必须在子类中被实现,除非子类是抽象类
public abstract void print();------没有方法体
        final的用法
            被final修饰的类和方法不能被继承和重写被修饰的变量不可以在改变
    面向对象05
        多态
            子主题 1
         

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值