【Java基础系列】第1章 初识Java

1.1环境搭建

1.1.1下载安装JDK

  1. 官方网站下载JDK (www.sun.com 或者 www.oracle.com)

选择Downloads---JavaSE-----选择接受------下载符合电脑操作相同的版本

  1. 安装JDK

下一步------------关闭公用JRE,选择安装目录--------------下一步

1.1.2Java环境变量配置

(1)我的电脑----属性----高级配置------环境变量

①系统变量名:JAVA_HOME

变量值:JDK安装目录(如C:\Program Files\Java\jdk1.8.0_92\)

②系统变量名:path

变量值:%JAVA_HOME%\bin;%JAVA_HOME%\jre;

---------------------------使用eclipse工具需要增加以下配置的环境-------------------------

③系统变量名:CLASSPATH --------------这个变量需要新建

变量值:.;%JAVA_HOME%\lib\tools.jar

④系统变量名:path

变量值:eclipse工具要使用的platform-tools;地址

如:E:\android\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;

1.1.3检查搭建结果

运行------cmd

命令:java -version : 检查JDK安装是否成功,查看安装的JDK版本。

javac : JDK环境变量的配置是否成功。

1.1.4 Dos的常用指令

1、记事本写代码运行方法

(1)将.txt后缀名改为.java

(2)打开cmd,用cd找到.java文件所在文件夹

(3)编译 javac 类名.java

(4)编译 javac -d .类名.java 或者 javac -d ./类名.java

(将java类编译到对应的包,前提是该类中第一行有定义包:package com.java;)

  1. 运行 java 类名

  2. 清除 cls

  3. 从一个文件夹转到另一个文件夹 cd ..\要进的文件夹

  4. 查看内部类编译文件中的final池 javap -c 内部类编译出的class文件名

2、cmd查找文件

cd.. 后退

cd 文件名 前进

D: 打开d盘

D:dir 查看d盘里的内容

1.1.5内存分析

①heap(堆)

放创建出来的对象,即new出来的东西

②stack(栈)

放临时变量,即局部变量

③data segment 静态变量字符串常量

数据段(data segment)通常是指用来存放程序中已初始化的全局变 量的一块内存区域。数据段属于静态内存分配

④code segment 存放代码

代码段,程序要运行,当然要把代码移进内存

◆寄存器:我们在程序中无法控制

◆栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中(new 出来的对象)

◆堆:存放用new产生的数据

◆静态域:存放在对象中用static定义的静态成员

◆常量池:存放常量

◆非RAM存储:硬盘等永久存储空间

◆Java内存分配中的栈

函数中定义的一些基本类型的变量数据和对象的引用变量都在函数的栈内存中分配

栈特点:

Java就在栈中为这个变量分配内存空间,当该变量退出该作用域后,Java会自动释放掉为该变量所分配的内存空间,

该内存空间可以立即被另作他用。栈中的数据大小和生命周期是可以确定的,当没有引用指向数据时,这个数据就会消失。

◆Java内存分配中的堆:

堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动 垃圾回收器来管理。

◆堆与栈的优缺点?

堆优点:可以动态地分配内存 大小,生存期也不必事先告诉编译器,因为它是在运行时动 态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。

堆缺点:由于要在运行时动态 分配内存,存取速度较慢。

栈优点:存取速度比堆要快,仅次于寄存器,栈数据可以共享。

栈缺点:存在栈中的数据大小与生存期必须是 确定的,缺乏灵活性。

◆常量池 (constant pool)

常量池指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。

如果是编译期已经创建好(直接用双引号定义的)的就存储在常量池中,如果是运行期 (new出来的)才能确定的就存储在堆中。

java中基本类型的包装类的大部分都实现了常量池技术,这些类是

Byte,Short,Integer,Long,Character,Boolean,

另外两种浮点数类型的包装类则没有实现。另外Byte,Short,Integer,Long,Character这5种整型的包装类也只是在对应值小于等于127时才可使用对象池,也即对象不负责创建和管理大于127的这些类的对象。

*基本类型:基本类型创建后,赋值是直接赋值在栈中,不会在堆中创建对象引用。

如:int i=2;

char c=’q’;

*引用类型:引用类型创建后,会在堆中生成对象,赋值后,会指向常量区的该值地址

如:String[ ] arr=new String[ ]{“aa”,”bb”,”cc”};

String s=“aa”; //在堆中创建一个对象

String ss=new String[ ]{“aa”}; //在堆中创建两个对象

Int[ ] arr2=new int[ ]{2,1,5,3};

1.3变量

按照作用域分:

(1)成员变量:在类里定义,作用于整个类

(2)局部变量:在方法里定义,只能作用于当前方法体

定义格式: ①修饰符 数据类型 名字;

②修饰符 数据类型 名字=值;

③数据类型 名字;

④数据类型 名字=值;

(数据可以发生改变时用变量)

1.4常量

定义格式: ①修饰符 final 数据类型 名字=值;

②final 数据类型 名字=值;

常量的命名建议用大写字母。(固定的数据,不希望被改变的数据用常量定义)

常量在定义的时候必须给予赋值。

1.5访问权限修饰符

修饰符

同一个事物(对象)

同一个包

不同包

其他的

private

default(默认)

protected

√(仅限子类)

public

类修饰符

public、不填

abstract、final (互斥,二选一)

static可以修饰内部类

成员变量修饰符

不可用:abstract

static、final (可同时出现)

public、protected、默认、private

行为方法修饰符

static

abstract、final (互斥,二选一)

public、protected、默认、private

1.5.1 static 内存位置固定的,静态的

①static修饰的数据表示静态数据,在内存里有固定的位置;

非静态数据,在内存里没有固定的位置。

静态成员是属于类的,区别于个别对象,可以在本类或者其它类调用

②静态属性:

静态变量:无论实例化多少次,只要在一次运行中,静态变量都是累加

非静态变量:每次实例化都会自动恢复为原来的值

③静态方法:

静态方法:只能够去调用静态属性和方法,不能调用直接非静态属性和方法;在静态方法中不可以使用this关键字

非静态方法:可以去调用静态属性和方法,因为静态属性和方法会先被编译再到非静态的被编译(但不能在非静态方法体内创建static静态属性或方法),也可通过this访问静态属性或者方法。

④区别静态成员与非静态成员调用方法

静态成员的调用方法:

(1)类名.静态成员 ( 调用静态属性或者静态方法推荐使用 )

(2)对象名.静态成员 ( 也可以使用,但是不推荐 )

非静态成员的调用方法:

  1. 对象名.静态成员 ( 非静态成员调用只能用此方法 )

1.5.2 final 不可修改的,不可继承的

①final修饰的类,该类不能被继承

②final修饰的方法,该方法不能被重写,但可以被继承

③final 修饰属性值,该属性不能被修改

1.5.3 abstract 框架的,抽象的

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

__Yvan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值