我的Java笔记整理(1)

来源:互联网 发布:阿里云 进销存 编辑:程序博客网 时间:2024/05/02 04:35

01

JDK –Java Development kit 开发工具包

JRE-Java Runtime Environment java运行时环境

JVM-Java Virtual Machine JAVA虚拟机

三者之间关系:包含关系

若只要运行JAVA只需要JRE即可,但是如果要开发JAVA,则必须要JDK

JDK>JRE>JVM

注意:JAVA之所以可以跨平台,就是因为针对不同的OSSUN公司开发了不同的虚拟机来对JAVA语言进行解释

SUN公司定义了一套JVM规范,从而可以根据此规范,用各种语言甚至可以用芯片来开发一个JVM

.java-------.class------JVM for UNIX/JVMfor Window/JVM for Linux

相关命令:

cmd

java

java –version

 

 

 

02

相关DOS命令:

e:

cd ……(change diractory)

dir

javac …….java(回车后自动生成一个…….class的字节码文件)

java ……(执行该…….class文件,直接输入名字即可,不需要加后缀)

 

 

 

03

(1)      一个java文件可以对应多个class文件

(2)      但是一个java文件只有一个public class,且public class的名字必须与该java文件名保持一致

(3)      注释不能嵌套

 

 

 

04 变量和数据类型

标识符identifier

(1)      标识符必须以字母、下划线、美元符$开头

(2)      标识符其他部分可以是字母、下划线、美元符和数字的任意组合

(3)      Java内部采用了Unicode字符集,两个字节表示一个字符

 

 

 

 

 

05

Java是一种强类型语言,每个变量都必须声明其类型

数据类型:基本数据类型(8种):数值型:整数类型(byte,shor,int,long)

                                浮点类型(float,double)

                        字符型(char)

                        布尔型(boolean)

         引用数据类型:类(class)

                        接口(interface)

                        数组

 

类型

占用存储空间

表数范围

byte

1字节

-128—127

short

2字节

-2^15—2^15-1(-32768—32767)

Int

4字节

-2^31—2^31-1(约21亿)

long

8字节

-2^63—2^63-1

BigInteger,大数类,可以用来定义比long还大的数

定义八进制:int a=010;//则a在十进制中是8

定义十六进制:int a=0x10;//则a在十进制中表示16

把十进制的a(数值)转换为二进制的字符串:Integer.toBinaryString(a);

把十进制的a(数值)转换为八进制的字符串:Interger.toOctalString(a);

把十进制的a(数值)转换为十六进制的字符串:Interger.toNextString(a);

JAVA数默认为十进制

JAVA语言整形常量默认为int

例如:

Int a1=10;

long a2=200;

byte a3=100;(正确)//如果数据的大小没有超过byte/short/char的表述范围,则可以自动转型

byte a4=200;(错误)

long a5=111111111111(此数大于21亿);(错误)

long a5=111111111111L;(正确)//因为JAVA整形默认为int,而a5大于了int的表示范围,故应先把该数转换为long型,然后再赋值给a5

注意:在转型为long型时,尽量写大写L,以防止其他错误

 

 

 

 

 

 

 

 

06浮点型

类型

占用存储空间

表数范围

float

4字节

-3.4e38—3.4e38

double

8字节

 

JAVA浮点数常量默认为double

例如:

double d=3.14;(正确)

float f=6.28;(错误)

float f=6.28f;(正确)

double d2=312e-2;(打印出的数为3.14)

注意:floatint都占用4个字节的存储空间,但float的表数范围却远远大于int;是因为int可以无误差的表述范围内的数,但是float表述的数确实有误差的(即浮点数不能精确的表示某个数,是有使用误差的)

例如:

float f=0.1f;

double d=1.0/10;

System.out.println(f==d);//打印出的为false

浮点数存在舍入误差,很多数字不能精确表示。如果需要进行不产生舍入误差的精确数字计算,需要使用BigDecimal

 

 

 

 

 

07字符型、布尔类型

char占用存储空间2个字节

char类型用来表示在unicode编码表中的字符,Java内部采用的unicode字符集,两个字节:0-65535种字符,所以一个汉字也可以为一个字符

用单引号来表示字符常量

转义字符:

char c1=’\’’;//输出的是’

char c2=’\\’;//输出的是\

char c3=’\t’;

char c4=’\n’;

char是在0-65535范围,运算时直接当做整数来用

例如:

char c5=’a’;

int i=c5+2;//i99

ASCII表:a  97

Int转换为char:char c6=(char)i;//c6c

在JAVA中字符串是定义成String类,并且需要用双引号

Boolean类型不是一个字节,而是一位(一个字节有八位)

 

 

08自动类型转换

容量小的数据类型可以自动转换为容量大的数据类型

(此处容量不是表示字节数,而是表示表数的范围)

 

byte

short

int

long

char

float

double

(实线表示无数丢失的自动数据转化类型,虚线表示转换时会损失精度)

特例:可以将整型常量直接赋值给byte,short,char类型变量,而不需要进行强制类型转换,只要不超过其表数范围

强制类型转换

当将一种类型强制转换成另一种类型,而又超出了目标类型的表示范围,就会被截断成为一个完全不同的值,即不能这么强制转换

运算时类型提升问题

表达式中的类型提升问题

int a=3;

long b=4;

int c=a+b;(错误)//做所有的二元运算符(+、-、*、/)都会有类型提升问题

int c=(int)(a+b);(正确)

double d=6.3;

float f=a+d;(错误)

float f=(float)(a+d);(正确)

int money=1000000000;//10亿

int years=20;

int total=money*years;//错误

long total=money*years;//错误

longtotal=(long)(money*years);//错误

long total=(long)money*years;//正确

09JDK7.0新增特性之一

下划线分隔符

二进制整数:int a=0b1000_0000_0000_0000_1000_0000_1011_0011;

 

 

 

10变量

Java是一种强制类型语言,每个变量都必须声明其类型,但类型可以是基本类型,也可以是引用类型

Java变量时程序中最基本的存储单元,其要素包括变量名、变量类型和作用域

变量在使用前必须对其声明,只有变量在声明以后才能为其分配相应长度的存储单元

Js语言就是弱类型语言

局部变量和实例变量

局部变量:方法或语句块内部定义的变量,在使用前必须先声明和初始化(赋初值)

实例变量(成员变量/属性):方法外部、类的内部定义的变量;如果不自行初始化成00.0,字符型变量的初始值是16位的0,布尔型默认值是false\u0000

final常量:只能被初始化一次

命名规范:

(1)      常量要使用大写;下划线连接(MAX_SALARY)

(2)      变量命名首字母小写和驼峰原则(monthSalary)

(3)      类名首字母大写和驼峰原则(GoodMan)

 

 

 

 

11运算符

Java语言支持如下运算符:

算术运算符:+,-,*,/,%,++,--

赋值运算符:=

关系运算符:>,<,>=,<=,==,!=,instanceof

逻辑运算符:&&,||,!

位运算符:&,|,^,~,>>,<<,>>>

条件运算符:?,:

扩展赋值运算符:+=,-=,*=,/=

 

二元运算符类型提升:

整数运算:如果两个操作数有一个为long,则结果也为long

没有long时,结果为int,即使操作数全为short,long,结果也是int

浮点运算:如果两个操作数又一个为double,则结果为double

只有两个操作数都是float,则结果才为float

double d=10.2%3;//可以得出d,则可知小数也是可以取余数的

一元运算符:

Int a=3;

Int b=a++;//执行完后,b=3,先给b赋值,再自增

Int c=++a;//执行完后c=5,先自增,再给c赋值

布尔逻辑表达符:

逻辑与和逻辑或计算机采用短路的方式,从左到右计算,如果确定值则不会再计算下去

Boolean c=1>2&&2>(3/0);//不会抛异常,说明没有执行3/0

位运算符:

~ 取反

& 按位与

| 按位或

^ 按位异火

<< 左移运算符

>> 右移运算符

注意:&&左右两边的值都是布尔变量,而&两边是数或者布尔变量,但是&没有短路功能

右移一位相当于除2取商

左移一位相当于乘2

运算符

用法举例

等效的表达式

+=

a+=b

a=a+b

-=

a-=b

a=a-b

*=

a*=b

a=a*b

/=

a/=b

a=a/b

%=

a%=b

a=a%b

 

 

 

 

12

字符串连接符:“+”运算符两侧的操作数中只要又一个是字符串(String)类型,系统会自动将另一个操作数转换为字符串然后再进行连接

三目条件运算符:x?y:z

其中x为boolean类型表达式,先计算x的值,若为true,则整个三目运算的结果为表达式y的值,否则整个运算结果为表达式z的值

运算符优先级的问题

 

 

 

 

 

13

Math类的使用

Int i=(int)(6*Math.random());//产生[0,5]

switch(?)//可以放int,或者可以自动转为int的类型(byte,char,short),枚举;在JDK7中甚至可以放置字符串

一般在每个case后面都要加break,防止出现case穿透现象

while和dowhile的区别:dowhile总是保证循环体会被至少执行一次

while先判断再执行

dowhile先执行再判断

for先判断再执行

 

 

 

 

14带标签的break和continue

Goto关键字很早就在程序设计语言中出现,尽管goto仍是Java的一个保留字,但并未在语言中得到正式使用;JAVA没有goto。然而,在break和continue这两个关键字的身上,我们仍然能看出一些goto的影子—带标签的break和continue

(Java没有goto这个功能,但是goto是Java的一个关键字)

例如:

Int count=0;

outer:for(inti=101;i<150;i++){

                            for(intj=2;j<i/2;++){

                                     if(i%j==0)

continue outer;

}

System.out.print(i+”      ”);

}           

 

 

 

 

 

15方法

形式参数:在方法被调用时用于接收外界输入的数据

实参:调用方法时实际传给方法的数据

Java中只有值传递,没有引用传递

 

 

 

16接收键盘的输入

Scanner s=new Scanner(System.in);

String str=s.next();//程序运行到next会阻塞,等待键盘的输入

Int a=s.nextInt();

0 0