Java基本知识

一、类和对象

①构造函数:无返回值,函数名与类名相同,通过参数表的不同实现构造函数的重载。注意:当你不显式定义构造函数时,系统会为你生成一个默认的构造函数,这个构造函数的参数表和函数体都是空的(也就是说你在new的时候不能在()里面写任何东西,这个函数也不做任何事情)。

②如何声明一个对象:

③对象如何访问类内成员:用“.”。

二、数据类型

从这开始我们就开始说变量了。到底什么是变量?变量是使用系统预定义(基本数据类型)或者人为定义(引用或者说对象,其实也是基于基本数据类型)的数据类型定义的在内存中的一片连续(变量是数据结构的单元,数据结构可以不连续)的区域。变量的五要素:数据类型(这个变量占几个字节的内存)、地址(不管这个变量有多大。其地址都是第一个字节的地址)、名字(给程序员和编译器看的)、值(这片区域里面放的数据是什么)、存储类型(一个程序在操作系统里有其固定的内存模型,Java程序是在JVM里,这个内存模型的每一片区域都有其特点,一个变量肯定属于某一片区域)。

①基本(内置)数据类型:虽然Java是一门纯面向对象语言,但是他也像C++一样提供了8种基本的数据类型以方便程序员直接定义,这8种基本数据类型同样也可以作为对象(包装类)进行使用,系统会自动转换(装箱),存在装箱自然存在拆箱了。

看图说各类型的大小:注意boolean是一位(八分之一字节)

②引用数据类型:就是对象,比如Integer i = new Integer();   注意要这样理解:i作为一种引用数据类型指向了“Integer()”这个对象,我相信引用的底层实现就是指针,只是他不像指针一样可以直接被操作系统的编译器解释。

这里有一个额外的话题:类型转换,大转小强制转换,小转大不必要强制转换,注意:

  • 整数的默认类型是 int;

  • 小数默认是 double 浮点型,在定义 float 类型时必须在数字后面跟上 F 或者 f。

三、存储类型(在菜鸟教程上叫变量类型)

我现在还不知道JVM的内存模型长什么样,但是菜鸟上介绍了三种存储类型(成员变量又叫实例变量,静态变量又叫类变量):

通过上表我们能看出一个问题,Java是没有C++的静态局部变量一说的,这是二者的一个重要区别。

三种存储类型除了这四点区别以外还有一个重要区别,那就是他们可以被什么样的修饰符控制?详见下。

四、修饰符(控制符):控制类、函数、变量(三种)的属性。通常放在一条定义语句的最前头,访问一般放在非访问的前头,这个就如同一般将常量定义为大写一样,是个编程习惯。

①访问修饰符:default、public、protected、private

A.能修饰什么?

a.不能修饰局部变量;

b.private和protected不能修饰类,也就是说,在一个文件里,除了main类使用public修饰以外,其他的类前面不能有访问修饰符;

B.作用是什么?实现访问控制。 

两点与C++的重要区别:

通过上表可以看出,default和protected几乎差不多,二者和public的区别在于包,和private的区别在于类,这是和C++的一个重要区别,除了这个区别以外,还有一个很重要的区别,那就是在继承时,C++有public、protected、private三种继承方式,而Java只有public这么一种,也就是说,Java的派生类中的继承成员没有private、protected还是protected、public还是public,但是要注意:在重写这些方法时,public只能重写为public,protected可以被重写为public或者protected。

②非访问修饰符:static、final、abstract、transient、synchronized、volatile

A.能修饰什么?

B.作用是什么?

static:我认为它应该主要用于同一类的对象间通信;

final:见上图;

abstract:见上图;

transient:修饰成员变量时表示该变量不持久化存储;

synchronized、volatile:用于线程,暂时不管。

五、运算符(详见菜鸟教程,每个运算符都总结了一张表格)

  • 算术运算符
  • 关系运算符
  • 赋值运算符
  • 逻辑运算符
  • 位运算符
  • 其他运算符:?:、instanceof

六、程序结构:虽然Java是一门纯面向对象语言,但是函数写起来怎么都得面向过程啊

  • 顺序结构
  • 选择结构:①if-else;②switch-case;
  • 赋值运算符:①for;②do-while;③while。

       增强型for循环:

注意:数组名也可以为某个返回值为数组的函数。

七、数组:最基本的数据结构,二要素:同类型、连续

①如何定义一个数组:

dataType[] arrayRefVar = new dataType[arraySize];(应该是可以在后面直接放花括号的)

简化方式:

dataType[] arrayRefVar = {value0, value1, ..., valuek};

②Arrays类,我们已经知道了Java是一门纯面向对象语言,因而什么都是有类的,数组也有,有四个API和一个length成员变量较为常用:

注意:这里是第一次谈及API这个概念,要建立这样一个心态:没有程序员开发一个网站会从0开发,都是基于API即一些已经存在的服务进行开发的,所以能用API就要尽量使用API以减少自己的工作量。有一个关键问题:如何学习使用API?学API的方法很简单,就是看函数三要素,先看函数名,明确功能即这个API能干什么,再看返回值和参数表。

八、字符串

①常量:String

A.如何声明?两种方式:

    第一种:String str = "Runoob";   // 公共池

    第二种:String str = new String("Runoob");   // 堆

B.字符串长度:int length();   // 注意区别数组的length成员变量;

C.如何连接字符串:不要用concat方法,直接用“+”;

D.如何格式化字符串:两种方法

    第一种:printf()

                System.out.printf("浮点型变量的值为 " + "%f, 整型变量的值为 " + " %d, 字符串变量的值为 " + "is %s", floatVar, intVar, stringVar);   

    第二种:format()

                String fs; fs = String.format("浮点型变量的值为 " + "%f, 整型变量的值为 " + " %d, 字符串变量的值为 " + " %s", floatVar, intVar, stringVar);

②变量:

A.定义方法以及一些常用方法:

定义:

常用API:

B.二者区别:StringBuffer线程安全,但是慢,StringBuilder线程不安全,但是快。

九、函数:三要素:返回值类型,函数名,参数表。可用所有修饰符修饰。

①可变参数:这个“变”指的是同数据类型参数的数量

②析构函数:首先说清楚,这个函数在C++里是必要的,与构造函数遥相呼应,但是在Java里不是必要的,可有可无,因为JVM会自动进行对象的内存回收。

protected void finalize() {

       // 在这里终结代码

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值