java 基础整理

Java基础整理

1.入门


(ps2019-7-30 19:35:22 不能那么洋气的,刚学一点md 就不弄那么细致了)

各种的安装软件java9 idea 安装完后打印个hello world就算入门了!

1.1基本类型

Java中的默认类型:整数类型是 int 、浮点类型是 double 。

还有int log(长整型) float double(双精度浮点型) char 字符型 boolean 布尔型

1.2方法

方法就是写逻辑的, 类调用静态方法(static修饰的) 其他的都是对象调用的

构造方法也是个方法 是为了构造出来对象的 类默认有一个无参的构造方法可以被重写

psvm sout 是idea的快捷键 一个是main方法一个是打印的

1.3流程控制语句

1.3.1 if else判断语句

if(判断条件 ){

pass

} else if(判断条件){

pass

} else {

pass

}

1.3.2三元运算

public static void main(String[] args) { int a = 10; int b = 20; //定义变量,保存a和b的较大值

int c;

if(a > b) {

c = a;

} else {

c = b;

}

//可以上述功能改写为三元运算符形式 c = a > b ? a:b;

1.3.3switch语句

格式:

switch(表达式) {

case 常量值1:

pass;

case 常量值2:

pass ;

.......

default:

pass;

break;

}

1.3.4 for循环

常用的都是用for i in 进行迭代

for(i=0; i>xxx或i<xxx; i++){

循环体

}

1.3.5 while循环

while(条件){

循环体

}

1.3.6 do while循环

do{

循环体

} while(布尔表达式);

do...while循环的特点:无条件执行一次循环体,即使我们将循环条件直接写成false,也依然会循环一次。这样的 循环具有一定的风险性,因此初学者不建议使用do...while循环。

1.3.7 循环语句的区别
  • for 和 while 的小区别:

    控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继 续使用,如果你想继续使用,就用while,否则推荐使用for。原因是for循环结束,该变量就从内存中消 失,能够提高内存的使用效率。 .

    在已知循环次数的时候使用推荐使用for,循环次数未知的时推荐使用while。

1.3.8 跳出和继续循环

break 结束循环语句

for(xx){

if (xxx){

break; // 跳出了循环语句

}

}

continue 使用场景:结束本次循环,继续下一次的循环

for(int i= 1; i<= 10; i++){

// 需求:不打印第三次helloWorld

if (i == 3){

continue;

}

System.out.println("hello world "+ i);

}

2 .进阶


2.1 idea的使用

很显然得去自己百度云里面下载,这里练习用下md,给个自己的百度云连接有破解的那种

密码 aenr

一个IDE工具的使用和pycharm一样都是一个公司的

需要改个快捷键

先点击齿轮 备份一下快捷键或者直接在下拉菜单选择eclipse 已经习惯了

settings->keymap->menu->code->completion->Basic 设置为 alt+/ 自动补全(这个极其重要)

ctrl+alt+L是自动补全 很爽的

滑动放大字体 settings-> Editor->General-> Change font size (打上对勾就好了)

自动不全函数返回值:  ctrl+alt+v

2.2数组

数组在python中就是列表 { }

数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];

int [] arry = new int[10]; 这就是定义一个长度为10的一个整数型数组

增删改查 arry. 各种方法

好像java中没有所谓的什么字典列表 什么的,应该是我没开始学的集合吧

java其实语法也没多少 难得还是主要是理解.以前觉得难是因为没理解

面向对象的知识吧

 

2.3类与对象,封装,构造方法

封装 继承 多态 是面向对象的三大特点

其实面向对象的思想很爽! 把一群一样的逻辑封装到一个类里面

然后有个代表就是类的对象来调用封装的方法, 这个对象就是通过构造方法来创造出来的

Class_Name obj = new Class_Name(); // 这样就创造了一个对象

多实用封装的思想,这样可以把代码更加简化

 

2.4 封装的步骤

  • private的含义

    1. private是一个权限修饰符,代表最小权限。

    2. 可以修饰成员变量和成员方法。

    3. 被private修饰后的成员变量和成员方法,只在本类中才能访问。

      private int age;

提供 getXxx 方法 / setXxx 方法,可以访问成员变量,代码如下

 

 

 

可以使用idea的快捷键 ctrl+ ins 然后进行选择

 

2.5 封装优化2 -- 构造方法

public 构造方法名(其实就是类名字) (参数列表){

// 方法体

}

构造方法的写法上,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。使用 构造方法后,代码如下:

 

注意事项

  1. 如果你不提供构造方法,系统会给出无参数构造方法。 2. 如果你提供了构造方法,系统将不再提供无参数构造方法。 3. 构造方法是可以重载的,既可以定义参数,也可以不定义参数。

     

2.6 标准代码-- JavaBean

JavaBean 是 Java语言编写类的一种标准规范。符合 JavaBean 的类,要求类必须是具体的和公共的,并且具有无 参数的构造方法,提供用来操作成员变量的setget 方法。

构造方法

 

编写符合 JavaBean规范的类,以学生类为例,标准代码如下:

 

 

测试类,代码如下:

 

 


ps 2019-7-30 21:19:21 已经弄一半了!发现md真的很爽,就是刚开始使用有点不适应!

不过比用txt写笔记太强了!!其实md还是很简单操作的!!!2333333

用来写github是最舒服的!

写完上面知识点发现就是一点基本的语法而已,java本身最难得就是面向对象的理解!

一千个人有一起那个哈姆雷特吧! 后面还有多态 多态就是父类可以调子类方法 子类又可以把父类向下转型转成子类!目前理解是这样,也许以后有更多见解!明天继续更新笔记!争取明天更新完自己学的java!

其实一门语言常使用的还是后面的框架!毕竟自己现在是初级程序员!

越努力,越幸运!永远不要高估自己! 上午java 下午写数学!

明天继续更!

 

2.7 Scanner类、Random类、ArrayList 类

ps: 2019-8-2 10:18:18由于网联不上,所以只能用电脑更新笔记!


  • Scanner 一个可以解析基本类型和字符串的简单文本扫描器.

    用法:

    Scanner sc = new Scanner(System.in);

    int i = sc.nextInt();

  • Random类 此类的实例用于生成伪随机数。

    Random r = new Random();

    int i = r.nextInt();

  • ArrayList类

    java.util.ArrayList 是大小可变的数组的实现,存储在内的数据称为元素。此类提供一些方法来操作内部存储 的元素。 ArrayList 中可不断添加元素,其大小也自动增长。

    用法:

    ArrayList<E> list = new ArrayList<>();

    常用方法和遍历:

    • public boolean add (E e) :将指定的元素添加到此集合的尾部

    • public E remove(int index) 移除此集合中指定位置上的元素,返回被删除的的元素

    • public E get(int index) 发返回此集合中指定位置的元素,返回获取的元素

    • public int size() 返回此集合中的元素数,遍历时,可以控制索引范围,防止越界

 

2.8【String类、static关键字、Arrays类、 Math类】

  • String类 字符串不变:字符串的值在创建后不能被更改

    String str = "xxx";

.

  • static 关键字

    关于 static 关键字的使用,它可以用来修饰的成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属 于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。

    static 数据类型 变量名;

    类调用静态方法

  • Arrays 类 java.util.Arrays 此类包含用来操作数组的各种方法,比如排序和搜索等。其所有方法均为静态方法,调用起来 非常简单

 

public static String toString(int[] a) :返回指定数组内容的字符串表示形式。

` String s = Arrays.toString(arr); `

 

 

public static void sort(int[] a) :对指定的 int 型数组按数字升序进行排序。

`Arrays.sort(arr); `

` System.out.println("排序后:"+ Arrays.toString(arr));`

 

 

2.9 继承、super、this、抽象类

  • 继承

    通过 extends 关键字,可以声明一个子类继承另外一个父类

    class 父类 {

    }

    class 子类 extends 父类 {

    }

    子类可以重写父类方法

    注意

      1. 子类方法覆盖父类方法,必须要保证权限大于等于父类权限。 2. 子类方法覆盖父类方法,返回值类型、函数名和参数列表都要一模一样。

    • super和this的含义 super :代表父类的存储空间标识(可以理解为父亲的引用)。

      this :代表当前对象的引用(谁调用就代表谁)

    • Java只支持单继承,不支持多继承。

  • 抽象类 : 使用 abstract 关键字修饰方法,该方法就成了抽象方法,抽象方法只包含一个方法名,而没有方法体

    修饰符 abstract 返回值类型 方法名 (参数列表);

    • 抽象的使用

      继承抽象类的子类必须重写父类所有的抽象方法。否则,该子类也必须声明为抽象类。最终,必须有子类实现该父 类的抽象方法,否则,从最初的父类到最终的子类都不能创建对象,失去意义.

    • 抽象类不能创建对象,如果创建,编译无法通过而报错。只能创建其非抽象子类的对象。 理解:假设创建了抽象类的对象,调用抽象的方法,而抽象方法没有具体的方法体,没有意义。

    1. 抽象类中,可以有构造方法,是供子类创建对象时,初始化父类成员使用的。 理解:子类的构造方法中,有默认的super(),需要访问父类构造方法。 3. 抽象类中,不一定包含抽象方法,但是有抽象方法的类必定是抽象类。 理解:未包含抽象方法的抽象类,目的就是不想让调用者创建该类对象,通常用于某些特殊的类结构设 计。

    2. 抽象类的子类,必须重写抽象父类中所有的抽象方法,否则,编译无法通过而报错。除非该子类也是抽象 类。 理解:假设不重写所有抽象方法,则类中可能包含抽象方法。那么创建对象后,调用抽象的方法,没有 意义。

    3.0 接口、多态

  • 接口,是Java语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是封装了方法,包含抽象方法(JDK 7及以前),默认方法和静态方法(JDK 8),私有方法 (JDK 9)。 接口就是个抽象类,里面有好多方法,需要实现类去实现!接口可以多继承

    • 接口的实现

      类与接口的关系为实现关系,即类实现接口,该类可以称为接口的实现类,也可以称为接口的子类。实现的动作类 似继承,格式相仿,只是关键字不同,实现使用 implements 关键字。 非抽象子类实现接口:

      1. 必须重写接口中所有抽象方法。

      2. 继承了接口的默认方法,即可以直接调用,也可以重写。

       

  • 多态: 是指同一行为,具有多个不同表现形式。

    • 前提回顾

      1. 继承或者实现【二选一】

      2. 方法的重写【意义体现:不重写,无意义】

      3. 父类引用指向子类对象【格式体现】

 

  • 多态的体现

    父类类型:指子类对象继承的父类类型,或者实现的父接口类型。

    父类类型 变量名字 = new 子类对象

    Fu f = new Zi();

    f.method();

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误;如果有,执行的是子类重写 后方法。

     

    定义父类:

    public abstract class Animal { public abstract void eat(); }

    定义子类:

    class Cat extends Animal { public void eat() { System.out.println("吃鱼"); } } class Dog extends Animal { public void eat() { System.out.println("吃骨头"); } }

     

    定义测试类:

    public class Test {

    public static void main(String[] args) {

    // 多态形式,创建对象

    Animal a1 = new Cat();

    // 调用的是 Cat 的 eat a1.eat();

    // 多态形式,创建对象

    Animal a2 = new Dog(); // 调用的是 Dog 的 eat

    a2.eat();

    } }

  • 多态的好处

    实际开发的过程中,父类类型作为方法形式参数,传递子类对象给方法,进行方法的调用,更能体现出多态的扩展 性与便利。

  • 引用类型转换

    多态的转型分为向上转型与向下转型两种:

    • 向上转型:多态本身是子类类型向父类类型向上转换的过程,这个过程是默认的

    • 向下转型:父类类型向子类类型向下转换的过程,这个过程是强制的。

      子类类型 变量名 = (子类类型) 父类变量名;

      如:Cat c =(Cat) a;

  • 为什么要转型

    当使用多态方式调用方法时,首先检查父类中是否有该方法,如果没有,则编译错误。也就是说,不能调用子类拥 有,而父类没有的方法。编译都错误,更别说运行了。这也是多态给我们带来的一点"小麻烦"。所以,想要调用子 类特有的方法,必须做向下转型。

     

3.1 匿名内部类[重点]
  • 匿名内部类 :是内部类的简化写法。它的本质是一个 带具体实现的 父类或者父接口的 匿名的 子类对象。 开发中,最常用到的内部类就是匿名内部类了。以接口举例,当你使用一个接口时,似乎得做如下几步操作,

    1. 定义子类 2. 重写接口中的方法 3. 创建子类对象 4. 调用重写后的方法

       

我们的目的,最终只是为了调用方法,那么能不能简化一下,把以上四步合成一步呢?匿名内部类就是做这样的快 捷方式。

匿名内部类必须继承一个父类或者实现一个父接口。

格式:

new 父类名或者接口名(){

// 方法重写

@Override

public void method() {

// 执行语句

} };

  • 引用类型用法总

    实际的开发中,引用类型的使用非常重要,也是非常普遍的。我们可以在理解基本类型的使用方式基础上,进一步 去掌握引用类型的使用方式。基本类型可以作为成员变量、作为方法的参数、作为方法的返回值,那么当然引用类 型也是可以的。


基础和进阶到此已经完结,剩下的就开始高级的啦!!!

2019-8-2 11:36:29 抽空把博客整理到这个上面来,发现上面这些东西都是曾经自己刚开始学Java时候学的,并且那时候很难,现在都是1.5倍速看,发现很简单!废话,当然简单,已经有强大的python全栈基础!都会自己做网站什么的,当然简单!万事开头难,慢慢的将会变得很快进步很快!越努力,越幸运!永远不要高估自己!

 


Java进阶整理

 

2019-8-24 19:50:29

很显然我这将近20天都没记笔记!因为我忙着科三和科四!

前天终于拿了驾照!!!疯狂的无所事事两天,发现游戏也不好玩,电视剧就那样!

还是编程好玩!!!!!!开始继续记笔记!


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2019-10-06 22:31  我想喝杨枝甘露~  阅读(116)  评论(0编辑  收藏  举报