Java总结(1)

java发展

  • 1995年5月,sun发布了java语言。
  • 1998年12月,发布了里程碑的版本1.2,也称为java 2。然后一分为3,标准版(J2SE),微缩版(J2ME),企业版(J2EE)
  • 2004年10月,发布了1.5版本,也称为java5.0
  • 2006年11月,java6.0发布,java2改为java。
  • 2009年,甲骨文公司宣布收购Sun
  • 2011年,Java7正式发布
  • 2014年,甲骨文公司发布了Java8正式版

Java特点

  • Java具有简单性、面向对象、分布式、健壮性、安全性、平台独立与可移植性、多线程、动态性等特点
  • 一次编写,随处运行
  • 无论在什么环境下编译的,可以在任何运行有java虚拟机的平台上运行java程序,不需要修改代码或重新编译。

Java虚拟机

  • java虚拟机是软件模拟的计算机,可以在任何处理器上(无论是在计算机中还是在其它电子设备中)安全并且兼容的执行保存在.class文件中的字节码。java虚拟机的”机器码”保存在.class文件中,有时也可以称之为字节码文件。java程序的跨平台主要是指字节码文件可以在任何具有java虚拟机的计算机或者电子设备上运行,java虚拟机中的java解释器(java命令)负责将字节码文件解释成为特定的机器码进行运行。

Java无用内存自动回收机制

  • 在java运行环境中,始终存在着一个系统级的线程,专门跟踪内存的使用情况,定期检测出不再使用的内存,并进行自动回收,避免了内存的泄露,也减轻了程序员的工作量。
  • 强制的垃圾回收System.gc(),也只是发送请求,具体什么时候执行垃圾回收,还是系统垃圾回收器决定的。

触发垃圾回收的方法:

  1. 将无用对象赋值为null。
  2. 重新为引用变量赋值。比如: Person p = new Person(“aaa”); p = new
    Person(“bbb”); 这样,new Person(“aaa”)这个对象就是垃圾了—-符合垃圾回收条件了。

java程序中也存在内存泄漏
Vector v = new Vector(10);
for (int i = 1; i < 100; i++) {
Object o = new Object();
v.add(o);
o = null; }
在这个例子中,我们循环申请Object对象,并将所申请的对象放入一个 Vector 中,如果我们仅仅释放引用本身,那么 Vector 仍然引用该对象,所以这个对象对 GC 来说是不可回收的。因此,如果对象加入到Vector 后,还必须从 Vector 中删除,最简单的方法就是将 Vector 对象设置为 null。

安装和配置环境
1、安装jdk
2、配置环境变量
配置java_home,是为了给电脑里其他需要调用java的程序使用,不是java开发必须的。
配置path,是java开发必须的配置,配置后可以在任意位置使用jdk。

第一个程序
public class HelloWorld{
public static void main(String[] args){
System.out.println(“hello,world”);
}
}
保存为 HelloWorld.java
执行
javac HelloWorld.java
java HelloWorld

基本规则:

  • 1、java拼写大小写敏感
  • 2、一个源文件中可以定义多个java类,但只能有一个类被定义为public类
  • 3、若源文件中定义了public类,那文件名必须和public类同名
  • 4、一个源文件包括多个类时,编译后会生成多个.class文件,每个文件名对应各个类名

Java基本属性

  • java语言中,类的声明也叫类的定义
  • 属性,是java中描述事物状态参数的部分-用单个数据就能描述清楚。java属性也称数据成员,实例变量或者域
  • 方法,相当于其他语言的函数,是java语言中描述事物行为/功能的部分
  • 构造方法,也称构造函数或者构造器,实际上也是java方法的一种,其功能是创建一个所属类的对象。若类中没有显示的定义构造方法,则会默认创建一个不带参数的构造方法。

  • public class Person{ //类定义

  • public int age;// 属性
  • public void setAge(int age){ //方法
  • this.age = age;
  • }
  • public Person(String n){//构造方法
  • name=n;
  • }
  • }

对象
- 对象的作用:封装信息和调用功能
- 对象通过包含属性(成员变量)实现信息封装,并对这些属性进行操作,即获取和修改属性值,称为“存/取”操作。

注释

  • 1、// 从开始到本行结尾
  • 2、/* 开头到 */结束,可以跨行
  • 3、以/* 开头,/结束,可以跨行,使用javadoc工具可以把注释内容提取出来生成软件说明文档。
    注:javadoc生成功能在“project-Generator Javadoc”中。

分隔符

  • 分号; 是每句java语句结束的标记
  • 逗号,当一个方法有多个参数时,用逗号分隔。
  • 圆点. 用于访问对象成员(属性或方法)时标名调用或隶属关系,格式为“对象名.对象成员”
  • 空格 用于分隔源代码中的不同成分。例如修饰符和数据类型之间,数据类型和变量名或方法名之间。
  • 花括号{} 用于限定某一成分的范围,成对使用。花括号括起来的零至多条语句叫语句块。

标识符

  • 例如:类名,方法名,变量名
  • 标识符由java字母,下划线,美元符开头,后跟字母,下划线,美元符或数字。
  • java字母可以理解为a-z,A-Z
  • java是大小写敏感的。

关键字

  • java中将一些特定的单词保留专门的用途
  • 例如:class,abstract,assert,byte,case,if,import,public,for等等
  • 总结:java关键字都是小写的,所以避免关键字可以把首字母大写,例如For,Public

数据类型

  • 强类型语言(java)
  • 例如 int i = 5;
  • 弱类型语言(javascript)
  • i = 5;

基本数据类型

  • 1、整型(byte,short,int,long,直接以数字给出的整型常量默认为int)
    这里写图片描述
  • 2、浮点型(float,double)
    这里写图片描述
  • 3、字符型
  • 常用的是英文半角的单引号括起来的字符,例如’a’,’字’,’ ‘(空格)

  • 4、布尔型

  • boolean类型数据有两种状态:true和 false
  • java不允许使用0或非0的整数来作为boolean使用

引用数据类型
- 类
- 接口类型
- 数组类型
- 枚举类型
- 注解类型

Java数据类型
这里写图片描述

  • 方法:相当于其他语言的函数,是用来完成相对独立的一段代码集合。
  • 方法必须定义在类中。
  • 形参,实参和返回值。
  • 例如方法定义
  • public String m(String name){
  • return name;
  • }
  • 每个方法的结尾都是以return结尾的,void方法只有单独的return;有些void没有写return,其实系统编译器运行时会自动加上。

方法的调用

  • 必须由所属类的对象以“对象名.方法名(实参列表)”方法来调用,实参与形参列表必须匹配。
  • 调用有返回值的方法时,可以接收返回值,也可以不接收返回值,但调用无返回值的方法,则一定不能接收,否则报错。

变量

  • 类中声明的属性也称成员变量,变量的范围是其所属对象的作用范围。
  • java变量按所属的数据类型可以分为基本类型变量和引用类型变量;按照声明位置可以分为成员变量和局部变量。
  • java类中声明的属性,称为成员变量或域
  • 方法或语句块中声明的变量叫局部变量,只在所属方法或语句块中可用。

理解:

  • java中方法参数传递方式是按值传递(即传递的都是值的副本)。 如果参数是基本类型,传递的是基本类型的字面量值的拷贝。
    如果参数是引用类型,传递的是该参量所引用的对象在堆中地址值的拷贝
  • 引用类型栈,堆。
  • 例子:
  • Person p = new Person();
  • Person q=p;

关键字 this

  • 表明了方法的当前对象
  • 在java方法中,调用该方法所属对象的其他方法

java命名惯例
这里写图片描述

算术运算符

  • +
  • -
  • *
  • /
  • %

关系运算符

  • >
  • <
  • >=
  • <=
  • ==
  • !=

其他运算符

  • 1、条件运算符
  • ? 例如:表达式1?表达式2:表达式3
  • 2、自增,自减
  • ++ 例如:i++,++i
  • – 例如:i–, –i
  • 3、字符串连接运算符
  • 当+两边是数值型,则进行运算。当两边有一侧是字符串型,则会把另一侧也按字符串处理,结果是字符串连接。

分支结构
if-else的三种形式

  • 1、if(<表达式>)
    <语句>

  • 2、if(<表达式>)
    <语句1> else <语句2>

  • 3、if(<表达式1>)
    <语句1> else if(<表达式2>) <语句2> else if(<表达式3>) <语句3> else <语句4>

if语句的嵌套
if(<表达式1>)
if(<表达式2>)
<语句1>
else
<语句2>
else
<语句3>

switch
switch(<表达式>)
case<常量1>:[<语句1>]
case<常量2>:[<语句2>]
case<常量3>:[<语句3>]
default:[<语句n>]
switch的表达式类型有基本类型byte,short,char,int和引用类型枚举还有四种封装类型Character,Byte,Short,Integer.
语句一般用break跳出。

for
for(<初始化表达式>;<循环条件表达式>;<迭代表达式>)
<语句>
具体流程
1、执行初始化表达式
2、计算循环条件表达式的值,若为true,则执行第三步,否则结束循环
3、执行循环体语句
4、执行迭代表达式,然后进入到第2步继续执行。

while
while(<循环条件表达式>)
<语句>

do-while
do
<语句>
while(<循环条件表达式>)

for-each
for(<迭代变量声明>:<数组或集合>)
<语句>

break
终止所在的switch语句或循环语句的运行

continue
结束所在的循环语句本次运行,即跳过其后的循环体语句,开始下一次循环。

递归:
递归,就是在运行的过程中调用自己。
构成递归需具备的条件:
1. 子问题须与原始问题为同样的事,且更为简单;
2. 不能无限制地调用本身,须有个出口,化简为非递归状况处理。

递归示例
public int f(int n){
if(n==1){
return 1;
}
else{
int k = f(n-1);
return n*k;
}
}

数组声明
<类型> var[] 或 <类型>[] var
数组对象的创建
new <类型>[length]

例如:
int[] a;
a = new int[3];
int[] a={1,2,3};
a[0]=23;

数组的length属性
int[] a;
a = new int[3];
int arraylength = a.length;

数组的初始化
int a[]={2,5,4};

多维数组
int[][] a = new int[2][];
a[0]=new int[2];
a[1]=new int[4];
或者
int[][] a = {{1,2},{4,5,8}};


就是若干相关类型组成的一个分组
使用关键字package来定义包
例如:package pkg1;
导入包中的类
例如:import pkg1;
由于JDK中 java.lang 包中的类经常被用到,如String类,System类等,编译器自动为我们引入了,不必显示的引入。

继承
作用是在已有类型基础上继续扩充或改造,得到新的数据类型,以满足新的需求。
例如:
public class Student extends Person{}
Student在Person基础上增加属性了方法。
java只能单重继承,不能多重继承。

这里写图片描述

继承
作用是在已有类型基础上继续扩充或改造,得到新的数据类型,以满足新的需求。
例如:
public class Student extends Person{}
Student在Person基础上增加属性了方法。
java只能单重继承,不能多重继承。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值