基于微学苑的Java学习笔记

序言

在CSDN博客上的第一篇博文。
今日开始了Java的进阶学习,但发现之前的很多内容都没记牢,分析比较查阅后发现线上的文字资源里,微学苑的《Java入门教程》算是很好的一个资源。
干货十足,附带即时的代码示例,很不错,本博文是我学习此教程的学习笔记,没有任何参考价值。
传送门:微学苑Java教程

Everything is object.

一、Java概述

1.Java语言概述

1.SUN(Stanford University Network,斯坦福大学网络公司)
原来SUN公司的全称是这样的~一直以为是太阳公司。。。
2.
语言 生日
C语言 19世纪70年代初问世,1978年美国电话电报公司(AT&T)贝尔实验室正式发布C语言。
C++ 在C基础上,1983年贝尔实验室推出了C++。
Java 由Sun公司于1995年5月推出。
Python 由Guido van Rossum于1989年底发明,第一个公开发行版发行于1991年。
Ruby 在20世纪90年代由日本人松本行弘开发。

3.Java 目前的主要应用方向是Web开发和Android开发,大部分IT公司招聘的Java程序员也是从事这两方面的工作。
4.Java 目前的主要应用方向是Web开发和Android开发,大部分IT公司招聘的Java程序员也是从事这两方面的工作。

2.Java虚拟机(JVM)以及跨平台原理

二、Java语法基础

1.Java数据类型以及变量的定义

1.float最后要有一个F字母(大小写无所谓)。
double最后最好有一个D字母(大小写无所谓)。
(不带任何标志的浮点型数据,系统默认是 double 类型。)
2.在Java中,整型数据的长度与平台无关,这就解决了软件从一个平台移植到另一个平台时给程序员带来的诸多问题。
3.从 Java 7 开始,可以使用下划线来分隔数字,类似英文数字写法,例如 1_000_000 表示 1,000,000,也就是一百万。下划线只是为了让代码更加易读,编译器会删除这些下划线。
4.不像 C/C++,Java 不支持无符号类型(unsigned)。
5.在Java中不一样,条件成立返回 true,否则返回 false,即布尔类型。例如:

public class Demo {
    public static void main(String[] args){
        // 字符型
        boolean a = 100>10;
        boolean b = 100<10;
        System.out.println("100>10 = " + a);
        System.out.println("100<10 = " + b);

        if(a){
            System.out.println("100<10是对的");
        }else{
            System.out.println("100<10是错的");
        }
    }
}

运行结果:
100>10 = true
100<10 = false
100<10是对的

实际上,true 等同于1,false 等同于0,只不过换了个名称,并单独地成为一种数据类型。

2.Java数据类型转换(自动转换和强制转换)

1.强制转换的格式是在需要转型的数据前加上“( )”,然后在括号内加入需要转化的数据类型。有的数据经过转型运算后,精度会丢失,而有的会更加精确,下面的例子可以说明这个问题。

public class Demo {
    public static void main(String[] args){
        int x;
        double y;
        x = (int)34.56 + (int)11.2;  // 丢失精度
        y = (double)x + (double)10 + 1;  // 提高精度
        System.out.println("x=" + x);
        System.out.println("y=" + y);
    }
}

运行结果:
x=45
y=56.0

仔细分析上面程序段:由于在 34.56 前有一个 int 的强制类型转化,所以 34.56 就变成了 34。同样 11.2 就变成了 11 了,所以 x 的结果就是 45。在 x 前有一个 double 类型的强制转换,所以 x 的值变为 45.0,而 10 的前面也被强制成 double 类型,所以也变成 10.0,所以最后 y 的值变为 56。

3.Java运算符

1.关系运算符,结果为一个布尔值。见下表:
运算符 说明 举例

大于 a > 4.2
= 大于等于 3.4 >= b
< 小于 1.5 < 9
<= 小于等于 6 <= 1
== 等于 2 == 2
!= 不等于 2 != 2
&& 与 true && false
|| 或 (3 > 1) || (2 == 1)
! 非 !true
2.Java中也有一个条件运算符(三目运算符):
condition ? x1 : x2
condition为一个boolean值。根据condition,取x1或x2的值。

3.Java中boolean的true,false对应C中的1,0;

4.Java流程控制

5.Java数组的定义和使用

1.Java 中定义数组的语法有两种:
type arrayName[];
type[] arrayName;

2.Java提供了”增强版“的for循环,专门用来遍历数组,语法为:
for( arrayType varName: arrayName ){
// Some Code
}
arrayType 为数组类型(也是数组元素的类型);varName 是用来保存当前元素的变量,每次循环它的值都会改变;arrayName 为数组名称。

每循环一次,就会获取数组中下一个元素的值,保存到 varName 变量,直到数组结束。即,第一次循环 varName 的值为第0个元素,第二次循环为第1个元素……例如:
int arrayDemo[] = {1, 2, 4, 7, 9, 192, 100};
for(int x: arrayDemo){
System.out.println(x + “, “);
}
输出结果与上面相同。

这种增强版的for循环也被称为”foreach循环“,它是普通for循环语句的特殊简化版。所有的foreach循环都可以被改写成for循环。

但是,如果你希望使用数组的索引,那么增强版的 for 循环无法做到。
(没有计数器)

6.Java字符串(String)

1.字符串可以通过“+”连接,基本数据类型与字符串进行“+”操作一般也会自动转换为字符串,例如:
复制纯文本新窗口

public class Demo {
    public static void main(String[] args){
        String stuName = "小明";
        int stuAge = 17;
        float stuScore = 92.5f;

        String info = stuName + "的年龄是 " + stuAge + ",成绩是 " + stuScore;
        System.out.println(info);
    }
}

2.Java的字符串特别强大,很多功能在使用时去搜去查API就好。

7.Java StringBuffer与StringBuider

1.使用环境:
操作少量的数据使用 String;
单线程操作大量数据使用 StringBuilder;
多线程操作大量数据使用 StringBuffer。

【this的三个用处】
(1)防止属性名与参数名重名;
(2)在本类的一个构造方法中调用另外一个构造方法
值得注意的是:
在构造方法中调用另一个构造方法,调用动作必须置于最起始的位置。
不能在构造方法以外的任何方法内调用构造方法。
在一个构造方法内只能调用一个构造方法。
(3)作为参数传递????不是很懂唉~~

【为什么说Java是99%的面向对象?】
因为Java中的八种基本数据类型并不是对象,他们的存在仅仅是为了迎合人们根深蒂固的习惯,不携带属性,没有方法可以调用。

【何为多态】
在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例。
类的变量可以引用父类的实例,也可以引用子类的实例。注意反过来是错误的,因为所有的猫都是动物,但不是所有的动物都是猫。
多态存在的三个必要条件:要有继承、要有重写、父类变量引用子类对象。

!!!多态包括重载和重写
重载是同一类中,而重写是父类与子类之间的关系。

多态性是面向对象编程的一种特性,和方法无关,简单说,就是同样的一个方法能够根据输入数据的不同,做出不同的处理,即方法的重载——有不同的参数列表(静态多态性)
而当子类继承自父类的相同方法,输入数据一样,但要做出有别于父类的响应时,你就要覆盖父类方法,即在子类中重写该方法——相同参数,不同实现(动态多态性)

【对象的值改变状态也随之变化】
【类图】
抽象类,接口—斜体,双括号
类变量—下划线
Final—大写字母

最好的最简单的Java入门教程。 目录 1 Java概述 1 1.1 Java语言概述 1 1.2 Java虚拟机以及跨平台原理 2 1.3 关于JVM的执行效率 2 1.4 客户端市场的折戟 3 1.5 Java的主要就业方向 3 1.5.1.1 Web开发 3 1.5.1.2 Android开发 3 1.5.1.3 客户端开发 3 1.6 Java的不同版本 4 1.6.1.1 J2SE(Java 2 Platform Standard Edition) 标准版 4 1.6.1.2 J2EE(Java 2 Platform Enterprise Edition) 企业版 4 1.6.1.3 J2ME(Java 2 Platform Micro Edition) 型版 4 1.7 Java开发环境搭建 4 1.8 JDK 的下载 4 1.9 JDK的安装 5 1.10 环境变量的设置 9 1.11 Eclipse的安装 9 1.12 安装简体中文语言包 11 1.13 第一个Java程序示例 14 1.14 通过Eclipse运行程序 14 1.15 通过命令行运行程序 17 1.16 HelloWorld程序分析 18 1.17 Java类和对象的概念 18 1.18 面向对象编程(Object Oriented Programming, OOP) 19 1.19 Java类库及其组织结构 21 1.20 Java import及Java类的搜索路径 22 1.21 Java类的搜索路径 23 2 Java语法基础 24 2.1 Java数据类型以及变量的定义 24 2.2 对布尔型的说明 25 2.3 Java数据类型转换 26 2.4 自动数据类型转换 26 2.5 强制数据类型转换 26 2.6 Java运算符 27 2.6.1.1 数学运算符 27 2.6.1.2 关系运算符 27 2.6.1.3 位运算符 27 2.6.1.4 条件运算符 28 2.7 Java流程控制 29 2.8 Java数组的定义和使用 31 2.9 数组的定义和内存分配 31 2.10 数组的初始化 31 2.11 数组引用 32 2.12 数组的遍历 32 2.13 二维数组 33 2.14 Java字符串(String) 35 2.15 字符串操作 35 2.15.1.1 1) length() 方法 36 2.15.1.2 2) charAt() 方法 36 2.15.1.3 3) contains() 方法 36 2.15.1.4 4) replace() 方法 36 2.15.1.5 5) split() 方法 36 2.16 Java StringBuffer与StringBuider 37 2.17 StringBuffer类的主要方法 37 2.17.1.1 1) append() 方法 37 2.17.1.2 2) deleteCharAt() 37 2.17.1.3 3) insert() 方法 38 2.17.1.4 4) setCharAt() 方法 38 2.18 String和StringBuffer的效率对比 38 2.19 StringBuilder类 39 2.20 总结 39 2.21 强调一下编程风格 40 3 Java类与对象 42 3.1 Java类的定义及其实例化 42 3.2 构造方法 42 3.3 创建对象 43 3.4 访问成员变量和方法 44 3.5 Java访问修饰符 45 3.6 public:公有的 45 3.7 protected:受保护的 45 3.8 private:私有的 46 3.9 默认的:不使用任何关键字 47 3.10 访问控制和继承 47 3.11 如何使用访问控制符 47 3.12 Java变量的作用域 48 3.13 Java this关键字详解 49 3.14 使用this区分同名变量 49 3.15 作为方法名来初始化对象 50 3.16 作为参数传递 51 3.17 Java方法重载 52 3.18 Java类的基本运行顺序 53 3.19 Java包装类、拆箱和装箱详解 54 3.20 包装类的应用 54 3.20.1.1 1) 实现 int 和 Integer 的相互转换 54 3.20.1.2 2) 将字符串转换为整数 55 3.20.1.3 3) 将整数转换为字符串 55 3.21 自动拆箱和装箱 56 3.22 再谈Java包 56 3.23 如何实现包 56 3.24 包的调用 56 3.24.1.1 1) 在每个类名前面加上完整的包名 57 3.24.1.2 2) 通过 import 语句引入包中的类 57 3.25 类的路径 57 3.26 包的访问权限 58 3.27 源文件的声明规则 59 3.28 一个简单的例子 59 4 Java继承和多态 61 4.1 继承的概念与实现 61 4.2 Java super关键字 63 4.3 调用隐藏变量和被覆盖的方法 63 4.4 调用父类的构造方法 64 4.5 继承中的方法的覆盖和重载 65 4.6 多态和动态绑定 66 4.7 动态绑定 69 4.8 instanceof 运算符 70 4.9 多态对象的类型转换 71 4.10 Java static关键字以及Java静态变量和静态方法 72 4.11 static 的内存分配 73 4.12 静态方法 74 4.13 静态初始器(静态块) 75 4.14 静态导入 75 4.15 Java final关键字:阻止继承和多态 76 4.16 类与类之间的关系 78 4.17 依赖(uses-a) 78 4.18 聚合(has-a) 78 4.19 继承 79 4.20 Java Object类 79 4.21 equals() 方法 79 4.22 hashCode() 方法 80 4.23 toString() 方法 80
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值