Java 基础知识

 

 黑马程序员

---------------------- <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! ----------------------

一.   什么是软件

     软件是一系列按照特定顺序组织的计算机数据和指令的集合。程序设计的最终结果是软件。

     系统软件: 系统软件为计算机使用提供最基本的功能.

     例如: DOS, Windows, Linux, Unix, Mac OS, Android, iOS

     应用软件: 系统软件并不针对某一特定应用领域。而应用软件则相反,不同的应用软件根据用户和所服务的领域提供不同的功能。

     例如: Word, Excel, PPT, QQ, FeiQ, 凌波, UltraEdit, Eclipse

二.    什么是计算机语言

    计算机语言指用于人与计算机之间通讯的语言。计算机语言是人与计算机之间传递信息的媒介。

    为了使电子计算机进行各种工作,就需要有一套用于编写计算机程序的数字、字符和语法规划,由这些组成计算机指令就是计算机语言。

    软件就是由若干条计算机语言所组成的。

 

三. 计算机语言分类

机器语言:

       机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义。

汇编语言:

       汇编语言是使用一些特殊的符号来代替机器语言的二进制码,计算机不能直接识别,需要用一种软件将汇编语言翻译成机器语言。

高级语言:

       使用普通英语进行编写源代码,通过编译器将源代码翻译成计算机直接识别的机器语言,之后再由计算机执行。

 
四.Java 语言
 
1.Java是一种既面向对象又可以跨平台的高级语言,即:编写一次,随处运行
      Java不仅适用于单机应用程序和基于网络的程序,也可用于创建消费类设备的附件程序,如移动电话、掌上设备等
 
什么是跨平台性?
     通过Java语言编写的应用程序在不同的系统平台上都可以运行。
原理是什么?
    只要在需要运行java应用程序的操作系统上,
    先安装一个Java虚拟机(JVM Java Virtual Machine)即可。
    由JVM来负责Java程序在该系统中的运行。
 
    Java虚拟机(Java Virtual Machine)是可运行Java字节码的虚拟计算机系统
    使用Java语言编写的程序,实际上是运行在JVM之上,而不是运行在操作系统上
    它有一个解释器组件,可以实现Java字节码和计算机操作系统之间的通信
    因为有了JVM,所以同一个Java程序在三个不同的操作系统中都可以执行。这样就实现了Java程序的跨平台性。也称为Java具有良好的可移植性。
 

 2.JDK与JRE

JDK(Java Development Kit)

      Java开发工具,包含开发Java程序的所有组件,包含JRE

JRE(Java Runtime Environment)

       Java运行环境,如果要运行Java程序,就需要JRE的支持

常用组件:

src.zip            Java是一门开源的语言,其源代码都在这个压缩包中

rt.jar              Java的基础核心类库,我们编写Java程序时使用的class都在这个jar包中

javac.exe        编译器,将.java源代码编译为.class文件

java.exe          虚拟机,运行Java程序的工具

jar.exe            将class文件打成jar包的工具

javadoc.exe     生成帮助文档的工具

3.   JDK版本

JDK1.0、JDK1.1、JDK1.2、JDK1.3、JDK1.4、JDK5.0、JDK6.0

JDK5.0即为JDK1.5,此版本较1.4大幅变更,因为非常强大,取名叫老虎(Tiger)版,也从1.4升级为5.0

JDK6.0即为JDK1.6,官方版本为6.0但很多人习惯叫1.6,此版本名为野马(Mustang)

 

4.    环境变量

环境变量是指在操作系统中用来指定操作系统运行环境的一些参数

环境变量三类
系统环境变量(优先级高于用户环境变量,系统环境变量不能引用%%用户环境变量)
path=%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem
path:

       如果想在任意目录下运行一个程序,我们就需要将程序所在的路径配置在path环境变量中。

       通常我们会将javac.exe所在目录配置到path中,因为我们需要在任意目录下都能编译Java源文件。

       配置完成之后可以在命令行输入javac测试,如果显式帮助信息则是配置成功。

用户环境变量
JAVA_HOME=D:\Program Files\Java\jdk1.6.0_23
path=%JAVA_HOME%\bin
临时环境变量

classpath:

       Java虚拟机运行时加载类的路径。JDK5之后不配置默认为当前目录“.”。如使用JDK1.4或以下版本时需要人工配置。

       暂时不需要配置,默认加载当前目录下的所有class文件。

配置方式:

JVM查找类文件的顺序:

•如果没有配置classpath环境变量,JVM只在当前目录下查找要运行的类文件。
•如果配置了classpath环境,JVM会先在classpath环境变量值的目录中查找要运行的类文件。
•值的结尾处如果加上分号,那么JVM在classpath目录下没有找到要指定的类文件,会在当前目录下在查找一次。
•值的结尾出如果没有分号,那么JVM在classpath目录下没有找到要指定的类文件,不会在当前目录下查找,即使当前目录下有,也不会运行。
•建议:配置classpath环境变量时,值的结尾处不要加分号,如果需要访问当前目录可以用 “.”表示。

 

a.  命令行

点击屏幕左下角开始 – 运行 – 输入cmd – 在命令行中直接输入命令进行修改

查看变量值:set 变量名

设置变量值:set 变量名=变量值,多个值之间使用分号“;”分割,引用变量时使用“%变量名%”形式

注意:此种方式仅适用于当前窗口

b.  我的电脑

鼠标右键点击我的电脑 – 属性 – 高级 – 环境变量

找到要修改的变量将其值修改,此种方式永久有效

 

注意:

配置环境变量之后可以查看编译器(javac.exe)和虚拟机(java.exe)版本,虚拟机版本不能低于编译器。

使用哪个版本的编译器和虚拟机取决于path环境变量,如果虚拟机版本过低,可以通过环境变量来修改。

编译器版本查看方式:javac –version

虚拟机版本查看方式:java –version

 

五.第一个Java程序

1. 编写源代码

新建文本文档,扩展名改为.java,在文件中写入代码。

a,通过class关键字定义一个类。将代码都编写到该类中。
b,为了保证该的独立运行。在类中定义个主函数。格式public static void main(String[] args)
c,保存成一个扩展名为java的文件。
d,在dos控制台中通过javac工具对java文件进行编译。
e,在通过java命令对生成的class文件进行执行。

/*
需求:定义一个hello world小程序。

思路:
1,
2,

步骤:
1,通过class关键字定义一个类。将代码都编写到该类中。
2,为了保证该的独立运行。在类中定义个主函数。格式public static void main(String[] args)
3,保存成一个扩展名为java的文件。
4,在dos控制台中通过javac工具对java文件进行编译。
5,在通过java命令对生成的class文件进行执行。
*/

class Demo//定义一个累。
{
 //主函数。
 public static void main(String[] args)
 {
  //输出语句。
  System.out.println("hello haha");
 }
}

 

class Demo //这是我的第一个java小程序
{
 /*
 main函数可以保证该的独立运行。
 它是程序的入口。
 它会被JVM所调用。
 */
 public static void main(String[] args)
 {
  /*
  System.out.println("hello java");//这是输出语句,可以打印小括号中的内容。
  System.out.println("hello world");

  */  
 }
}

注意:

windows操作系统默认是隐藏已知文件扩展名的。

请测试新建一个文本文档,如果看到的文件名是“新建 文本文档”而不是“新建 文本文档.txt”,那么说明你的扩展名被隐藏了。

请选择菜单栏中的 工具 – 文件夹选项 – 查看 – 下拉滚动条找到“隐藏已知文件扩展名” – 取消掉这一项。

 

2.   编译字节码文件

a.  左键单机屏幕左下角开始 – 运行 – 输入cmd启动命令行窗口

b.  使用DOS命令进入源代码所在目录

c.  使用编译器(javac.exe)编译源代码,javac 文件名.java,编译后在该目录中会出现扩展名为class的字节码文件

 

3.常用DOS命令:

       跳转到指定盘符:              盘符:             例:C:  D:  E: 

       跳转到指定目录:              cd 目录         例:cd Itcast\day01  cd Tencent\QQ\Bin

       显示当前目录下文件:       dir                

       跳转到上级目录:              cd..               

       跳转到根目录:                  cd\                

       清屏:                                cls                       

运行程序

使用虚拟机(java.exe)运行class文件,java 文件名,注意不要加扩展名,因为虚拟机只能运行class文件,扩展名省略不写,如写则报错。

 

六.   进制

     十进制

由0到9的数字组成,逢十进一

我们最常用的一种进制

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20

     二进制

由0和1组成,逢二进一

计算机中存储任何数据都是以二进制的形式进行存储的

0 1 10 11 100 101 110 111 1000

      八进制

由0到7的数字组成,逢八进一

八进制在程序中以0开头

0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20

    十六进制

由0到9的数字和A-F的字母组成,逢十六进一

十六进制在程序中以0x开头

0 1 2 3 4 5 6 7 8 9 A B C D E F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20

      进制转换

a.  十进制转二、八、十六进制

除法取余,将要转换的数除以进制数,记住余数,再除以进制数,记住余数,直到这个数等于0为止,将所有余数反转就是对应的二进制表现形式。

 

b.二、八、十六进制转十进制

乘法,将要转换的数编号,编号从低位开始,从0开始,将每一位上的数乘以进制数的编号次方,最后将所有乘得的结果相加就是十进制表现形式。

 

c.二进制和八进制互转

       八进制的每一位对应二进制的三位。

 

a.  二进制和十六进制互转

十六进制的每一位对应二进制的四位。

    二进制负数

一个负数的二进制表现形式就是这个负数忽略符号的正数对应的二进制取反再加一。

计算机中存储的二进制数最高位是0则是正数,是1则是负数。

class OperateDemo3
{
 public static void main(String[] args)
 {

  //System.out.println(Integer.toBinaryString(60));
  //System.out.println(Integer.toHexString(60));
   int num = 26;

  //获取60的最低4位,通过&15;
  int n1 = num & 15;

  System.out.println(n1>9?(char)(n1-10+'A'):n1);

//要获取下一组四位,将60右移4位。
  int temp = num >>> 4;

//对temp的值进行最低四位的获取。
  int n2 = temp & 15;
  System.out.println(n2>9?(char)(n2-10+'A'):n2);

  /*
  0-9 'A' 'B' 'C' 'D' 'E' 'F'
   65   66  67
   10   11  12  13  14  15

   12 - 10 = 2 + 'A' = (char)67;
  */

  int x = 1,y;

  y = (x>1)?'a':200;
  System.out.println("y="+y);
 }
}

 

七.   码表

ASCII:英文码表,每个字符占1个字节。A是65,a是97

GB2312:兼容ASCII,包含中文,每个英文占1个字节(正数),中文占2个字节(2个负数)。

GBK:兼容GB2312,包含更多中文,每个英文占1个字节(正数),中文占2个字节(第一个负数、第二个可正可负)。

Unicode:国际码表,每个字符占2个字节。Java中存储字符类型就是使用的Unicode编码。

UTF-8:国际码表,英文占1个字节,中文占3个字节。

 

八.   Java语法

1.   基本格式

所有Java代码都应该在一个class中。

Java是严格区分大小写的。

Java是一种自由格式的语言。Java代码分为结构定义语句和功能执行语句,功能执行语句最后必须以分号结束。

2.   注释

单行注释和多行注释是在程序用来标记一些特殊的文本,这些文本不参与编译运行。

单行注释:    // 注释内容

多行注释:    /* 注释内容 */

文档注释是Java中特有的一种注释,它可以通过JDK中的工具(javadoc.exe)解析,生成帮助文档。

文档注释:    /** 注释内容 */

对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档。
注释是一个程序员必须要具有的良好编程习惯。
初学者编写程序可以养成习惯:先写注释再写代码。
将自己的思想通过注释先整理出来,在用代码去体现。
因为代码仅仅是思想的一种体现形式而已。
/**
这是我的Hello World程序。
@author 小强
*/
class Demo
{
/*
这是主函数,是程序的入口
它的出现可以保证程序的独立运行,
*/
public static void main(String[] args)
{
//这是输出语句用于将括号内的数据打印到控制台。
System.out.println("Hello World");
}
}

 

 

3.   标识符

      什么是标识符

标识符可以理解为程序中我们自定义的一些名字,包括:包名、类名、函数名、变量名、常量名。

       标识符的命名规则

由大小写字母、数字、下划线(_)和美元符号($)组成,开头不能是数字。不能使用关键字。推荐使用全英文。

     标识符通用规范

类名、接口名:

       所有单词首字母大写,驼峰式命名,例如:XxxYyyZzz

变量名、函数名:

       第一个单词首字母小写,其他单词首字母大写,驼峰式命名,例如:xxxYyyZzz

常量名:

       所有字母都大写,单词之间用下划线分割,例如:XXX_YYY_ZZZ

包名:

全部小写,例如:xxx.yyy.zzz

4.   关键字

abstract

boolean

break

byte

case

catch

char

class

continue

default

do

double

else

extends

final

finally

float

for

if

implements

import

instanceof

int

interface

long

native

new

package

private

protected

public

return

short

static

super

switch

synchronized

this

throw

throws

transient

try

void

volatile

while

注:java 无sizeof ,goto, const 关键字,但不能用goto const作为变量名

5.   常量

       整型

整数,4个字节。

       长整型

整数,8个字节。以L结尾。

        单精度浮点数

小数,4个字节。以F结尾。

      双精度浮点数

小数,8个字节。

       布尔

只有两个值,真(true)或假(false),1个字节。

       字符

单个字符,2个字节。例如:'a', '中', '5', '\u0026' , '\u0027'

在字符常量中,斜杠(\)是一个特殊的字符,它的作用是用来转义后面一个字符,这些字符通常是不可见的或者有特殊意义的。

 

'\r' 回车,回到一行的开始     

'\n' 换行,换到下一行

'\t' 制表符,键盘上的Tab

'\b' 类似退格,键盘上的Backspace

以上字符都不可见,无法直接表示,所以用斜杠加上另外一个字符来表示。

 

'\'' 单引号,Java代码中单引号表示字符的开始和结束,如果直接写程序会认为前两个是一对,报错。

'\"' 双引号,Java代码中双引号表示字符串的开始和结尾,如果要写一个包含双引号的字符串那么这个双引号也需要转义。

'\\' 斜杠,Java代码中的斜杠是转义字符,用来和后面一个字符配合使用,在真正需要用斜杠的时候那么就要用另一个斜杠来转义。

以上字符都有特殊意义,无法直接表示,所以用斜杠加上另外一个字符来表示。

      字符串

由若干个字符组成的一串。可以是一个字符、多个字符、或者一个都没有。字符串没有固定大小。

      空

null,只有这一个值,用来表示一个引用为空。

 

class OperateDemo
{
 public static void main(String[] args)
 {
  //int x = 4270;

  //x = x /1000 * 1000;
  //System.out.println(-1%5);

  int a = 3,b;
  //a++; //--> a = a+ 1;
   b = ++a;
   System.out.println("a="+a);
  //字符串数据和任何数据使用+都是相连接,最终都会变成字符串。
  //System.out.println("5+5"+(5+5));//"5+5=55"
 /*
  转义字符:通过\ 来转变后面字母或者符号的含义。
  \n:换行。
  \b:退格。相当于backspace。
  \r:按下回车键。window系统,回车符是由两个字符来表示\r\n.
  \t:制表符。相当于tab键。
  */
  System.out.println("hello \t world");
  //System.out.println("hello java");

  System.out.println("\\hello\\");
  
  char ch = '\'';

  char c = 'a';

 }
}

 

6.   变量

int x = 5;

System.out.println(x);

x = 1 + 1;

System.out.println(x);

x = x + 1;

System.out.println(x);

上面的x就是一个变量,变量没有固定的值,是在内存中开辟的一片空间。

Java中的变量中只能存储同一种类型的值。

变量在被取值之前必须初始化(第一次给变量赋值)。

     变量分类

a.基本数据类型: 8种

整数:

byte       1个字节,最小值:-128,最大值:127

short       2个字节,最小值:-32768,最大值:32767

int           4个字节,最小值:-2147483648,最大值:2147483647

long        8个字节,最小值:- 9223372036854775808,最大值:9223372036854775807

浮点数:

float        4个字节,最小值:1.4E-45,最大值:3.4028235E38

double     8个字节,最小值:4.9E-324,最大值:1.7976931348623157E308

字符:

char        2个字节,最小值:0,最大值:65535

布尔:

boolean   1个字节,true或false

 

b.引用数据类型:

类、接口、数组都是引用数据类型,除了8种基本数据类型,其他所有类型都是引用数据类型。

    类型转化

a.  自动类型转换

在byte、short、char参与运算的时候会自动提升为int,相当于将一个占空间较小的值放入了一个较大的空间。

b.  强制类型转换

可以将一个占空间较大的值使用(类型)的形式强制放入一个较小的空间,有可能损失精度。

自动类型转换(也叫隐式类型转换) 

强制类型转换(也叫显式类型转换)

类型转换的原理

什么时候要用强制类型转换?

表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

自动类型提升

byte b = 3;

int x = 4;

x = x + b;//b会自动提升为int类型进行运算。

强制类型转换

byte b = 3;

b = b + 4;//报错

b = (byte)b+4;//强制类型转换,强制将b+4的结果转换为byte类型,再赋值给b。

  byte b=6;

  b =(byte)(b+2);//因为 b占据一个八位,2是int型 占据四个八位    如果要输出b必须惊醒强制类型转换  转换成 byte 型  再赋值给b     

 System.out.println(b);//

             

 double d=3.14;

d=(int)(d+5);

System.out.println(d);

             

float f=3.16f;

 f=f+6;//float 和 int 都是四个八位,可是float 后有小数点,所以 在运算时结  果会是 float

System.out.println(f);

System.out.println('a'+1);//输出结果是98   因为字符'a'在ASCLL码表中代表97字符'a' 占两个八位  所以和 1 相加运算时 会提升

System.out.println('a');//输出结果是a 因为字符'a' 作为输出地效果显示

System.out.println((char)('a'+1));//输出结果是 b    字符 中的  大小写 代表的数字也不一样

 

 

c.  字符串转换

任何值和字符串相加都会得到字符串。

       变量的作用域与生命周期

作用域:变量定义在哪一级大括号中,哪个大括号的范围就是这个变量的作用域。相同的作用域中不能定义两个同名变量。

生命周期:变量的生命周期从定义时开始,超出作用域后结束。变量生命周期以外不能使用。

 

class VarDemo
{
 public static void main(String[] args)
 {
  /*
  //定义变量的格式;
  //数据类型  变量名 =  初始化值;
//  定义一个int类型变量.取值为4;
  int x = 4;
  System.out.println(x);
  x = 10;
  System.out.println(x);

  //演示其他数据类型。

  byte b = 2;//-128~127;

  //byte b1 = 128;

  short s = 30000;


  long l = 4l;

  float f = 2.3f;

  double d = 34.56;

  char ch = '4';
  char ch1 = 'a';
  char ch2 = '+';
  char ch3 = ' ';

  boolean bo = true;
  boolean bo1 = false;

  int a = 5;
  a = a + 6;
  */
  /*
  什么时候定义变量?
  当数据不确定的时候。需要对数据进行存储时。
  就定义一个变量来完成存储动作。

  */
  

  //类型的转换。
  
  //byte b = 3;

  //b = b + 2;

  //System.out.println(b);

  
  //System.out.println((char)5);
  

  byte b = 3;

  b = 3 + 4;
  //b = b + 4;

  System.out.println(b);


 }
}

 

 

------------ <a href="http://edu.csdn.net/heima" target="blank">android培训</a>、<a href="http://edu.csdn.net/heima" target="blank">java培训</a>、期待与您交流! -----------

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值