一:基本概念
1、标识符:标识符可以简单的理解为一个名字,我们需要表示程序代码的很多元素,例如 包、类、方法、代码段、变量等。我们选择的名字就成为标识符。标识符有下面这四个原则:
- 标识符是由字母、数字、下划线、$符组成。但不能包含@、%、空格等。
- 标识符可以由数字组成,但是数字不能作为开头。
- Java的标识符是严格区分大小写的。
- 再选择标识符时,要具有意义。
面试题可能包含。
2、关键字:在java语言中已经被赋予特定意义的一些单词。一共有53个关键字。其中有两个保留字:const和goto。注意关键字不能被用作标识符!!
注意:const 和goto可能会当做面试题。
3、注释:Java代码的解释说明。不影响程序的运行,用于辅助读程。Java的注释分为下面三种类型。
- 单行注释 // 注释内容
- 多行注释 /* 注释内容 */
- 文档注释 /** 注释内容 */
这里的文档注释可以用作对代码段进行注释,一般解释方法的用法、功能等。在Eclipse里只要将鼠标光标放在方法、关键字等上,就可以查看它的文档注释,第一行是存放的地址,后面是相应的解释。
了解就行
4、变量:在Java中,有些数据值是不固定的,我们还要记录这些值,我们可以把这些值理解成变量。通过三个元素描述变量,变量类型、变量名、变量值。
例:int age=18;
int age; //有时我们不能确定变量的值,可以先不定义。
5、常量:在Java运行过程中一直不会变的量。
二:数据类型
Java中数据类型分为量大类:一类是基本类型,另一种是引用类型。
1、基本类型
练习1:输出最大最小值
package cn.tedu.basic;
//测试基本类型的取值范围
public class Test1_Scope {
public static void main(String[] args) {
//测试整数类型byte、short、int、long
//定义变量来记录最大最小值
byte max=Byte.MAX_VALUE;
byte min=Byte.MIN_VALUE;
System.out.println("关于byte: 最大值:"+max+" 最小值:"+min);
//定义变量来记录最大最小值
short maxSho=Short.MAX_VALUE;
short minSho=Short.MIN_VALUE;
System.out.println("关于short: 最大值:"+maxSho+" 最小值:"+minSho);
//定义变量来记录最大最小值
int maxIn=Integer.MAX_VALUE;
int minIn=Integer.MIN_VALUE;
System.out.println("关于int: 最大值:"+maxIn+" 最小值:"+minIn);
//定义变量来记录最大最小值
long maxLon=Long.MAX_VALUE;
long minLon=Long.MIN_VALUE;
System.out.println("关于long: 最大值:"+maxLon+" 最小值:"+minLon);
//定义变量来记录最大最小值
float minFlo=Float.MIN_VALUE;
float maxFlo=Float.MAX_VALUE;
System.out.println("关于float: 最大值:"+maxFlo+" 最小值:"+minFlo);
//定义变量来记录最大最小值
double minDou=Double.MIN_VALUE;
double maxDou=Double.MAX_VALUE;
System.out.println("关于double: 最大值:"+maxDou+" 最小值:"+minDou);
}
}
练习2:字符串拼接,输出姓名
package cn.tedu.basic;
import java.util.Scanner;
//通过+完成字符串的拼接
public class Test2_Inof {
public static void main(String[] args) {
// TODO Auto-generated method stub
//输出:大家好,我叫XXX
System.out.println("请输入您的姓名:");
//创建Scanner对象
Scanner scanner=new Scanner(System.in);
if(scanner.hasNext()) {
String name=scanner.next();
System.out.println("大家好,我叫"+name+",很高兴见到大家!");
}
scanner.close();
}
}
练习3:计算圆形面积
package cn.tedu.basic;
import java.util.Scanner;
public class Test3_Round {
public static void main(String[] args) {
//计算圆形的面积
System.out.println("请输入圆形半径:");
Double area=new Scanner(System.in).nextDouble();
System.out.println("圆形的面积为:"+3.14*area*area);
}
}
练习4:变量值交换
package cn.tedu.basic;
import java.util.Scanner;
public class Test4_Exchange {
public static void main(String[] args) {
// TODO Auto-generated method stub
//用户输入a和b的值,将a和b的值进行交换
System.out.println("请输入a的值:");
int a=new Scanner(System.in).nextInt();
System.out.println("请输入b的值:");
int b=new Scanner(System.in).nextInt();
int c=a;
a=b;
b=c;
System.out.println("交换后a="+a+",b="+b);
}
}
这里由于double是非精准的,是由于在内存存储的方式造成的,所以会造成结果不准确。
2、引用类型
引用类型是一个对象类型,值是什么呢?它的值是指向内存空间的引用,就是地址,所指向的内存中保存着变量所表示的一个值或一组值。如:类,接口,数组等。
三:基本类型的字面值
- 整数的字面值是int
int a = 999999999;//错,右侧是int类型,但是超出范围
- byte,short,char三种在范围内值可以直接赋值
byte b=127;//对
byte b=128;//错,右面已经超过byte范围是int类型的数据
- 浮点数的字面值是double
double a=3.14;//对
float a=3.14;//错,右面是double,float是四字节double是八字节存不下
- 通过加后缀的方式
L –long 如:long a = 99999999999;//错,超出范围,解决方案加L 例:long g=10000000000L;
F –float 如:float a = 3.14;//错,右面是double类型,解决方案加F 例:float s=5.5f;
D –double 如:double a=3;//错,右面是int,解决方案加D或者改成3.0(不加也没影响)
- 进制前缀
0b - 2进制
0x - 16进制
0 - 8进制
\u - char类型,16进制 \u0000char类型的默认值
四:基本类型的类型转换
- 大到小(隐式转换)
- 小到大(显示转换)
需要进行强制类型转换。
例如:int i=365;
byte b=(byte) i; //如果不转换就会报错
五:运算规则
- 计算结果的数据类型会和式子中的最大数据类型保持一致。
3/2 得1 ,而不是1.5,结果是int类型
3d/2 得1.5,相当于double/int,结果是double类型
- byte,short,char三种比int小的整数,运算时会先自动转换成int
byte a=3;
byte b=4;
byte c=a+b;//错,运行时,byte会先自动转成int再运算,int+int还是int
- 整数运算溢出
整数运算,类似于一个中标,转到最大时,再转会回到最小。
计算:光速运行一年的长度是多少米
System.out.println(300000000*60*60*24*365);
System.out.println(300000000l*60*60*24*365);
- 浮点数运算不精确
System.out.println(1-0.8);
System.out.println(4.35*100);
- 浮点数的特殊值
Infinity 无穷大 3.14/0
Nan not a number 0/0.0