小白的成长之路——java入门


(参考 https://www.cnblogs.com/hugo01/p/9006351.html 点击打开链接,以此为模板 自己做了整理、补充)

java简介

Java是一门面向对象的编程语言,java具有简单性、面向对象、分布式、安全性等特点。
Java的三大体系:
  1. JavaSE(J2SE,标准版):java核心,是最基础部分 【jdk:java开发工作包,jvm:虚拟机,也就是底层的运行环境,jre:底层环境支持包】
  2. JavaEE(J2EE,企业版):企业级技术
  3. JavaME(J2ME,微信版):多用于移动端的开发

java的主要特性

  1. java语言的简单性:java语言丢弃了C++中很少使用的、难以理解的一些特性。例如操作符承载,多继承,自动强制转换,尤其是java语言不使用指针而是引用,而且还提供自动的垃圾回收机制,从而大幅度减少内存的消耗。
  2. java语言的面向对象:java语言提供类、接口、继承等特性。而且为了简单起见java只支持单继承,但是支持接口间的多继承,并支持类与接口之间的实现机制(implements),java语言全面支持多动态绑定而C++只支持对虚函数的动态绑定。
  3. java语言是多线程的 :在java语言中,线程是一种特殊的对象,他必须由thread类或子类来创建。创建线程的方式通常有两种:一是继承Thread类,重写run方法来创建自己的线程。调用start函数就开始执行线程代码。二是写一个类来实现Runnable接口,在初始化一个Thread类或者Thread子类的线程对象的时候 ,把该类的对象作为参数传递给那个线程对象。
  4. java语言是分布式的:Java语言支持Internet的应用开发,在基本的Java应用编程接口中有一个网络应用编程接口(Java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
  5. Java语言是体系结构中立的:Java程序(后缀名为java的文件)在Java平台上被编译为体系结构中立的字节码格式(后缀名为class文件),然后可以在实现这个Java平台的任何系统中运行,这种途径适合于异构的网络环境和软件的分发。

java基本常识

1. 变量

变量:一个数据存储空间的表示。
语法:数据类型 变量名 =变量值
作用:数据共享,接收数据的提前声明

2. 数据:

程序中使用的一些文字、数字、代码等可以叫做数据

  1. 数据类型:1.四种整数类型(byte、short、int、long): 注意事项: 整数字面量默认都为 int 类型,所以在定义的 long 型数据后面加 L或 l。小于 32 位数的变量,都按 int 结果计算。 强转符比数学运算符优先级高。
  2. 两种浮点数类型(float、double): float:后缀 F 或 f。 double:最常用,后缀 D 或 d。注意事项: 浮点数字面量默认都为 double 类型,所以在定义的 float 型数据后面加F 或 f;double 类型可不写后缀,但在小数计算中一定要写 D 或 X.X 。浮点数是不精确的,不能对浮点数进行精确比较。
  3. 一种字符类型(char):用单引号括起来的 1 个字符(可以是一个中文字符),使用 Unicode 码代表字符 。注意事项:不能为 0个字符。 转义字符:\n 换行 \r 回车 \t Tab 字符 " 双引号 \ 表示一个\ 两字符 char 中间用“+”连接,内部先把字符转成 int 类型,再进行加法运算,char 本质就是个数!二进制的,显示的时候,经过“处理”显示为字符。
  4. 一种布尔类型(boolean):true 真 和 false 假。
    类型转换: char–> 自动转换:byte–>short–>int–>long–>float–>double
    强制转换:会损失精度,产生误差,小数点以后的数字全部舍弃。容易超过取值范围。
整数类型大小取值范围
byte1字节8位-128 — 127
short2字节16位-32768 — 32767
int4字节32位-2^31 — 2^31-1
long8字节64位-2^63 — 2^63-1
浮点类型大小取值范围
float4字节32位浮点数1.4E-45—3.4E+38,-1.4E-45— -3.4E+38
double8字节64位浮点数4.9E-324 — 1.7E+308,-4.9E-324— -1.7E+308
字符类型大小取值范围
char2字节16位0~2^16-1(65535)
3.基本概念
  1. 对象:是类的一个实例,有状态和行为。如:学生是一个对象,他的状态有:身高、体重、肤色、年龄等;行为有:吃饭、学习、玩耍和睡觉等。
  2. 类:类是一个模板,它描述一类对象的行为和状态。
  3. 方法:方法就是行为,一个类可以有很多方法,逻辑运算、数据运算以及所有动作都是在方法中完成的。
  4. 实例变量:每一个对象都有特定的实例变量,对象的状态由这些实例变量的值决定。
4.基本语法
  1. 大小写敏感:在Java语言环境里,是对大小写敏感的。标识符Hello和hello是不同的表示。
  2. 类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,则后面每个单词的首字母大写。
  3. 源文件名:源文件名必须和类文件名相同,当保存文件的时候,应该使用类名和文件名保存(切记Java是大小写敏感的语言),文件名的后缀是.java。
  4. 主方法入口:所有的Java程序由public static void main (String [ ]args)方法开始执行。
5.标识符
	Java所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
	注意:(1)所有的标识符都应该以字母(A~Z或a~z),美元符($)、或者下划线(_)开始
         (2)首字符之后可以是字母(A~Z或a~z),美元符($)、或者下划线(_)的任何字符组合
         (3)关键字不能用做标识符
         (4)标识符是大小写敏感的
5、修饰符
	(1)访问控制修饰符:default,public,protected,private;
    (2)非访问控制修饰符:final,abstract,strictfp。

访问控制修饰符,范围如图所示:访问控制修饰符

6.变量
  • 局部变量:存在于栈内存中,当方法执行完成,让出内存,让其他方法来使用内存

  • 类变量(静态变量):(也叫静态变量)是类中独立于方法之外的变量,用static 修饰。

  • 成员变量(非静态变量):存在于堆内存中,和类一起创建
    3.1 成员变量和局部变量的区别
    成员变量:
    1、成员变量定义在类中,在整个类中都可以被访问。
    2、成员变量随着对象的建立而建立,随着对象的消失而消失,存在于对象所在的堆内存中。
    3、成员变量有默认初始化值。
    局部变量:
    1、局部变量只定义在局部范围内,如:函数内,语句内等,只在所属的区域有效。
    2、局部变量存在于栈内存中,作用的范围结束,变量空间会自动释放。
    3、局部变量没有默认初始化值
    在使用变量时需要遵循的原则为:就近原则
    首先在局部范围找,有就使用;接着在成员位置找。

    3.2 成员变量和类变量的区别
    由static修饰的变量称为静态变量,其实质上就是一个全局变量。如果某个内容是被所有对象所共享,那么该内容就应该用静态修饰;没有被静态修饰的内容,其实是属于对象的特殊描述。
    不同的对象的实例变量将被分配不同的内存空间, 如果类中的成员变量有类变量,那么所有对象的这个类变量都分配给相同的一处内存,改变其中一个对象的这个类变量会影响其他对象的这个类变量,也就是说对象共享类变量。

    3.3 成员变量和类变量的区别:
    1、两个变量的生命周期不同
    成员变量随着对象的创建而存在,随着对象的回收而释放。
    静态变量随着类的加载而存在,随着类的消失而消失。
    2、调用方式不同
    成员变量只能被对象调用。
    静态变量可以被对象调用,还可以被类名调用。
    3、别名不同
    成员变量也称为实例变量。
    静态变量也称为类变量。
    4、数据存储位置不同
    成员变量存储在堆内存的对象中,所以也叫对象的特有数据。
    静态变量数据存储在方法区(共享数据区)的静态区,所以也叫对象的共享数据。

    3.4 static:★★★ 关键字,是一个修饰符,用于修饰成员(成员变量和成员函数)。
    特点:
    1、想要实现对象中的共性数据的对象共享。可以将这个数据进行静态修饰。
    2、被静态修饰的成员,可以直接被类名所调用。也就是说,静态的成员多了一种调用方式。类名.静态方式。
    3、静态随着类的加载而加载。而且优先于对象存在。

7.接口

接口就是对象之间相互通信的协议。接口只定义派生要用的方法,但是方法的具体实现完全取决于派生类。

8.枚举

枚举限制变量只能是预先设定好的值。枚举可以单独声明或者声明在类里面,方法、变量和构造函数也可以在枚举中定义。

面向对象

面向对象编程的三条主线:
  • 类及类的构成成分属性、方法、构造器、代码块、内部类;
  • 面向对象的特征:封装性、继承性、多态性(抽象性);
  • 其它的关键字:this\super\package\import\static\final\abstract\interface
    面向对象
    在这里插入图片描述
1.基本定义
  • 类:对事物、逻辑、算法或概念的抽象。描述一类对象的行为和状态。
  • 对象(实例):对象是类的一个实例(对象不是找个男或女朋友),有状态和行为。
  • 引用:Java中一切都”看作“对象,但操纵标识符实际是指向一个对象的“引用”(reference)。
  • 构造方法:新建对象时,执行的一个特殊方法。在创建一个对象的时候,至少要调用一个构造方法,构造方法的名称必须与类同名,一个类可以有多个构造方法。
  • this:这个关键字必须放在非静态方法里面,this关键字代表自身,在程序中主要有三个用途:使用this关键字引用成员变量;使用this关键字在自身构造方法内部引用其它构造方法;this关键字代表自身类的对象。
  • 方法重载(overload):就是方法名相同,方法参数的个数和类型不同函数。Java的重载是发生在本类的,前提条件是本类中存在多个同名不同参的方法。
  • 抽象类:抽象方法必须用 abstract 关键字进行修饰,如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须用abstract关键字修饰,抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
    public abstract class ClassName {
    abstract void fun(); // 抽象方法
    }
  • 接口(Interface):极端的抽象类,在结构设计中用于解耦合。接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。
2.封 装(面向对象特征之一):
  • 是指隐藏对象的属性和实现细节,仅对外提供公共访问方式。
  • 好处:将变化隔离;便于使用;提高重用性;安全性。
  • 封装原则:将不需要对外提供的内容都隐藏起来,把属性都隐藏,提供公共方法对其访问。
3.继 承(面向对象特征之一)
  • 好处:
    1:提高了代码的复用性。
    2:让类与类之间产生了关系,提供了另一个特征多态的前提。
  • 父类的由来:其实是由多个类不断向上抽取共性内容而来的。
  • java中对于继承,java只支持单继承。java虽然不直接支持多继承,但是保留了这种多继承机制,进行改良。
    单继承:一个类只能有一个父类。
    多继承:一个类可以有多个父类。
4.抽象类: abstract
  • 抽象:不具体,看不明白。抽象类表象体现。在不断抽取过程中,将共性内容中的方法声明抽取,但是方法不一样,没有抽取,这时抽取到的方法,并不具体,需要被指定关键字abstract所标示,声明为抽象方法。 抽象方法所在类一定要标示为抽象类,也就是说该类需要被abstract关键字所修饰。
  • 抽象类的特点:
    1:抽象方法只能定义在抽象类中,抽象类和抽象方法必须由abstract关键字修饰(可以描述类和方法,不可以描述变量)。
    2:抽象方法只定义方法声明,并不定义方法实现。
    3:抽象类不可以被创建对象(实例化)。
    4:只有通过子类继承抽象类并覆盖了抽象类中的所有抽象方法后,该子类才可以实例化。否则,该子类还是一个抽象类。
5.内部类
  • 每个内部类都能独立地继承一个(接口的)实现,接口只是解决了部分问题,而内部类使得多重继承的解决方案变得更加完整。内部类可以用多个实例,每个实例都有自己的状态信息,并且与其它外围对象的信息相互独立。(详细参考 :http://cmsblogs.com/?p=63)
  • 非静态内部类:非静态内部类依赖于外部类对象存在,在非静态内部类中,不能定义非静态成员;
  • 静态内部类:使用static 修饰的成员内部类,称之为静态内部类,静态内部类只能访问外部类的静态成员;
  • 局部内部类:声明在方法内部的类,局部类型只能在局部使用,但它的实例可以转为父类型传递出去。
      注意:不可以修饰任何访问权限修饰符;不可以直接访问局部变量(方法的参数等效于局部变量);如果一定需要访问,则需要使用final对局部变量进行修饰。
  • 成员内部类:在类(外部类)的内部,且与外部类的成员是“同一级别”的。
  • 匿名内部类:直接创建已知类的子类对象,则该对象的类型就是匿名内部类。
    java面向对象三大特征
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值