目录
一、Java程序的运行
- 使用记事本或者IDEAbianxiejava源程序
- 通过javac编译程序把源文件进行编译,编译后生成.class的字节码文件 语法格式: javac xxx.java(class文件是由字节码组成的与平台无关、面向JVM的文件)
- 启动java虚拟机来运行.class文件。使用java运行xxx.class字节码文件 语法格式:java xxx
注:运行java程序前,必须先安装好JDK,JDK里面就包含了jvac和java工具,Java程序最终是在JVM(Java虚拟机)中运行的。
二、Java的注释
java注释主要分以下三种:
- 单行注释://……
- 块注释:/*……*/
- 文档注释:/**……*/(常用于描述方法和类的作用)
注意:
- 块注释不能嵌套使用
- 注释不参与编译,即编译生成的.class文件中不包含注释信息
三、标识符
Test称为类名,main称为方法名,也称为标识符。
1、硬性规则
标识符可以包含:字母、数字以及下划线和特殊符号等
注:标识符不能以数字、关键字开头,且严格区分大小写
2、软性建议
- 类名:每个单词的首字母大写(大驼峰)
- 方法名和变量名:首字母小写,后面每个单词首字母大写(小驼峰)
四、关键字
java中常见关键字:
用于定义访问权限修饰符的关键字 | private | public | protected | |
用于定义类、函数、变量修饰符的关键字 | abstract | final | static | synchronized |
用于定义类与类之间的关系的关键字 | extends | implements | ||
用于定义建立实例、引用实例、判断实例的关键字 | new | this | super | instanceof |
用于异常处理的关键字 | try | catch | finally | throw |
用于包的关键字 | package | import | ||
其他修饰关键字 | native | assert | volatile |
五、java的数据类型
数据类型分为两种:基本数据类型和引用数据类型
基本数据类型有四类八种:
- 四类:整型、浮点型、字符型和布尔型
- 八种
数据类型 | 关键字 | 内存占用 | 范围 |
字节型 | byte | 1字节 | -128~127 |
短整型 | short | 2字节 | -32768~32767 |
整型 | int | 4字节 | -2^(31)~2^(31)-1 |
长整型 | long | 8字节 | -2^(63)~2^(63)-1 |
单精度浮点数 | float | 4字节 | 有范围,一般不关注 |
双精度浮点数 | double | 8字节 | 有范围,一般不关注 |
字符型 | char | 2字节 | 0~65535 |
布尔型 | boolean | 没有明确规定 | true和false |
注意:
- java中没有无符号类型
- 无论多少位系统,int都是四个字节,long都是八个字节
- 整形默认为int,浮点型默认为double
六、变量
1、整型变量
- int的包装类型为integer
- int无论在多少位系统下都是4个字节
- 变量在使用之前必须要赋初值,否则编译出错
- 变量在设置初始值时,不能超过int的表示范围,否则会溢出,(编译时报错)
2、长整型变量
long c=10L; //为了区分int和long类型,建议在long类型变量初始值后面加上L或l
long d=10l; //一般加L,小写l与1不好区分
- 长整型占8个字节
- long包装类型为Long
- 长整型变量的初始值后加L
3、短整型变量
- short占2个字节
- short的表示范围为:-32768~32767
- short的包装类型为Short
4、字节型变量
- byte占一个字节
- 字节的包装类型为Byte
5、双精度浮点型变量
int a=1;
int b=2;
System.out.println(a/b);
注意:在java中,int除以int的值仍为int(会直接舍弃小数部分)。
double num=1.1;
System.out.println(num*num);
//执行结果如下:
1.210000000000002
注:
- double占8个字节
- 浮点数和整数在内存中的存储方式不同,不能单纯使用2^n的形式来计算
- double的包装类型为Double
- double类型遵守 IEEE 754标准,尝试使用有限的空间表示可能无限的小数,会存在一定的精度误差,因此浮点数是一个近似值,不是精确值
- 一般工程用到的浮点数都优先考虑double,不推荐使用float,float的包装类型为Float
6、字符型变量
char a='A';
char b='1';
char c='张';
注:
- java中的字符变量可以存放整型
- 字符本质上是一个整数。C语言中使用ASCII表示字符,而Java中使用Unicode表示字符。因此一个字符占两个字节,表示的字符种类更多,包括中文。
- char的包装类型为Character
7、布尔型变量
注:
- boolean类型的变量只有两种,true表示真,false表示假
- Java的boolean类型和int类型你能相互转换,不存在1表示true,0表示false
- boolean的包装类型为Boolean
七、类型转换
int a=10;
long b=100L;
b=a; //可以通过编译
a=b; //编译失败
java中的类型转换主要分为两类:自动类型转换(隐式)和强制类型转换(显式)
1、自动类型转换(隐式)
在代码编译时,编译器会自动进行处理。特点:数据范围小的转换为范围大的时会自动进行
byte b1=100; //编译器会隐式将100转换为byte
byte b2=257; //编译失败,257超过byte的数据范围,有数据丢失
int a=100; //a赋值给b时,编译器会自动将a提升为long类型,然后赋值
long b=10L; //编译器报错,long的数据范围比int大,会有数据丢失,不安全
2、强制类型转换(显式)
byte b1=(byte)257; //257默认为int,超出byte范围,需要显式转换,否则报错
int a=1;
boolean flag=true;
a=flag; //编译失败,类型不兼容
flag=a; //编译失败,类型不兼容
注:
- 强制类型转换不一定能成功,不相干的类型不能相互转换
- 将一个字面值常量进行赋值,Java会自动针对数字范围进行检查
- 强制类型转换时,可能精度丢失
八、类型提升
1、int和long之间:int会被提升为long
int a=10;
long b=20L;
int c=a+b; //编译出错
//a+b被提升为long,赋值给int会丢失数据
2、byte和byte的运算
byte a=10;
byte b=20;
buye c=a+b; //编译报错。运算时a和b会提升为int,从int转换到byte可能会数据丢失
结论:byte和byte都是相同类型,但是编译报错。虽然a和b都是byte,但是计算a+b会先将a和b提升为int,再进行计算,得到的结果也是int。
注:
- 不同类型的数据混合运算,范围小的会提升为范围大的
- 对于short、byte这种,会先提升为int,再计算
九、字符串类型
int a=10;
int b=20;
System.out.println("sum:"+a+b); //打印为:sum:1020;
System.out.println(a+b+"sum:"); //打印为:30sum:
1、int转换为String
int a=10;
//方法一:
String str1=a+"";
//方法二:
String str2=String.valueof(a);
2、String转换为int
String str="100";
int a=Integer.valueof(str);