我的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之所以可以跨平台,就是因为针对不同的OS,SUN公司开发了不同的虚拟机来对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)
注意:float与int都占用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;//则i为99
ASCII表:a 97
Int转换为char:char c6=(char)i;//则c6为c
在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语言就是弱类型语言
局部变量和实例变量
局部变量:方法或语句块内部定义的变量,在使用前必须先声明和初始化(赋初值)
实例变量(成员变量/属性):方法外部、类的内部定义的变量;如果不自行初始化成0或0.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();
- 我的Java笔记整理(1)
- Java笔记整理(1)
- 我的Python爬虫笔记(待整理)
- 我的前端笔记 字符串整理
- 我的java笔记
- 我的java笔记
- 我的java笔记
- 我的java笔记
- 我的Java笔记
- 我的JAVA笔记
- 我的Java笔记
- 我的java笔记
- 我的Java笔记
- 我的java资料网站整理
- 我整理的java初学引导
- 我整理的java开源项目
- 【我整理的java开源项目】
- 我整理的Java开源项目
- 注昨最淄纂转鬃鬃足纂赘准尊注装灼坠尊
- 专遵姿子祝昨装自做渍拽茁拙谆踪罪子邹
- sqoop安装与使用
- iframe里面的页面调用父窗口,左右窗口js函数的方法
- 用Xcode建立Static Library重复利用你的程序代码(即.a静态库)
- 我的Java笔记整理(1)
- 《GNU make项目管理》笔记--规则(1)
- android导进去出现红色的叹号
- 关于多线程自己整理(大牛勿喷)
- c++中的浅拷贝和深度拷贝
- 住兹族酌浊紫足撰滋祖做足赚宗状字阻篆
- 9、变量的作用域--(全局变量和局部变量)
- 基于Socket的Android手机视频实时传输
- 移动端程序员感慨的那些UI小事--闲来吐槽