曂沅仴駦 发表于 2023-6-1 20:05:07

Java 基本知识——first day

注释

注释不会被执行,是写给看代码的人看的。
三种注释

单行注释

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314668/o_230601091059_image-20230524180254971.png
多行注释

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314668/o_230601091059_image-20230524180303930.png
文档注释

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314668/o_230601091100_image-20230524180453725.png
标识符

关键字

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314668/o_230601091059_image-20230524180734757.png
Java常见的关键字
考点

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314668/o_230601091059_image-20230524181146083.png
总结四个点:

[*]首字母应该以字母、$、_开始;
[*]开始后可以任意字符;
[*]不可用关键字
[*]大小写敏感
 
数据类型

Java是一门强类型语言

强类型语言
比如Java、C++、C
变量定义严格,先定义才能使用。
弱类型语言
比如VB、JS、Python
Java的两大类数据类型

基本类型

Java语言提供了八种基本类型:

[*]四个整数型;
[*]两个浮点型;
[*]一种字符型;
[*]布尔
数值类型
整数类型

[*] byte占1个字节

[*]-128(-2^7)
[*]127(2^7-1)

[*] short占2个字节

[*]-32768(-2^15)
[*]32767(2^15 - 1)

[*] int(整型)占4个字节

[*]-2,147,483,648(-2^31)
[*]2,147,483,647(2^31 - 1)

[*] long(长整型)占8个字节。

[*]-9,223,372,036,854,775,808(-2^63)
[*]9,223,372,036,854,775,807(2^63 -1)

浮点数类型

[*]float(单精度)占4个字节

[*]储存大型浮点数可节省空间。

[*]double(双精度)占8个字节

[*]默认类型

字符类型

[*]char(字符型)占2个字节
[*]String(字符串)他不是一个关键字,是一个类
布尔类型

[*]boolean(布尔类型)

[*]只能存储true和false。

引用类型

除了基本类型之外的所有数据类型,都是引用类型。
类;接口;数组。(后续专栏讲解)
 
拓展

整数进制

常规使用的基本数据类型为10进制:
而Java程序中,可以对变量赋值为各种进制。
 //默认十进制,二进制为0b,八进制为0,十六进制为0x<br> public class binary {<br>     public static void main(String[] args) {<br>         int i=10;<br>         int i2=010;<br>         int i3=0x10;<br>         System.out.println(i);<br>         System.out.println(i2);<br>         System.out.println(i3);<br>   }<br> }输出结果为:https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230529155101114.png
浮点数特性

由于浮点数具备以下特征:

[*]有限性;
[*]离散性;
[*]舍入误差;
[*]大约;
[*]接近但不等于。
所以我们在实际使用中,要尽量避免使用浮点数进行数值之间的比较。
案例1:两个相同的数值进行比较得false

代码如下:
 float f=0.1f;<br> double d=1.0/10;<br> System.out.println(f==d);输出结果得:https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230529155813881.png
使用调试查询变量数值:
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530093220595.png
两个数值都相同,但输出结果为false。
案例2:过长数值+1,依然等于原数值

代码如下:
 float d1=213213213213213213f;<br> float d2=d1+1;<br> System.out.println(d1==d2);输出结果为:
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530093720101.png
使用调试查询变量数值:
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530093740615.png
可以看见,浮点数值一但过大,则会直接修改表示形式,就无法对比数值大小了。
解决方案(BigDecimal)

如果涉及浮点数比较大小,最好使用 数据类 BigDecimal 数学工具类。
字符拓展

字符

所有的字符,本身都是Unicode、ASCII码
Unicode(0~65536,2^16)
代码如下:
 char a='a';<br> char A='A';<br> char B='B';<br> System.out.println("a="+(int)a);<br> System.out.println("A="+(int)A);<br> System.out.println("B="+(int)B);运行结果如下:
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530095837594.png
转义字符

除此之外,字符还具备转义字符的含义,一般可用在如下场景:

[*]需要插入一些关键性的文字;
[*]需要插入一些空格、回车,等特别的字符。
代码如下:
 System.out.println("中间是空格转义符→\t←");输出结果:
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530100927793.png
 
类型转换

Java运算中,不同类型的数据先转化为同一类型,然后再进行运算。
数据类型优先级

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093202_image-20230530102102420.png
强制类型转换

代码如下:
 public class type_Convert {<br>     public static void main(String[] args) {<br>         int i=128;<br>         byte b= (byte) i;//因为最大值是127,当128的时候就是补码<br>         System.out.println(i+"\n"+b);<br>   }<br> }输出结果如下:https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093155_image-20230530101832539.png
加个括号的形式,就是强制转换,从数据类型的高到低,就需要强制转换。
反之,从低到高就采用自动转换。
自动类型转换

代码如下:
 int o=123;<br> double j=o;扩展补充


[*]不能对布尔类型进行转换。
[*]不能把对象类型转换为不相干的类型。
[*]在把高容量转换到低容量的时候,强制转换。
[*]转换的时候可能存在内存溢出和精度问题,转换后会除去掉小数部分。
[*]JDK7 的新特性,数字之间支持用下划线分割。
 int q=10_0000_0000;<br> System.out.println(q);输出结果:
 1000000000变量

定义:可变化的量

[*]每个变量都必须声明其类型;
[*]是最基本的存储单元,其要素包含变量名、变量类型和作用域。
变量定义:
 int i = 1;<br> String i = 2;<br> //int、String 变量类型<br> // i 就是变量名称作用域

类变量:


[*]从属与类,可以直接使用类名调用的变量


[*]作用范围全局
 public class action_Scope {<br>     //类变量:从属与类,可以直接使用类名调用的变量。<br>     static double salasy;<br>     public static void main(String[] args) {<br>         //类变量的调用<br>         action_Scope.salasy=200D;<br>         System.out.println(action_Scope.salasy);<br>   }<br> }输出结果:
 200.0实例变量


[*]从属与对象:如果不自行初始化,这个变量则自动唯默认值 0 0.0

[*]布尔变量为true,除了基本类型,其他的引用类型都是null

[*]作用范围,new 实例。
 public class action_Scope {<br>     //实例变量:从属与对象:如果不自行初始化,这个变量则自动唯默认值 00.0<br>         //布尔变量为true,除了基本类型,其他的引用类型都是null<br>     String name;<br>     int age;<br>     public static void main(String[] args) {<br>       //实例变量的调用<br>         action_Scope action_scope=new  action_Scope();<br>         System.out.println(action_scope.age);<br>   }<br> }输出结果:
 0<br> null局部变量


[*]作用范围,方法内部
 public class action_Scope {<br>     public static void main(String[] args) {<br>         //局部变量:必须声明和初始化数值<br>         int i = 10;<br>         System.out.println(i);<br>   }<br> }输出结果:
 10常量

一但定义了,就不会变化的量。
 public class Demo1 {<br>     //修饰符不区分先后顺序。<br>     final static double PI=3.14;<br>     static final double π=3.14;<br> }命名规范


[*]所有变量、方法、类名:见名知意;
[*]变量、方法:首字母小写和驼峰原则:mounthSalary

[*]除了第一个单词,后面的单词首字母大写

[*]常量:全大写字母,多个单词使用下划线隔开。

[*]MAX_VALUE

[*]类名:首字母大写,驼峰原则
运算符

https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093203_image-20230531111648712.png

[*]自增、自减,也可以叫做一元运算符
[*]a++和++a的区别在于,先执行再++和先++再执行
[*]很多运算我们会使用Math工具类进行操作
短路运算


[*]当与预算时,如果前者为假,就不会继续向后执行代码了
[*]或运算时,如果前者为真,则不会继续执行后面的代码
位运算

位运算就是将变量与变量用二进制的形式进行 与或非 的计算,一般计算IP地址和子网掩码可用使用位运算
https://img2023.cnblogs.com/blog/3198595/202306/3198595-20230601181300984-1848536231.png
 
面试题:2乘以8怎么运算最快?
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093203_image-20230531192234598.png
利用位运算符,可以根据变量的二进制数值进行移动
https://images.cnblogs.com/cnblogs_com/blogs/793527/galleries/2314679/o_230601093203_image-20230531192339371.png
优点是运算效率极高(直接是底层机器语言)。
三元运算符

代码:
 int en= a
页: [1]
查看完整版本: Java 基本知识——first day