java基础(一)

这辈子没办法做太多事情所以每一件都要做到精彩绝伦

People can‘t do too many things in my life,so everything will be wonderful   乔布斯

1.     软件开发

1.1     软件开发概念

软件按照特定顺序组织的计算机数据和指令的集合

开发软件的制作过程

软件开发借助开发工具和计算机语言制作软件

语言常见计算机语言C、C#、C++、PHP、JAVA、Python、ruby、lua等

l J2SE(Java 2 Platform StandardEdition)标准版

是为开发普通桌面和商务应用程序提供的解决方案

该技术体系是其他两者的基础可以完成一些桌面应用程序的开发

l J2ME(Java 2 Platform MicroEdition)小型版

是为开发电子消费产品和嵌入式设备提供的解决方案

l J2EE(Java 2 Platform EnterpriseEdition)企业版

是为开发企业环境下的应用程序提供的一套解决方案

该技术体系中包含的技术如Servlet、Jsp等主要针对于Web应用程序开发

  • SE(J2SE)standard edition标准版是通常用的一个版本从JDK 5.0开始改名为Java SE
  • EE(J2EE)enterprise edition企业版使用这种JDK开发J2EE应用程序从JDK 5.0开始改名为Java EE
  • 常见DOS命令

d: 回车   盘符切换

dir(directory):列出当前目录下的文件以及文件夹

md (make directory) : 创建目录

rd (remove directory): 删除目录

cd (change directory)改变指定目录(进入指定目录)

cd.. : 退回到上一级目录

cd\: 退回到根目录

del (delete): 删除文件,删除一堆后缀名一样的文件*.txt

exit : 退出dos命令行

cls : (clear screen)清屏

ipconfig:查看本地ip

netstat –ano列出所有端口的情况

netstat -aon|findstr "49157"查看被占用端口对应的PID

tasklist|findstr "2720"查看是哪个进程或者程序占用了2720端口

或打开任务管理器切换到进程选项卡在PID一列查看2720对应的进程

taskkill /f /t /im xxx.exe结束对应进程

2.     javase

2.1     java语言发展史

詹姆斯.高斯林James Gosling

1977年获得了加拿大卡尔加里大学计算机科学学士学位1983年获得了美国卡内基梅隆大学计算机科学博士学位毕业后到IBM工作设计IBM第一代工作站NeWS系统但不受重视。后来转到sun公司1990年与Patrick,Naughton和Mike Sheridan等人合作“绿色计划”后来发展一套语言叫“Oak”后改名为Java.

JDK:Java Development KitJava语言的软件开发工具包SDK

2.2     java语言特点

简单性

面向对象

分布式处理

健壮性

结构中立

解释性

高性能

多线程

动态

安全性

开源

跨平台可移植性通过java语言编写的应用程序在不同的系统平台上都可以运行。

环境需要在需要运行java应用程序的操作系统上安装一个Java虚拟机JVM Java Virtual Machine即可有JVM来负责Java程序在该系统中的运行

2.2.1       JRE与JDK

JREJava RuntimeEnvironmentJava运行环境包括Java虚拟机JVM java virtual machine和Java程序所需的核心类库等如果想要运行一个开发好的Java程序计算机中需要安装JRE即可。

JDKJava development kitJava开发工具包JDK是提供给Java开发人员使用的其中包含了Java的开发工具也包括了JRE就不用单独安装JRE了。

其中的开发工具编译工具javac.exe和打包工具jar.exe等

总结使用JDK开发完成的Java程序交给JRE去运行

JDK,JRE,JVM的作用及关系

(1)作用

JVM保证Java语言跨平台

JREJava程序的运行环境

JDKJava程序的开发环境开发工具包

(2)关系

JDKJRE+工具

JREJVM+类库

jdk安装包网上下载安装步骤下一步即可注意事项安装目录不能出现中文和空格

2.3     HelloWorld

1:编写java源程序(.java)

2:通过javac命令编译生成.class文件

3:通过java命令运行.class文件

2.4     配置path环境变量

(1)path环境变量的作用

保证javac命令可以在任意目录下运行

(2)path配置的两种方案

找到环境变量的位置jkd安装目录D:\develop\Java\jdk1.7.0_60

系统变量里面

新建

变量名JAVA_HOME

变量值D:\develop\Java\jdk1.7.0_60

修改

变量名Path

变量值%JAVA_HOME%\bin;以前的内容前后都可以

配置完成后测试是否配置成功

打开cmd窗口输入java –version

结果如下说明成功

2.5     java语法

关键字

标识符

注释

常量、进制和进制转换

变量

数据类型和类型转换

运算符

语句

2.5.1       关键字

用于定义数据类型的关键字


class


interface


byte


short


int


long


float


double


char


boolean


void


用于定义数据类型值的关键字


true


false


null


用于定义流程控制的关键字


if


else


switch


case


default


while


do


for


break


continue


return


用于定义访问权限修饰符的关键字


private


protected


public


用于定义类函数变量修饰符的关键字


abstract


final


static


synchronized


用于定义类与类之间关系的关键字


extends


implements


用于定义建立实例及引用实例判断实例的关键字


new


this


super


instanceof


用于异常处理的关键字


try


catch


finally


throw


throws


用于包的关键字


package


import


其他修饰符关键字


native


strictfp


transient


volatile


assert

2.5.2       进制

Java针对整数常量提供了4种表现形式

二进制

八进制

十进制

十六进制

  • 进制概述就是进位制是人们规定的一种进位方法。对于任何一种进制—X进制就表示某一位置上的数运算时是逢X进一位。二进制就是逢二进一八进制就是逢八进一以此类推。
  • 二进制的由来任何数据在计算机中都是以二进制的形式存在的。二进制早期由电信号开关演变而来。

一个整数在内存中一样也是二进制的但是使用一大串的1或者0组成的数值进行使用很麻烦。

所以就想把一大串缩短点将二进制中的三位用一位表示。

这三位可以取到的最大值就是7.超过7就进位了这就是八进制。

但是对于过长的二进制变成八进制还是较长所以出现的用4个二进制位表示一位的情况

四个二进制位最大是15这就是十六进制。

规律进制越大表现形式越短。

l 不同进制的数据组成

二进制

由0,1组成。以0b开头

八进制

由0,1,…7组成。以0开头

十进制

由0,1,…9组成。整数默认是十进制的

十六进制

由0,1,…9,a,b,c,d,e,f(大小写均可)。以0x开头

2.5.3       进制转换详解

进制转换

(1)其他进制到十进制

系数就是每一个位上的数值

基数x进制的基数就是x

权对每一个位上的数据从右并且从0开始编号对应的编号就是该数据的权。

结果系数*基数^权次幂之和。

(2)十进制到其他进制

除基取余直到商为0余数反转。

(3)进制转换的快速转换法

A:十进制和二进制间的转换

8421码。

B:二进制到八进制十六进制的转换

  • 进制概述

  • 其他进制转换为十进制

十进制12345

系数1,2,3,4,5

基数10

权4,3,2,1,0

结果系数*基数^权次幂之和1*10^4+2*10^3+3*10^2+4*10^1+5*10^0=12345

  • 十进制转换为其他进制

  • 快速转换

2.5.4       原码反码补码

  • 进制转换

(1)其他进制到十进制

系数就是每一个位上的数值

基数x进制的基数就是x

权对每一个位上的数据从右并且从0开始编号对应的编号就是该数据的权。

结果系数*基数^权次幂之和。

(2)十进制到其他进制

除基取余直到商为0余数反转。

(3)进制转换的快速转换法

A:十进制和二进制间的转换

8421码。

B:二进制到八进制十六进制的转换

2.5.5       变量

变量(掌握)

(1)在程序的执行过程中其值在某个范围内可以发生改变的量

(2)变量的定义格式

A:数据类型 变量名 = 初始化值;

B:数据类型 变量名;

变量名 = 初始化值;

2.5.6       数据类型

(1)Java是一种强类型语言针对每种数据都提供了对应的数据类型。

(2)分类

A:基本数据类型4类8种参见3基本数据类型

B:引用数据类型类接口数组。

(3)基本数据类型

A:整数                        占用字节数

byte                    1

short                  2

int                     4

long                    8

B:浮点数

float                   4

double               8

C:字符

char                    2

D:布尔

boolean             1

注意

整数默认是int类型浮点数默认是double。

长整数要加L或者l推荐使用L因为小写容易和数字1混淆。

单精度的浮点数要加F或者f。

数据范围

l 默认转换

byte,short,char—int—long—float—double

byte,short,char相互之间不转换他们参与运算首先转换为int类型

l 强制转换不建议使用

目标类型 变量名=(目标类型)(被转换的数据);

2.5.7       int转换为byte类型问题

Java代码  

1.public class Test {

2.    public static void main(String[] args) {

3.        int start = -131;

4.        int end = 131;

5.

6.        for (int i = start; i < end; i++)

7.            if ((byte) i != i)

8.                System.out.println("原数" + i + "\t转化后:" + (byte) i);

9.    }

10.

11.}

程序运行结果如下

Java代码  

1.  原数-131 转化后:125

2.  原数-130 转化后:126

3.  原数-129 转化后:127

4.  原数128  转化后:-128

5.  原数129  转化后:-127

6.  原数130  转化后:-126

为什么会出现这种情况呢

因为Java中byte是用8位来存储只能表示-128~127之间的数当由int强制类型转化为byte时系统就采取了截取int后8位的做法。

1.  //java采用补码存储整数int型为32位byte为8位

2.  //那么130在内存中的表示形式00000000 00000000 00000000 10000010

3.  //这样截取后8位就变成10000010补码表示的时候第一位是符号位0正1负

4.  //所以可以知道10000010肯定是一个负数了再来看它的数值部分

5.  //补码由原码转换为反码再加1(转换规则参考2.5.4原码反码补码)

6.  //所以0000010应该变为1111101 + 1 = 1111110(即126)

7.  //又因为是负数所以就截取变成-126了

8.

9.  //我们再来看下-130的例子(符号位是1其余按位取反+1)

10.//-130在内存中的表示形式11111111 11111111 11111111 01111110

11.//这样截取后8位就变成01111110

12.//显然这是整数啊然后数值部分是126

13.//64+32+16+8+4+2=126

2.6     运算符

运算符的优先级从高到低


优先级


描述


运算符


1


括号


()、[]


2


正负号


+、-


3


自增自减非


++、--、!


4


乘除取余


*、/、%


5


加减


+、-


6


移位运算


<<、>>、>>>


7


大小关系


>、>=、<、<=


8


相等关系


==、!=


9


按位与


&


10


按位异或


^


11


按位或


|


12


逻辑与


&&


13


逻辑或


||


14


条件运算


?:


15


赋值运算


=、+=、-=、*=、/=、%=


16


位赋值运算


&=、|=、<<=、>>=、>>>=

如果在程序中要改变运算顺序可以使用()。

2.6.1       算术运算符

A:+,-,*,/,%,++,--

B:+的用法

a:加法

b:正号

c:字符串连接符

C:/和%的区别

数据做除法操作的时候/取得是商%取得是余数

D:++和--的用法

a:他们的作用是自增或者自减

b:使用

**单独使用

放在操作数据的前面和后面效果一样。

a++或者++a效果一样。

**参与操作使用

放在操作数的前面先自增或者自减再参与操作

inta = 10;

intb = ++a;

b=11a=11;

放在操作数的后面先参与操作再自增或者自减

inta = 10;

intb = a++;

b=10;a=11;

2.6.2       赋值运算符

A:=,+=,-=,*=,/=,%=等

B:=叫做赋值运算符也是最基本的赋值运算符

intx = 10; 把10赋值给int类型的变量x。

C:扩展的赋值运算符的特点

隐含了自动强制转换。

2.6.3       比较运算符

A:==,!=,>,>=,<,<=

B:无论运算符两端简单还是复杂最终结果是boolean类型。

注意:千万不要把==写成了=

2.6.4       逻辑运算符

A:&,|,^,!,&&,||

B:逻辑运算符用于连接boolean类型的式子

C:结论

&:有false则false

|:有true则true

^:相同则false不同则true。

情侣关系。

!:非true则false非false则true

&&:结果和&是一样的只不过有短路效果。左边是false右边不执行。

||:结果和|是一样的只不过有短路效果。左边是true右边不执行。

2.6.5       位运算符

A:^的特殊用法

一个数据针对另一个数据位异或两次该数不变

B:面试题

a:请实现两个变量的交换

**采用第三方变量

**用位异或运算符

左边a,b,a

右边a^b

b:请用最有效率的方式计算出2乘以8的结果

2<<3

2.6.6       三元运算符

A:格式

比较表达式?表达式1:表达式2;

B:执行流程

首先计算比较表达式的值看是true还是false。

如果是true表达式1就是结果。

如果是false表达式2就是结果。

2.6.7       if语句

(1)三种格式

A:格式1

if(比较表达式) {

语句体;

}

B:格式2

if(比较表达式) {

语句体1;

}else{

语句体2;

}

C:格式3

if(比较表达式1) {

语句体1;

}elseif(比较表达式2){

语句体2;

}

...

else{

语句体n+1;

}

(2)注意事项

A:比较表达式无论简单还是复杂结果是boolean类型

B:if语句控制的语句体如果是一条语句是可以省略大括号的如果是多条不能省略。

建议永远不要省略。

C:一般来说有左大括号就没有分号有分号就没有左大括号。

D:else后面如果没有if是不会出现比较表达式的。

E:三种if语句其实都是一个语句只要有一个执行其他的就不再执行。

2.6.8       switch语句

(1)格式

switch(表达式) {

case值1:

语句体1;

break;

case值2:

语句体2;

break;

...

default:

语句体n+1;

break;

}

格式解释说明

switch:说明这是switch语句。

表达式:可以是byte,short,int,char

JDK5以后可以是枚举

JDK7以后可以是字符串

case:后面的值就是要和表达式进行比较的值

break:表示程序到这里中断跳出switch语句

default:如果所有的情况都不匹配,就执行这里,相当于if语句中的else

(2)注意事项:

A:case后面只能是常量不能是变量而且多个case后面的值不能出现相同的

B:default可以省略吗?

可以省略但是不建议因为它的作用是对不正确的情况给出提示。

特殊情况

case就可以把值固定。

A,B,C,D

C:break可以省略吗?

可以省略但是结果可能不是我们想要的。

会出现一个现象case穿透。

最终我们建议不要省略

D:default一定要在最后吗?

不是可以在任意位置。但是建议在最后。

E:switch语句的结束条件

a:遇到break就结束了

b:执行到末尾就结束了

(3)if语句和switch语句各自的场景

A:if

针对boolean类型的判断

针对一个范围的判断

针对几个常量的判断

B:switch

针对几个常量的判断

2.6.9       循环语句

(1)有三种:for,while,do...while

(2)for循环语句

A:格式

for(初始化语句;判断条件语句;控制条件语句){

循环体语句;

}

B:注意事项

a:判断条件语句无论简单还是复杂结果是boolean类型

b:循环体语句如果是一条可以省略大括号但是不建议

c:有分号就没有左大括号有左大括号就没有分号

(3)while循环

A:基本格式

while(判断条件语句) {

循环体语句;

}

扩展格式

初始化语句;

while(判断条件语句){

循环体语句;

控制条件语句;

}

通过查看这个格式我们就知道while循环可以和for循环等价转换。

B:for和while的区别

a:使用上的区别

for语句的那个控制条件变量,在循环结束后不能在使用了。

而while的可以继续使用。

b:理解上的区别

for适合于一个范围的判断

while适合次数不明确的

举例:吃葡萄

(4)do...while循环

A:基本格式

do{

循环体语句;

}while(判断条件语句);

扩展格式

初始化语句;

do{

循环体语句;

控制条件语句;

}while(判断条件语句);

通过查看格式我们就可以看出其实三种循环的格式可以是统一的。

B:三种循环的区别

a:do...while循环至少执行一次循环体

b:for和while必须先判断条件是否是true然后后才能决定是否执行循环体

(5)循环使用的注意事项(死循环)

A:一定要注意修改控制条件,否则容易出现死循环。

B:最简单的死循环格式

a:while(true){...}

b:for(;;){}

2.6.10  控制跳转语句

(1)break:中断的意思

A:用在循环和switch语句中离开此应用场景无意义。

B:作用

a:跳出单层循环

b:跳出多层循环需要标签语句的配合

(2)continue:继续

A:用在循环中离开此应用场景无意义。

B:作用

a:跳出单层循环的一次可以继续下一次

(3)return:返回

A:用于结束方法的后面还会在继续讲解和使用。

B:一旦遇到return,程序就不会在继续往后执行。

2.7     方法

(1)方法就是完成特定功能的代码块。

(2)格式

修饰符返回值类型 方法名(参数类型 参数名1,参数类型 参数名2…){

函数体;

return返回值;

}

修饰符目前就用public static。后面再详细讲解其他修饰符

返回值类型就是功能结果的数据类型

方法名就是起了一个名字方便我们调用该方法。

参数类型就是参数的数据类型

参数名就是变量

参数分类

实参实际参与运算的数据

形参方法上定义的用于接收实际参数的变量

方法体语句就是完成功能的代码块

return结束方法

返回值就是功能的结果由return带给调用者。

(3)两个明确

返回值类型结果的数据类型

参数列表参数的个数及对应的数据类型

(4)方法调用

A:有明确返回值的方法

a:单独调用没有意义

b:输出调用不是很好因为我可能需要不结果进行进一步的操作。

c:赋值调用推荐方案

B:void类型修饰的方法

a:单独调用

(5)方法的注意事项

A:方法不调用不执行

B:方法之间是平级关系不能嵌套定义

C:方法定义的时候参数是用隔开的

D:方法在调用的时候不用在传递数据类型

E:如果方法有明确的返回值类型就必须有return语句返回。

(6)方法重载

在同一个类中方法名相同参数列表不同。与返回值无关。

参数列表不同

参数的个数不同。

参数的对应的数据类型不同。

2.8     数组

(1)数组存储同一种数据类型的多个元素的容器。

(2)特点每一个元素都有编号从0开始最大编号是长度-1。

编号的专业叫法索引

(3)定义格式

A:数据类型[] 数组名;

B:数据类型 数组名[];

推荐是用A方式B方法就忘了吧。但是要能看懂

(4)数组的初始化

A:动态初始化

只给长度系统给出默认值

举例int[] arr= new int[3];

B:静态初始化

给出值系统决定长度

举例int[] arr= new int[]{1,2,3};

简化版int[] arr= {1,2,3};

(5)Java的内存分配

a:栈 存储局部变量对象的引用

b:堆 存储new出来的对象

c:方法区 后续详解

d:本地方法区和系统相关

e:寄存器cpu使用

名词

局部变量

  1. 方法定义中或者方法声明上的所有变量
  2. 使用完毕立即消失

实体对象new出来的东西

比如newint[3];

1  每一个实体都有首地址值

2  每一个实体内的数据都有默认值

byte,short,int,long  0

float,double       0.0

char             ‘\u0000’

boolean         false

引用类型       null

3  使用完毕后会被垃圾回收器空闲的时候回收。

(6)数组内存图

A:一个数组

B:二个数组

C:三个数组(两个栈变量指向同一个堆内存)

(7)数组的常见操作

二维数组

(1)元素是一维数组的数组。

(2)格式

A:数据类型[][] 数组名 = new 数据类型[m][n];

B:数据类型[][] 数组名 = new 数据类型[m][];

C:数据类型[][] 数组名 = new 数据类型[][]{{...},{...},{...}};

D:数据类型[][] 数组名 ={{...},{...},{...}};

(3)案例:

A:二维数组的遍历

B:二维数组的求和

C:杨辉三角形

答案参见./base/Array2Test系列或百度

时间: 2024-10-09 05:41:32

java基础(一)的相关文章

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机

第3篇-JAVA基础

第3篇-JAVA基础 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程 初学心得: 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ] 上篇回顾 上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义 本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!! 1.JAVA基础语法格式 JAVA采用unicode编码 1

Java基础学习第五天——方法与数组

文档版本 开发工具 测试平台 工程名字 日期 作者 备注 V1.0 2016.02.24 lutianfei none 第三章Java基础语法 方法 方法就是完成特定功能的代码块,即函数. 格式: 修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2-) { 函数体; return 返回值; } 详细解释: 修饰符,目前就用public static,后详解. 返回值类型:就是功能结果的数据类型. 方法名:符合命名规则即可,方便我们的调用. 参数: 实际参数:就是实际参与运算的.

2.35 Java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别

java基础总结①抽象②接口③设计抽象类和接口的原则④接口和抽象类的区别 一.抽象 abstract作用:不能产生对象,充当父类,强制子类正确实现重写方法和类相比仅有的改变是不能产生对象,其他的都有,包括构造.属性等等任何一个类只要有一个抽象的方法就成了抽象类 抽象方法 public abstract A();①方法是抽象的,这个类也是抽象的:②子类必须重写抽象方法,除非子类也是抽象类 抽象类可以没有抽象方法,但一般不这么设计 二.接口 interface 接口也是Java的一种引用数据类型(J

java基础 计算今天距本月最后一天还剩多少天

Calendar  c = new GregorianCalendar();   //GregorianCalendar 是Calendar的一个具体子类,提供了世界上大多数国家/地区使用的标准日历系统. GredorianCalendar 是一种混合日历,可由调用者通过调用setGregorianChange()来更改起始日期. Calendar c = new  Calendar.getInstance(TimeZone.getTimeZone("GMT+08:OO"));  //

Java基础语法

Java的基础语法中包含字符集.标识符和关键字.变量和常量.语句.注释.运算符和表达式这些基本要素. 一.关键字 编程语言都有一些保留的单词,用于定义该语言,这些单词对于编译器有特殊含义,不能作为标识符使用: Java中的true.false.null这三个保留字,不能作为标识符使用,对于编译器有特殊含义: main是一个用于描述Java程序开始方法的特殊名称,它不是一个关键字: abstract 抽象 boolean 逻辑运算: 布尔 break 打破: 断开 byte 字节: case 例,

JAVA基础——重新认识String字符串

深入剖析Java之String字符串 在程序开发中字符串无处不在,如用户登陆时输入的用户名.密码等使用的就是字符串. 在 Java 中,字符串被作为 String 类型的对象处理. String 类位于 java.lang 包中.默认情况下,该包被自动导入所有的程序. 创建 String 对象有三种方法 String s1="我是字符串1"; String s2=new String();//创建一个空的字符串对象 String s3=new String("我是字符串2&q

第2篇-JAVA基础

第2篇-JAVA基础 每篇一句 :无论处在任何领域中,即使是在小的事情,都要让每一天有所价值 初学心得: 在学习的过程中,错误是很宝贵的,它一笔"财富",更是一种"价值" (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-24 | JAVA基础] JAVA基础 回顾 在上一篇文章中,最后提到两个问题, 相信读者们已经提前超额完成了"任务" 下面跟着笔者的思路,深入掌握JAVA底层的运行机制 JAVA运行机制 (重中之重) JAV

第4篇-JAVA基础

第4篇-JAVA基础 每篇一句 :世界上本没有完美,但是我们从未放弃追求完美 初学心得: 乐于挥霍的时间,都不能算作浪费 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-04-01| JAVA基础 Ⅳ] 程序运行流程 (1) 顺序结构 (2) 分支结构 (3) 循环结构 (4) break 与 continue关键字 (5) 数组 (6) 方法 1.顺序结构 如果代码里没有流程控制,程序是至上而下一行一行执行的 一条语句执行完之后继续执行下一条语句,直到程序的最后 2.分支结构 顺

JAVA基础汇总及例题详解

java语言的一个核心: jdk, java development kits---面向开发人员 jre, java Runtime Environment---服务器上 java虚拟机---(以字节码为指令的CPU)---*.class java编译器-->字节码-->类加载器进行验证-->虚拟机运行 垃圾回收机制 public class ...{ int a = 1; } c/c++垃圾回收由程序员去运行 java编程语言(一门纯面向对象)的特点: 1, 面向对象  封装  继承