java从零开始学习!
已经大三了,突然想学java了,也不知道还来不来得及。首先感谢知乎:得闲野鹤(https://www.zhihu.com/people/Z.ylin/activities),看了他的学习思路才下定决心开始学java。
image.png
2018.3.12
基础语法
1.java对大小写敏感
2.类的首字母应该大写
3.方法名应该以驼峰法命名
4.源文件名应该与类名相同
5.所有的方法都是以public static void main (String[] args)方法为入口开始执行
第一个java程序(HelloWorld.java):
public class HelloWorld{
public static void main(String[] args) {
//String[] args 和String args[] 都可以,但是推荐使用String[] args,这样可以避免产生歧义
System.out.println("Hello World!");
}
}
java 变量
1.局部变量
2.类变量(静态变量)
3.成员变量(非静态)
java的对象和类
Java作为一种面向对象语言。支持以下基本概念:
多态
继承
封装
抽象
类
对象
实例
方法
重载
对象是一个实例,有状态和行为,比如一只小狗就是一个对象,状态有颜色/名字/品种,行为有 摇尾巴/吃 等。
而类是一个模板,描述一类对象的行为和状态
image.png
java中的类
public class Dog{
String breed;
int age;
String color;
void barking(){
}
void hungry(){
}
void sleeping(){
}
}
局部变量:在方法、构造方法或者语句块中定义的变量被称为局部变量。变量声明和初始化都是在方法中,方法结束后,变量就会自动销毁。
成员变量:成员变量是定义在类中,方法体之外的变量。这种变量在创建对象的时候实例化。成员变量可以被类中方法、构造方法和特定类的语句块访问。
类变量:类变量也声明在类中,方法体之外,但必须声明为static类型。
一个类可以拥有多个方法,在上面的例子中:barking()、hungry()和sleeping()都是Dog类的方法。
构造方法
创建对象
自动类型转换
转化前的数据类型要低于转换后的的数据类型(例如float(32)到 double(64))
java变量类型
image.png
image.png
示例:
public class Leg(){
static int a;//类变量
int c;//实例变量
public void f(){
int b;//局部变量
}
}
Java数组
double[] myList; // 首选的方法
或
double myList[]; // 效果相同,但不是首选方法
public class TestArray {
public static void main(String[] args) {
// 数组大小
int size = 10;
// 定义数组
double[] myList = new double[size];
myList[0] = 5.6;
myList[1] = 4.5;
myList[2] = 3.3;
myList[3] = 13.2;
myList[4] = 4.0;
myList[5] = 34.33;
myList[6] = 34.0;
myList[7] = 45.45;
myList[8] = 99.993;
myList[9] = 11123;
// 计算所有元素的总和
double total = 0;
for (int i = 0; i < size; i++) {
total += myList[i];
}
System.out.println("总和为: " + total);
}
}
构造方法的理解
1.创建一个对象时,使用new+构造方法创建一个新的对象,构造方法的方法名和类名一致,且没有返回值。
HelloWorld hello = new HelloWorld();
2.构造方法是定义在java类中的一个用来初始化对象的方法。没有制定构造方法时系统会默认创建一个不带参数且没有返回值的构造方法
public class HelloWorld{
// public HelloWorld(可指定参数){
//}
}
静态变量和静态方法的理解
静态变量
1.基于一个类可以创建多个对象,每个对象拥有自己的成员的,互相独立。有些时候希望这些对象共享一个变量时静态变量就派上了用场。
2.static修饰的变量属于整个类所有,可以使用类名直接访问,也可以使用对象名访问。
3.静态变量属于整个类,当系统第一次使用该类时就会为其分配内存,知道该类被回收时才会被销毁。
public class Static_1{
// 定义静态变量,保存班级名称
static String className = "JAVA开发一班";
public static void main(String[] args) {
// 访问静态变量,输出班级名称
System.out.println(Static_1.className);
}
}
静态方法
与静态变量一样,我们也可以使用 static 修饰方法,称为静态方法或类方法。其实之前我们一直写的 main 方法就是静态方法。静态方法的使用如:
public class Static_2{
public static void test(){
System.out.println("我是静态方法!");
}
public static void main(String[] args) {
//直接使用类名调用
Static_2.test();
//使用对象进行使用
Static_2 test = new Static_2();
test.test();
}
}
注意:
静态方法是属于类的,内存必须为它分配内存空间,这个空间一直由静态方法占用,内存管理器不会由于静态方法没有被调用而将静态方法的存储空间收回,这样如果将所有的方法都声明为静态方法,就会占用大量的内存空间,最后是系统变慢。而普通的成员方法是由对象调用的,内存并不会一直为起分配内存,只有调用的时候才为其分配存储空间,而当其没有被调用时,存储空间就会被内存管理其收回,释放没有用的空间,提高的系统的运行速率!
静态初始化块
在类的声明中,可以包含多个初始化块,当创建类的实例时,就会依次执行这些代码块。如果使用 static 修饰初始化块,就称为静态初始化块。
public class Static_3 {
String name; // 声明变量name
String sex; // 声明变量sex
static int age;// 声明静态变量age
// 构造方法
public Static_3() {
System.out.println("通过构造方法初始化name");
name = "tom";
}
// 初始化块
{
System.out.println("通过初始化块初始化sex");
sex = "男";
}
// 静态初始化块
static {
System.out.println("通过静态初始化块初始化age");
age = 20;
}
public void show() {
System.out.println("姓名:" + name + ",性别:" + sex + ",年龄:" + age);
}
public static void main(String[] args) {
// 创建对象
Static_3 hello = new Static_3();
// 调用对象的show方法
hello.show();
}
}
面向对象的特性
- 封装
- 继承
- 多态
封装:简单来说就是隐藏属性通过方法来更改或者得到属性的值
image.png
image.png
继承
多态
image.png