序言
在优快云博客上的第一篇博文。
今日开始了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—大写字母