Java初了解(三)----基础语法

Gitana ·
更新时间:2024-09-20
· 874 次阅读

什么叫做开发语言?什么叫做计算机编程?

最重要人和机器沟通,计算机底层物流实现只有0和1
要把人类语言表达翻译成计算机能识别的0和1

一、开发语言分类: 高级语言:C、Python、PHP、Java等 低级语言:汇编语言(指令和密码)、机器码(0、1) 二、关键字: 有特殊含义,这些普通开发者是不能去使用,已经被java所占用

下面列出了 Java 关键字。这些保留字不能用于常量、变量、和任何标识符的名称。
数据来源-菜鸟教程

问题:关键字是不允许使用的,那java是关键字吗?能否使用呢? java不是关键字,但是不能使用,sun api时,它自己使用java 可以去写,但是可能出现一些“灵异”现象。不要去使用!! 注意: 单元测试JUnit,Test也不要使用!将来可能和junit冲突 Spring框架,spring也不要轻易使用。 三、标识符:自己定义的名称

Java标识符由数字,字母和下划线(_),美元符号($)或人民币符号(¥)组成。
在Java中是区分大小写的,而且还要求首位不能是数字。
最重要的是,Java关键字不能当作Java标识符。

下面的标识符是合法的:
myName,My_name,Points,$points,_sys_ta,OK,_23b,3 下面的标识符是非法的:
#name,25name,class,&time,if 驼峰规则,见名知意 不能以数字开头 命名规范:

类和接口名。每个字的首字母大写,含有大小写。
例如,MyClass,HelloWorld,Time等。

方法名。首字符小写,其余的首字母大写,含大小写。尽量少用下划线。
例如,myName,setTime等。这种命名方法叫做驼峰式命名。

常量名。基本数据类型的常量名使用全部大写字母,字与字之间用下划线分隔。对象常量可大小混写。
例如,SIZE_NAME。

变量名。可大小写混写,首字符小写,字间分隔符用字的首字母大写。不用下划线,少用美元符号。给变量命名是尽量做到见名知义。

四、数据类型 基本数据类型(8种):int、byte、short、long、double、float、char、boolean 引用数据类型:对象、数组 (一)基本数据类型:

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

1、整数型
类型 二进制位数 字节数 最小值 最大值 默认值 例子
byte 8位 1 -128(-2^7) 127(2^7-1) 0 byte a = 100,byte b = -50
short 16位 2 -32768 32767 0 short s = 1000,short r = -20000
int 32位 4 -2147483648 2147483647 0 int a = 100000, int b = -200000
long 64位 8 -9223372036854775808 9223372036854775807 0L long a = 100000L,Long b = -200000L
2、浮点型
类型 二进制位数 字节数 最小值 最大值 默认值 例子
float 单精度、32位 4 1.4E-45 3.4028235E38 0.0f float f1 = 234.5f
double 双精度、64位 8 4.9E-324 1.7976931348623157E308 0.0d double d1 = 123.4

数据来源代码演示:

package cn.daniel.hello; public class Test1 { public static void main(String[] args) { // byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); System.out.println("最小值:" + Byte.MIN_VALUE); System.out.println("最大值:" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本类型:short 二进制位数:" + Short.SIZE); System.out.println("最小值:" + Short.MIN_VALUE); System.out.println("最大值:" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); System.out.println("最小值:" + Integer.MIN_VALUE); System.out.println("最大值:" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本类型:long 二进制位数:" + Long.SIZE); System.out.println("最小值:" + Long.MIN_VALUE); System.out.println("最大值:" + Long.MAX_VALUE); System.out.println(); // float System.out.println("基本类型:float 二进制位数:" + Float.SIZE); System.out.println("最小值:" + Float.MIN_VALUE); System.out.println("最大值:" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本类型:double 二进制位数:" + Double.SIZE); System.out.println("最小值:" + Double.MIN_VALUE); System.out.println("最大值:" + Double.MAX_VALUE); System.out.println(); // char System.out.println("基本类型:char 二进制位数:" + Character.SIZE); // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 System.out.println("最小值:" + (int) Character.MIN_VALUE); // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 System.out.println("最大值:" + (int) Character.MAX_VALUE); } }

console控制台显示结果:

基本类型:byte 二进制位数:8 最小值:-128 最大值:127 基本类型:short 二进制位数:16 最小值:-32768 最大值:32767 基本类型:int 二进制位数:32 最小值:-2147483648 最大值:2147483647 基本类型:long 二进制位数:64 最小值:-9223372036854775808 最大值:9223372036854775807 基本类型:float 二进制位数:32 最小值:1.4E-45 最大值:3.4028235E38 基本类型:double 二进制位数:64 最小值:4.9E-324 最大值:1.7976931348623157E308 基本类型:char 二进制位数:16 最小值:0 最大值:65535

Float和Double的最小值和最大值都是以科学记数法的形式输出的,结尾的"E+数字"表示E之前的数字要乘以10的多少次方。比如3.14E3就是3.14
× 103 =3140,3.14E-3 就是 3.14 x 10-3 =0.00314。

3、布尔型:boolean boolean数据类型表示一位的信息; 1字节 只有两个取值:true 和 false; 这种类型只作为一种标志来记录 true/false 情况; 默认值是 false; 例子:boolean one = true。 4、字符型:char char类型是一个单一的 16 位 Unicode 字符; 1~3字节 最小值是 \u0000(即为0),也是默认值; 最大值是 \uffff(即为65,535); char 数据类型可以储存任何字符; 例子:char letter = ‘A’;。

问题:整数有4个类型,一个不就够了吗?为什么要4个呢?

内存是一个有限稀缺资源,设计程序时,尽量减少内存占用。
例如:存放数字1,使用尽量小的单位,byte它可以表示1,只占用8个字节;如果int要占用32个字节,太浪费空间。
在这里插入图片描述

ASCII码表的作用:

把人类字母翻译成计算机0或1
数据来源:ASCII搜狗百科 (二)引用数据类型 在Java中,引用类型的变量非常类似于C/C++的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Employee、Puppy 等。变量一旦声明后,类型就不能被改变了。 对象、数组都是引用数据类型。 所有引用类型的默认值都是null。 一个引用变量可以用来引用任何与之兼容的类型。 例子:Site site = new Site(“Daniel”)。 五、基本类型与包装类型(简单了解)

java为了支持传统开发方式,非面向对象方式,同时,为了计算速度快。有基本类型,基本类型不属于面向对象。java是一个面向对象开发语言。针对每个基本类型对应一个包装类型,包装类型面向对象结构。

基本类型 包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean
本质差异: 基本类型占用内存空间小,包装类型占用内存空间大 基本类型只有数据,包装类型还有其他的方法 例如:int(32b),Integer除了存放数据,它还有很多的内容 package cn.daniel.hello; public class TestArea { public static void main(String[] args) { int i = 100; Integer j = 100; System.out.println(i); System.out.println(j); //数据上没有差异 System.out.println(j.toBinaryString(i)); } }

包装类型额外有很多的方法。
例如:转换二进制方法,j.toBinaryString() java自身带给它的,包装类创建时自己就已经有了很多方法

装箱与拆箱

类型之间的转换------用int和Integer举例

把int转换Integer,把基本类型int转换包装类型Integer 把Integer转换int,把包装类型Integer转换基本类型int package cn.daniel.hello; public class TestArea { public static void main(String[] args) { //1)把int转换Integer,把基本类型int转换包装类型Integer int a1 = 100; Integer b1 = a1; System.out.println(a1); System.out.println(b1); //数据上面没有变化 //a1是基本类型,b1是包装类型,这是两个东西,怎么能赋值? //上面过程,java底层做了很多事情? //编译后真正的语句:Integer b1 = new Integer(100); ,java中对象都必须new出来,创建对象 Integer c1 = new Integer(100); System.out.println(c1); //把上面java自动把基本类型转换成包装类型过程:称为装箱(转换) //2)把Integer转换int,把包装类型Integer转换基本类型int Integer s1 = new Integer(200); //声明包装类型 int s2 = s1; System.out.println(s1); System.out.println(s2); //真正代码: int s3 = s1.intValue(); //intValue这个方法获取s1对象的值,拿到200,把200赋值给s3 //把上面java自动把包装类型转换基本类型过程:称为拆箱(转换) } }

装箱:基本类型转换成包装类型的过程(小转大)
拆箱:包装类型转换成基本类型的过程(大转小)

代码演示案例

package cn.daniel.hello; public class TestArea2 { public static void main(String[] args) { //装箱:把基本类型装入包装类型,小转大 long x1 = 9; Long x2 = x1; //小转大,自动装箱 Long x2 = new Long(9); System.out.println("装箱:把x1装入x2:"+x2); //拆箱:把包装类型装入基本类型,大转小 Long y1 = new Long(900); long y2 = y1; //大转小,自动拆箱 long y2 = y1.longValue(); System.out.println("拆箱:把y1拆出值y2:"+y2); } }

在这里插入图片描述

六、三值交换案例 package cn.daniel.hello; //交换 public class Swap { public static void main(String[] args) { int a = 100; int b = 200; System.out.println("交换前:a="+a+"b="+b); //需要中间变量,用来临时存储数据,否则就被覆盖 int t = a; a = b; b = t; System.out.println("交换后:a="+a+"b="+b); } }

运行结果:

交换前:a=100,b=200 交换后:a=200,b=100 七、强制转换 java中数据类型的强制转换是通过强制转换语句完成的。 强制转换语句的格式为“目标数据类型 变量 = (目标数据类型) 数据;”

案例

package cn.daniel.hello; import org.junit.Test; public class Cover { @Test //小转大 public void smallToBig() { //字节类型转成整数类型 byte b = 100; int i = b; //等号右边b,当前值100,把100赋值给i,b字节,i整数,两个类型不同 System.out.println("小转大(自动转换):"+i); } @Test //大转小 public void bigToSmall() { int i = 100; byte b = (byte)i; //因为有风险,我们写的代码,我知道能存放这个值,强制换行 //把i强制转换成byte字节类型 System.out.println("大转小(强制转换):"+b); } }

基本类型转换原则:
类型转换主要在在赋值、方法调用、算术运算三种情况下发生。

赋值和方法调用转换规则:
从低位类型到高位类型自动转换;从高位类型到低位类型需要强制类型转换:
(1)布尔型和其它基本数据类型之间不能相互转换;
(2)byte型可以转换为short、int、、long、float和double;
(3)short可转换为int、long、float和double;
(4)char可转换为int、long、float和double;
(5)int可转换为long、float和double;
(6)long可转换为float和double;
(7)float可转换为double; 算术运算 中的类型转换:
基本就是先转换为高位数据类型,再参加运算,结果也是最高位的数据类型;
(1)byte short char运算会转换为Int;
(2)如操作数之一为double,则另一个操作数先被转化为double,再参与算术运算。
(3)如两操作数均不为double,当操作数之一为float,则另一操作数先被转换为float,再参与运算。
(4)如两操作数均不为double或float,当操作数之一为long,、则另一操作数先被转换为long,再参与算术运算。
(5)如两操作数均不为double、float或long,则两操作数先被转换为int,再参与运算。

特殊:

如采用+=、*=等缩略形式的运算符,系统会自动强制将运算结果转换为目标变量的类型。 当运算符为自动递增运算符(++)或自动递减运算符(–)时,如果操作数为byte,short或char类型不发生改变;
在这里插入图片描述
作者:经理,天台风好大



基础语法 JAVA

需要 登录 后方可回复, 如果你还没有账号请 注册新账号