【Java的自我反省】

2023-11-04 00:40
文章标签 java 自我 反省

本文主要是介绍【Java的自我反省】,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

前言

一、啥是Java

二、系统化学习

1.注释

2.常量

3.数据类型

4.变量

5.标识符

6.类型转换(基本数据类型转换)

7.运算

8.小练一下

总结


前言

        本文章主要是个人在学习Java过程中的思考以及笔记,正如标题所言,这是一篇“反省”。

(写这篇文章时也是刚刚接触Java,在此之前学习过C语言)


一、啥是Java

        刚刚接触C语言时,我一直在问一个问题:啥是C语言。近期开始学习java,又再问“啥是Java”,依据这个问题,网上给了很多版本的介绍。

        比如我们看百度百科的解释:16e2530f86cc4c52a0128ff6ceab9440.png———Java(计算机编程语言)_百度百科 (baidu.com)

        很显然,这个解释过于官方,起码本人读完第一句就不想继续读下去了。

        看过“官方”解释后,我来谈谈我对于Java的非“官方”解释(主要是个人理解,多少不够严谨或者正确):

                首先,java语言,不止是java语言,还有c语言,c++,它们都属于语言,什么是语言,像是英语,汉语,法语等都是语言,这些语言最重要的功能便是交流,只不过我们日常生活中所使用的语言是人与人之间的交流,而java语言是用于人与计算机的交流。举一个例子,当你去银行存款时,身上有1000w的现金,在没有遇见抢劫并成功到达银行的情况下,你就会去找业务员办理存款业务,你会说“我要存1000w”,此时业务员便能够理解并执行,但对于计算机而言,你直接说要存钱,它是听不懂的,那么如何让他听懂并执行那,这就用到了java语言,java语言需要人工按照java规则的语法结构输入指令,使得计算机能够明白下一步的操作。输入过程即敲代码,当一个代码完成以后,计算机便明白你的意图,并开始执行。

        打招呼大家都会,人与人之间直接张口说便是,但是计算机不是,如上所述,必须先让计算机听懂,在java语言中,相信大家第一个代码都是“Hello world”:

public class Hello {public static void main(String[] args){System.out.println("Hello world");}
}

         就这样,计算机会执行并打印出“Hello world”。这就是java的作用,将个人思想通过java语言传递给计算机。

二、系统化学习

1.注释

        注释就像是一种说明书,在生活中注释无处不在,像药品说明书,衣服洗洁说明等,在java语言中也存在注释:

6174b1189a3647139ec3a5e19c333372.png

在java语言中,注释有三种方法:

1.单行注释:单行注释是以“//”开头,后面加上所描述的内容

716b68b1b23540dfb3173197debb136f.png

2.多行注释:多行注释是以“/*”开头,中间加所述内容,以“*/”结尾

3.文档注释:文档注释以“/**”开头,以“*/”结尾

           /**

                * 功能:。。。。。

                * 作者:。。。。

            */

 实际应用如下:

public class zhushi{/**主方法*/public static void main(String[] args){int a,b,sum; // 声明三个整型变量/*输入部分,直接赋值*/a = 123;b = 321;// a 和 b 求和sum = a + b;//输入变量sum的值System.out.println("sum = " + sum);}
}

总的来说,注释是为了更好的梳理思路,以及便于读懂所写代码的意思。 

2.常量

如其名,就是固定不变的量,在代码中不会被改变的量。

具体如下:

常量类型说明举例
字符串常量“”双引号中的内容“Hello world”
整数常量不带小数点的数666
字符常量‘’单引号中的内容‘a’
小数常量带小数点的数666.666
布尔常量真或假(true or false)true or false
空常量空值null

public class ChangLiang{public static void main(String[] args){System.out.println("Hello world");  //字符串常量System.out.println(“-----------”);System.out.println('A');            //字符常量System.out.println(“-----------”);System.out.println(666);            //整数常量System.out.println(“-----------”);System.out.println(666.666);        //小数常量System.out.println(“-----------”);System.out.println(true);           //布尔常量}
}

3.数据类型

说到数据类型,应当先补充一下计算机存储单元的知识:

计算机常见的存储单位有 bit, byte, KB, MB, GB, TB,其中最小的单位“bit”,我们叫做位,是计算机存储设备的最小信息单元,计算机中最小的单元为byte(字节),简称为B,一个字节八个位。

        1B(byte 字节)=8bit,
   1KB (Kilobyte 千字节)=1024B,
   1MB (Megabyte 兆字节 简称“兆”)=1024KB,
   1GB (Gigabyte 吉字节 又称“千兆”)=1024MB。

以上是计算机存储单元的知识的一些知识,回归此模块数据类型:

32fd352135f94e229296a84523d55dee.png

数据类型关键字占用内存
整形byte1
short2
int4
long8
浮点数float4
double8
字符char2
布尔boolean1

对数据类型的个人理解:在java程序中,我们在定义一些变量或数组或常量的时候,就要根据需求运用不同的数据类型,好比 int a;这个语句,int数据类型就像是姓,而a则是名,将整体看成一个完整的名字,叫做 int a。

4.变量

在前面我学习了常量,在一个代码中,我可以用print函数打印一个常数,例如:

System.out.println(10);

 但如果我像改变输出的值,一种方法是直接改变println中的数值,比如我想将10改成30,则可以:

System.out.println(30);

但如果是100个println语句,一个一个改必然麻烦,在此,我们引出变量:

变量:在程序运行中,可以改变的量。顾名思义,就是可以变的量。

那么变量如何使用呢?我们来看一个代码:

public class BianLiang{public static void main(String[] args){int a;a = 10;System.out.println(a);}
}

这个代码中,print语句没有直接输出10,而是将10先赋值给a,然后在输出a,此时的a的意义也已经发生改变,所以电脑最后打印出的值也是10,在这里a便是一个变量,我们可以将不同的值赋值给a,最后在print语句中输出。这么说或许有一些笼统,举一个例子吧,我们有一个房间,房间为a,当你获得这个房间的钥匙的时候,你就可以进去这个房间,倘若有人来找你,可以直接去房间a,同理,任何一个获得a房间钥匙的人都可以进入这个房间,那么这个钥匙如何获得,当然看你的心情,钥匙在你手中,你可以在不犯法的情况下分配个任何满足条件的人。 

当我们想要修改时:

public class BianLiang {public static void main(String[] args){int a;a = 10;System.out.println(a);a = 30;System.out.println(a);}
}

输出结果为: 

4c9a226115a44f2f9b11f01ecd8e9e01.png

 可以看到a的值由10变为了30,变量a的值随之改变了。

5.标识符

官方标识符的解释为:

201ed94c279b45efac6c4640db02b22f.png

——标识符(标识某个实体的符号)_百度百科 (baidu.com) 

在我看来标识符就是用来识别的,它就是给类,方法,变量起名字的,至于类和方法后面会提到,不用钻牛角尖。

在百度百科给出的解释中,提到标识符是由字母,数字,下划线,汉字和美元符号组成的,特别注意第一个字符不可以是标识符,Java中的关键字也不可以是标识符。关键字?诸如public,class这种。

我们说像bj,_666这样的便是合法标识符,但是像class,public,6hjk这样的就不是合法标识符。

至于命名法有大小驼峰法,这个可以自己了解一下。

6.类型转换(基本数据类型转换)

类型转换想的变态一点就像是做变形手术,不仅外形改变,内在也发生变化。

在java中,存在自动类型转换和强制类型转换:

自动类型转换:

这种转换在程序运行中不会报错,系统会自动转换成正确的数据类型,我们是看不到的

在类型中,由小到大以此为:

e7acbd7c4aaf4c94b9bb2b49480884e0.png

遵从原则如下:

小转大;整转浮,有误差;符升级,整下来。(个人总结)

具体解释为:小的自动转换为大的,整数类型转成浮点数时会存在误差,字符型可以自动升级为整数型。
直接写一个整数,默认是int型。但如果它的范围在byte,short表数范围之内,而且程序直接将它赋给byte,short类型的变量,系统会自动把它当成byte,short用;所有数值型,都可以自动转换为double类型;所有数值型,除了double之外,都可以自动转换为float型;所有整型都可以自动转换为long型,依次向下。

比如说:

byte a = 10;
int b = a + 10;
public.out.println(b);

此代码在运行中就会将byte类型转换为int类型,并进行运算输出b的值。

7.运算

运算有好多,有赋值运算,加减运算,逻辑运算和关系运算。

先说一些需要用到的知识,在运算中,“=”叫做赋值,而真正的等号是“==”,并且在输出语句中,我们可以用“+”连接字符串或者数据或者字符。

public  class BasicKnowledge {public static void main(String[] args) {int i;int j;for(i=1;i<=9;i++){for(j=1;j<=i;j++){System.out.print(i+"*"+j+"="+ i*j +"\t");}System.out.println();}}
}

在这个代码中,print语句中的“+”就是用来连接“i”和“j”的,以便输出结构是“i*j”的形式:

6ff2e022218e41a285b89c1adce5649e.png

如果没有“+”连接的话,情况如下:1e9b17ac73204f5ebe60a574411e260c.png

编译器就会报错。

然后就是算数运算符:

在java中,算术运算符有下列几个:

运算符名称运算符符号举例
+1+1
-1-1
*1*1
/7/2
取余%7%2

加减乘不需要多数,特别说一下除和取余,在除中,系统默认结果为整数,“7/2”的结果应该是3.5,但系统只会输出3,而取余运算的意思就是取除未尽的数,7%2的结果为1(即结果为3余1,取余数1):

public  class BasicKnowledge {public static void main(String[] args) {int a = 7;int b = 2;int c = 7/2;int d = 7%2;System.out.println(c);System.out.println(d);}
}

结果如下:

36fcae5ddffe4563bd39dee360ae2488.png

了解了以上,我们来说一说赋值运算:

赋值运算:

public  class BasicKnowledge {public static void main(String[] args) {int a = 7;  //将7赋值给aSystem.out.println(a); //输出a的值为7}
}

前面我们说过代码中的“=”读作赋值,在我看来,赋值就是将一个定义的字母(int a)变为一个数,但是名义表面上还是那个字母。

这个的输出结果就是“7”.

自增自减运算:

自增(++)和自减(–)运算符是一种特殊的算术运算符,自增自减运算符是一个操作数。

public class ZI{public static void main(String[] args){//定义一个整型变量a,并赋值为99int a=99;//定义一个变量b,做自增运算int b=++a;//结果为100//定义一个整型变量a1,并赋值为8int a1=8;//定义一个变量b1,做自减运算int b1=--a1; //结果为7}}

让我们来看一下过程:

int b = ++a; 过程为: b=a+1=99+1=100; a=b=100, 最后结果为b=100,a=100

int  b1 = --a1; 过程为: b1=a1-1=8-1=7;a1=b1=7, 最后结果为b1=7,a1=7。

综上为:后缀自增自减法(a++,a–): 先进行表达式运算,再进行自增或者自减运算 。

 关系运算:

java中的关系运算,其结果为boolean类型,无非是ture或是false;

名称运算符
大于>
小于<
等于==
不等于!=
大于等于>=
小于等于<=

public class Ljys {public static void main(String[] args) {int a = 10;int b = 10;System.out.println(a > b);   //  falseSystem.out.println(a >= b);  //  trueSystem.out.println(a < b);   //  falseSystem.out.println(a <= b);  //  trueSystem.out.println(a == b);  //  trueSystem.out.println(a != b);  //  false      }
}

8.小练一下

1.比较体重:甲重160斤,乙重140斤,用程序比较体重是否相等?

public class lianxi {public static void main(String[] args) {int a = 160;//输入甲的体重int b = 140;//输入乙的体重boolean jiehuo=a==b?ture:false;/*用三元运算符进行判断*/System.out.println(jiehuo)//打印结果}
}


这篇关于【Java的自我反省】的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342008

相关文章

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

Java调用C++动态库超详细步骤讲解(附源码)

《Java调用C++动态库超详细步骤讲解(附源码)》C语言因其高效和接近硬件的特性,时常会被用在性能要求较高或者需要直接操作硬件的场合,:本文主要介绍Java调用C++动态库的相关资料,文中通过代... 目录一、直接调用C++库第一步:动态库生成(vs2017+qt5.12.10)第二步:Java调用C++

springboot+dubbo实现时间轮算法

《springboot+dubbo实现时间轮算法》时间轮是一种高效利用线程资源进行批量化调度的算法,本文主要介绍了springboot+dubbo实现时间轮算法,文中通过示例代码介绍的非常详细,对大家... 目录前言一、参数说明二、具体实现1、HashedwheelTimer2、createWheel3、n

Java利用docx4j+Freemarker生成word文档

《Java利用docx4j+Freemarker生成word文档》这篇文章主要为大家详细介绍了Java如何利用docx4j+Freemarker生成word文档,文中的示例代码讲解详细,感兴趣的小伙伴... 目录技术方案maven依赖创建模板文件实现代码技术方案Java 1.8 + docx4j + Fr

SpringBoot首笔交易慢问题排查与优化方案

《SpringBoot首笔交易慢问题排查与优化方案》在我们的微服务项目中,遇到这样的问题:应用启动后,第一笔交易响应耗时高达4、5秒,而后续请求均能在毫秒级完成,这不仅触发监控告警,也极大影响了用户体... 目录问题背景排查步骤1. 日志分析2. 性能工具定位优化方案:提前预热各种资源1. Flowable

基于SpringBoot+Mybatis实现Mysql分表

《基于SpringBoot+Mybatis实现Mysql分表》这篇文章主要为大家详细介绍了基于SpringBoot+Mybatis实现Mysql分表的相关知识,文中的示例代码讲解详细,感兴趣的小伙伴可... 目录基本思路定义注解创建ThreadLocal创建拦截器业务处理基本思路1.根据创建时间字段按年进

Java编译生成多个.class文件的原理和作用

《Java编译生成多个.class文件的原理和作用》作为一名经验丰富的开发者,在Java项目中执行编译后,可能会发现一个.java源文件有时会产生多个.class文件,从技术实现层面详细剖析这一现象... 目录一、内部类机制与.class文件生成成员内部类(常规内部类)局部内部类(方法内部类)匿名内部类二、

SpringBoot实现数据库读写分离的3种方法小结

《SpringBoot实现数据库读写分离的3种方法小结》为了提高系统的读写性能和可用性,读写分离是一种经典的数据库架构模式,在SpringBoot应用中,有多种方式可以实现数据库读写分离,本文将介绍三... 目录一、数据库读写分离概述二、方案一:基于AbstractRoutingDataSource实现动态

Springboot @Autowired和@Resource的区别解析

《Springboot@Autowired和@Resource的区别解析》@Resource是JDK提供的注解,只是Spring在实现上提供了这个注解的功能支持,本文给大家介绍Springboot@... 目录【一】定义【1】@Autowired【2】@Resource【二】区别【1】包含的属性不同【2】@

springboot循环依赖问题案例代码及解决办法

《springboot循环依赖问题案例代码及解决办法》在SpringBoot中,如果两个或多个Bean之间存在循环依赖(即BeanA依赖BeanB,而BeanB又依赖BeanA),会导致Spring的... 目录1. 什么是循环依赖?2. 循环依赖的场景案例3. 解决循环依赖的常见方法方法 1:使用 @La