21天java基础入门总结

学完了《21天学通java》这本书,阶段性总结一下:

一、java简介

1.java3种版本:se、ee、me,特点及适用对象:javase是javaee及javame的基础,主要用于开发和部署桌面应用;javaee是企业级应用,主要用于电子商务网站等的开发,其中加入了应用框架(ssh);javame主要用于嵌入式(汽车导航系统)以及嵌入式设备开发,安卓ios,手机游戏等。

2.java语言特点:跨平台、可移植、语言简单方便、安全(垃圾回收机制)、面向对象、多线程。

3.jdk:java开发的工具包,包含了java运行环境(jvm+类库)和java工具。

4.为何配置环境变量及配置环境变量的方法:配置环境变量简单来说就是为了能在计算机的何位置都能使用cmd打开shell环境调用javac及java命令进行cc程序的编译及运行。方法:右键此电脑-属性-高级系统设置-高级-环境变量-系统-path-将bin文件夹的路径复制粘贴到这里-加“;”-完成-在桌面上打开shell输入“javac”验证。(可以先新建classpath再将classpath添加进path,目的是方便多次修改jdk安装路径)

5.jdk各个目录(7个)的含义:

(1)bin:①javac.exe:编译源程序,生成机器可以识别的二进制字节码。②java.exe:解释执行字节码文件,运行程序。③javadoc.exe:文档语言生成器,将源程序中的注释生成html文件④jar.exe:java语言归档工具,将包结构压缩成jar文件⑤aappletviewer.exe:用来查看applet小程序

(2)include:包含c语言的头文件,支持java本地接口及jvm调试程序接口的本地代码编程。

(3)jre:java运行环境,包含jvm

(4)demo:含有源代码的演示例程

(5)lib:java开发工具使用的归档文件,包含tools.jar,包含jdk的工具及程序使用的非核心类

(6)src.zip:组成java api编程样例的源代码

(7)sample:包含一些java api的编程样例

6.java开发三个步骤:编辑源程序,javac编译生成字节码文件,java解释运行字节码文件。

7.每行代码不超过80字符。8.eclipse开发步骤:新建项目-新建包-新建类-编译运行

二、基本数据类型

1.8种基本类型:byte short int long char float double boolean,各占1,2,4,8,2,4,8,1或4字节。其中char类型字节数要根据编码方式判断(unicode或utf-8),boolean取决于jvm,当作int还是byte处理。默认值:char:\u0000,boolean:false。5种引用类型:数组、类、接口、枚举、标注。1个字节8位二进制位。

2.进制转换:连除法。

3.数据类型间转换:低精度转高精度自动转,反过来则强制,但是会损失精度。

4.unicode码:因为ascii码不够表示中文等其他字符,所以添加了一个字节,中文用3个字节表示。ascii码:A和a分别是:65,97,utf-8:当存储程序时为了节省空间转为utf-8自适应字节数,节省空间。

5.标识符命名规则:字母开头,字母数字下划线$组成,不可以是关键字,区分大小写。其中包名要全小写,常量名要全大写,类名要首字母大写,变量名及方法名一个单词时小写,多个单词时第二个开始首字母大写。

6.3种注释格式:/**/、//、/***/。

7.写代码的规则和规范:ctrl shift f是eclipse格式化代码快捷键。

8.String类型不同位置的区别??

三、运算符

1.负数取余的正负由被除数来确定。

2.两个不同类型数的运算结果的数据类型:默认为高精度。

3.优先级(14级):口诀:单目乘除为关系,逻辑三目后赋值。具体:[]().  ++--+-!  */  +-  >> << >>>  ==!=  ><   &  ^  |  &&  ||  =+=-=。

四、流程控制

这部分太简单简单记

1.enum:详细介绍:https://blog.csdn.net/qq_27093465/article/details/52180865。enum Color{RED,YELLOEW},看作一个类

2.知道循环次数用for不知道用while

3.break用来跳出循环语句

五、数组

1.数组是一种存储数据的集合。

2.如何创建一维及多维数组:两种创建方式:(1)动态:int[] arr;arr= new int[4];(2)静态:int[] arr = new arr[4];  初始化:(3)int[] arr = new int[]{1,2,3};(4)int[] arr={1,2,3};

3.如何键盘输入:import java.util.*; Scanner in = new Scanner(System.in); int a = in.nextInt();

4.数组的复制及排序:System.arrayCopy(arr,0,arr1,0,length);Arrays.sort(arr); 打印完整的数组:System.out.println(Arrays.toString(arr));//Arrays类和System类都需要import java.util.*;有个问题是使用Collection接口逆序时出错:Arrays.sort(arr,Collections.reverseOrder());原因亟待解决。

六、类与对象

1.面向对象:针对于要实现的功能分模块去实现各部分功能

2.面向对象的主要特点:抽风极多。抽象:把现实世界的某一类东西提取出来,用代码表示,一般抽象出来的是类或接口。不用关注其全部特征,而是一部分需要注意的特征,分为数据抽象(类的属性)和过程抽象(类的方法),比如抽象出人类。有胳膊有腿为属性,走路跑步为人类的行为(方法);封装:将特定的属性和方法包装起来,想要访问必须通过特定的界面,如私有变量,用set,get获取。举例理解:人类住在地球上,想要学习人类走路的方法,必须打开大气层,大气层把人类封装了;继承:子类从父类得到属性(非private)和方法,可以添加其它属性和方法,同时也可以重写其父类方法,但是增加了代码冗合度,男人是人类的子类,使用super访问父类成员变量及方法,this指向自己,final修饰的类不能继承,修饰的方法不能重写,属性不能修改;多态(较难理解):多态就是不同类的对象,对同一消息作出不同响应就叫多态,就像小明和小红得知中午吃榴莲是一样的。多态存在的3个条件:存在继承关系、父类方法被重写、父类引用指向子类对象。以下三种方法不能实现多态:(方法不能被重写)(1)、static方法,被static修饰的方法是属于类的,而不是实例的。(2)、final,被final修饰的方法不能被重写。(3)、private和protected方法。private修饰的方法对子类不可见。而protected修饰的方法可以被子类见到,也可以重写,但是不能被外部引用。

理解多态(假如有一个父类Father和子类Children)

          (1)、向上转型是自动的   Father  f  = new Children();不需要强转

          (2)、向下转型需要强转   Children c = (Children)new Father()需要强转。让父类知道具体转成哪个子类

          (3)、父类引用指向子类对象,子类重写了父类的方法,调用父类的方法,实际是调用子类重写父类的方法后的方法。Father f  = new Children();f.toString()实际是调用子类重写后的方法。

多态的分类:方法重载实现的是编译时的多态性,而方法重写实现的是运行时的多态性。方法重载:当多个同名方法存在时,方法名不变,但参数类型和个数不同称为方法的重载,不以返回值来区分重载。方法重写:父类与子类之间的多态性,对父类的方法重写,若子类中的方法与父类中的方法具有相同的返回值,方法名和参数列表,则新方法会覆盖 旧方法。

参数列表相同,返回值相同,方法名相同,不能抛出新的检查异常则就是重写。参数列表的类型,个数不同,方法名相同,返回值可以相同也可以不同称为重载。可以抛出新的异常,可以有不同的访问修饰符。

3.面向对象和面向过程的区别:一个是分模块进行,一个是一步部执行。

4.引用和对象的区别:http://www.cnblogs.com/dolphin0520/p/3592498.html   个人认为把引用看成是变量,创建对象的过程相当于赋值的过程,对象是在内存中切实存在的,引用只是它的称呼。

5.同包内的类可以直接用,不同包内的类需要先导入包。

6.成员变量要实例化后才能访问,所以先用引用给其赋值。

7.局部变量和成员变量的区别:前者在方法内后者在方法外,前者在栈后者在堆,前者与对象共存亡,后者与方法共存亡,局部变量没有默认初始值要初始化不然编译报错。

 8.除了使用静态变量和方法之外,类中的变量和方法只能通过对象的引用来调用,但在类内可用this,this只能在方法中用,但是不能在static修饰的方法中用。创建这个类的引用是什么,这个this就是什么。写一个this的具体用法:

9.引用只是内存中的一个地址。

10.Date类、Integer类、Integer.parseInt(s)。

七、控制逻辑

1.创建包:package mypackage;几个常用的包:java.lang:一些java基本类,包括object。 java.util:包含一些附加工具类,包括Arrays。 java.io:包括两个最主要的抽象类InputStream和OutputStream。参考链接:https://wenku.baidu.com/view/5c9aa424c1c708a1294a44f5.html

2.静态引入?https://www.cnblogs.com/mengdd/archive/2013/01/23/2873312.html

3.不同修饰类区别:

21天java基础入门总结_第1张图片

4.封装:展现接口,隐藏细节,http://www.runoob.com/java/java-encapsulation.html(简单)

5,final修饰符:https://www.cnblogs.com/xiaoxi/p/6392154.html

final可以修饰类、方法、变量、常量。

修饰类:原本含义有两点:1,不能被继承.2.提高效率,用作嵌入程序,现在这一点基本被忽略。

修饰方法:可以让子类无法重写覆盖父类的方法,但是因为private修饰的父类方法是无法被子类继承的,因此如果用private final修饰方法,子类中将可以写一个和父类的方法名一致的新方法。

修饰变量:一种是基本变量,这个变量不可被修改,修饰成员变量的话 成员变量有两种初始化方式,要么再定义的时候就初始化,要么在类的所有构造函数中全部初始化。要注意,这种情况时,类似于c语言中的define,在编译时遇到这个变量就换成它的值,但是没有final的话则是在运行时通过链接进行计算。具体例子见网址。

一种是引用变量,引用变量指向的地址(对象)不能变,但是地址的内容即对象的内容可以变。

6.所谓静态是指内存中只有一份。static。

7.静态变量:不属于对象属于类,因此只有一份。

8.main为静态方法,若要使用成员变量必须把这个成员变量修饰为static。静态变量不依赖于对象的加载而是类,类加载后对象可能还没加载。所以静态成员变量是属于类的,生命周期比非静态长,静态方法里只能使用静态成员变量,

9.对象存在的时候静态成员变量一定存在,反之则不然,由于this不知道指向哪个对象,所以不能使用this。

10.静态常量声明方法:要在对象创建前对其初始化。

八、继承

1.继承(定义特点目的):

2.一个孩子只能有一个父亲但是一个父亲可以有多个孩子

3.关于继承中构造器的说法(无参、有参)

4.protected特点

5.成员变量的覆盖,编译期与运行期不同

6.对象引用

7.理解bike b = new bike();bike b1 = b;

8.方法的重写和重载,概念,用法区别,和变量的覆盖变化。

9.21天java基础入门总结_第2张图片21天java基础入门总结_第3张图片

理解static用法:static表示静态,只能有一份,类调用、对象引用a编译期为bike类型,运行期为racingCycle类型,但move声明为static类型类方法,不能被重写,因为没有继承过来所以还是输出父类的hayaku。

10.方法重载:一个类中方法名字相同但是参数不同(个数或者类型)

11.基本类型和引用类型作为参数传递https://www.cnblogs.com/lixiangyang521/p/7843179.html

还是需要思考一下的,,

12.重写和重载有传递引用类型和基本类型区别

13.重写的返回类型有基本类型和对象引用类型,对象引用类型(相同、不同)

14.重写重载是基于继承的

15.静态方法不能被重写

16.三者关系,并重写toString.equals方法

17.final与继承关系,修饰类时,引用时

18.abstract 与final相反,抽象类永远  唯一作用是 抽象类最少要有一个抽象方法让子类去实现它

19.抽象类的一些特点

20.多态

21.static和final修饰的方法都是在编译时期绑定的,而其他方法是在运行时期绑定的,多态是基于继承的类和接口结合实现。

22.枚举,类似于一个类封装了一些成员变量,提高效率,写法:enum meiju{a,b};

23.反射.放大镜:可通过类名加载这个类显示出这个类的方法等信息,可以在运行中对程序动态控制,举例:

24.泛型,解释实例:

九、接口

1.接口是一个完成特定功能的类,是一个功能的集合(产品说明书)

2.模型:public interface jekou{(默认为p s f)}

3.特性:多层、多继承

4.接口不能为final类型的,因为final必须实现,其中方法是没有方法体的,在接口里定义的成员变量为常量

5.接口是一个特殊抽象类,方法全为抽象的,类是一个产品的详细说明,接口是这些功能的简要说明。

6.接口中方法创建规则:(1)隐含公有、抽象(2)方法不可是final、static,且只能用public修饰

7.接口方法与类方法区别:(1)接口方法默认为public、abstract;(2)类若修饰为abstract则有错;(3)接口中方法不能为static、final、只能是public、abstract类型;(4)类中方法不能为abstract、final类型。

8.接口引用如何使用:public class test implements a

9.什么是抽象类,与接口区别?(从方法角度想)

10.抽象类使用和特点:子类必须实现所有抽象方法,不然子类也为抽象类。

11.接口的多态:food f1=new ora();

12.instance of,注意事项(5).不推荐使用instanceof 应该多用多态。

十、构造器

1.构造器好比盖房子的工具,new是工人,构造器必须没有返回类型

2.构造器方法与普通方法区别

3.对象实例化,原来new后面跟的是构造器。

4.构造器几种调用方式:(1)本类或者同包另类调用,(2)子类调用父类

5.构造器重载

6.父子继承时构造器的调用流程:用super可显式的指定构造器,不用super默认先父(初始化后)后子构造器。

7.如何自定义构造器?就是不显式的定义构造器

8.单子模式:某个类在同一时刻只允许有一个对象,即把构造器修饰为private类型,用public类型返回该对象的引用。

9.构造器在程序中如何运行的?

十一、异常处理

1.try catch finally(本身异常、线程死亡、停电了)

try后面必须跟catch或finally,不能啥都没有,三者语句块之间不能插入语句

2.异常分类(捕获、未捕获)

3.自定义异常:class myexception extends exception{(有参无参构造器各一个)},构造器不要加返回值类型

4.exception中常见方法:printStackTrace  toString   getMessage

十二、内部类

1.非静态内部类:Wai.Nei w = new Wai().new Nei();

2.局部内部类 :静态方法中的局部内部类想访问外部成员变量方法,必须是静态才行

3.静态内部类:不可直接访问非静态成员(内访外)(外访内无差)

外部类外访内部类:Wai.Nei.w = new Wai.Nei();

4.匿名内部类:

NeiFather nf = new NeiFather(){},创建时必须同时创建匿名内部类对象,匿名内部类初始化用非静态语句块。

例:Class NeiFather{int i;}

public class NeiBuLei{

psvm(S a){

{i=9;}

//方法重写之类的

}

}

十三、多线程

1.怎样定义线程和如何创建线程对象(各两种方法)

2.线程生命周期

3.线程调序(3) 睡眠  优先级  让步 分别如何用

4.main也是一个线程

十七、JDBC

Select [all | distinct][into new_table_name]

From[表名|视图名]

[where 搜索条件]

Group by

having

order by

2.事务处理

十八、IO流

1.数据流分两种:字节和字符。主要用四个抽象类表示:

2.按功能层次不同分为:

3.InputStream OutPutStream Reader Writer File.FileInputStream File.FileOutputStream FileReader FileWriter

十九、集合框架

1.java中主要由一组来操作对象的接口组成,不同接口描述一组不同数据类型,根据所包含对象不同可划分为collection和map。

2.列表

3.vector类

4.ArrayList

5.LinkedList

6.集合:Set接口及其子接口与实现这些接口的类叫集合,Set集合是一种不包含重复元素的Collection

7.Set接口,与list区别在于set中无重复元素

8.SortedSet接口

9.TreeSet类

10.HashSet类

11.映射 多级映射 map接口  HashMap类  TreeMap类

二十、网络编程

1.Tcp/Ip协议是一组以Tcp/Ip协议为基础的相关协议集合

2.C/S  B/S结构

3.IP  TCP  UDP区别

4.端口和套接字,Socket套接字,SerVerSocket类,1024 ,Socket类

 

 

/**

看完《21天学通java》自己总结的一些内容,

详细内容后面将java看作对象

按照类的形式进行面向对象分类整理

*/

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(Java)