关于环境变量那些就不赘述了,直接从数据类型开始说起
1.标识符和关键字
标识符和c差不多标识符由数字(0~9)和字母(A~Z 和 a~z)、美元符号($)、下划线(_)以及 Unicode 字符集中符号大于 0xC0 的所有符号组合构成(各符号之间没有空格)。标识符的第一个符号为字母、下划线和美元符号,后面可以是任何字母、数字、美元符号或下划线。另外,Java 区分大小写,因此 myvar 和 MyVar 是两个不同的标识符。
关键字有五十个:关键字不能作为标识符
- 数据类型:boolean、int、long、short、byte、float、double、char、class、interface。
- 流程控制:if、else、do、while、for、switch、case、default、break、continue、return、try、catch、finally。
- 修饰符:public、protected、private、final、void、static、strict、abstract、transient、synchronized、volatile、native。
- 动作:package、import、throw、throws、extends、implements、this、supper、instanceof、new。
- 保留字:true、false、null、goto、const。
2.基本数据类型
- boolean:
常量:true,false.
变量:
boolean a = true;boolean a;
- int:
常量:123,077,0x3ABC,0b1010.这就是四种 int常量的表达方式分别表示十进制123,八进制077,十六进制0x3ABC,二进制0b1010
变量:
int a = 1;int b;
内存:四字节,-的2的31次方 到 2的三十一次方减1
- byte:
变量:
byte a;byte a = 1;
常量:没有常量的byte
内存:一个字节,-2的七次方 到 2的七次方减1 也就是-128到127
- short:
变量:
short x=1;short y;
常量:也不存在;
内存:两个字节,-2的十五次方到二的十五次方减一
- long:
常量:123L,231L单纯就是整数后面加一个L
变量:
long a;long y = 12L;
内存:8字节
在这里备注:这些整型常量没有没无符号类型
- char:
常量:'a','\t','7','好’JAVA比较牛逼,char可以取Unicode统一码里面的0-65535字符,至于什么是Unicode统一码,就是一个所有国家都承认的类似于阿斯特码的东西
变量:
char a = 'a';char b = 97;char c = '\n';char d = '\u0041';
这四种,第一char a = 'a';是正常的表达,和C里一样,第二种,char b = 97;就是指Unicode 97的字符,第三种char c = '\n';就是这种\的,和C一样,有\n换行\b退格\t水平制表\'单引号\"双引号\\斜线,第四种char d = '\u0041';就是这种,其中0041是十六进制数就是也是在Unicode上找对应值
也是没有无符号类型
内存:两个字节
- float:
常量:44.1f,44F,2e3F,就是后缀加上F都叫float常量
变量:
float a = 1F;
需要注意的是我们必须加上后缀,因为在JAVA里面,对于一个小数和C一样的被认为是一个double类型,而Java里面不允许高精度直接给低精度赋值,所以如果是float a = 1.0;是不行的
内存:四个字节
- double:
常量:23.0,22.1,1e6,就是小数和带e的,可以加d和D的后缀,但可以省略
变量:
double a = 2.0;double a= 3D;double o = 3e4;
正好是常量的三种表示方法,一般的小数,后缀带D、d,和带e的
内存:八个字节
3.类型转换
低精度转为高精度:这个和C一样
float x = 1;
float a;
int b = 10;
a = b;//这就是由int转换成float
高精度转换为低精度:这里有区别,根据原来你C的
float a = 1.0;
这是可以的过程,1.0是一个double常量,而当double赋值给float,
float a = 11111111111111111111111111111111.0;
而这样也不会有什么大事,因为程序也可以运行,
但是在Java里面这是不行的,高精度不能直接赋值给低精度比如
float a = 1.0;
这就是double(高精度)赋值给float(低精度),是错误的,也就是说,Java不会帮助我们进行类型转换,我们需要自己进行类型转换
int x = (int)34.89;
long y = (long)56.98F;
这就是正确的赋值就是线使用强制转换
4.输入和输出数据
- Scanner,是一个JDK的类
Scanner reader = new Scanner(System.in);
//不必去搞懂他,只要先知道这是声明一个我们要使用的类就可以了
可以用来读取其中有nextBoolean(),nextByte(),nextShort(),nextInt(),nextLong(),nextFloat(),nextFloat,nextDouble()可以用来读取用户在命令行里面输入的内容来读取读取的规则就是用空格结束,而如果读取的数据类型不符合就出发读取数据异常,引入概念堵塞状态,就是要读取的时候,就停止,按下回车就开始,多的自查
import java.util.Scanner;
public class Hello {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
// 从键盘接收数据
// next方式接收字符串
System.out.println("next方式接收:");
// 判断是否还有输入
if (scan.hasNext()) {
String str1 = scan.next();
System.out.println("输入的数据为:" + str1);
}
scan.close();
}
}
这是菜鸟上的代码,可以看到我们还有一个next(),
- 输出基本数据类型
System.out.printIn();输出串值,表达式的值,输出后换行,
System.out.print();和他一样,不过不换行,
注意他们不能出现enter在里面比如
System.out.println("niasd
saidjoi");
不过
System.out.print("asdfni" + "sdfni" +
"sda");// 这个可以
还有其中的%d,%c,%f,%s,%md,%m.nf也和C里面一样,就不多说了,例子:
System.out.print("float:%1.2f,int:%d",1.22,1);