【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

相关文章

JVM 的类初始化机制

前言 当你在 Java 程序中new对象时,有没有考虑过 JVM 是如何把静态的字节码(byte code)转化为运行时对象的呢,这个问题看似简单,但清楚的同学相信也不会太多,这篇文章首先介绍 JVM 类初始化的机制,然后给出几个易出错的实例来分析,帮助大家更好理解这个知识点。 JVM 将字节码转化为运行时对象分为三个阶段,分别是:loading 、Linking、initialization

Spring Security 基于表达式的权限控制

前言 spring security 3.0已经可以使用spring el表达式来控制授权,允许在表达式中使用复杂的布尔逻辑来控制访问的权限。 常见的表达式 Spring Security可用表达式对象的基类是SecurityExpressionRoot。 表达式描述hasRole([role])用户拥有制定的角色时返回true (Spring security默认会带有ROLE_前缀),去

浅析Spring Security认证过程

类图 为了方便理解Spring Security认证流程,特意画了如下的类图,包含相关的核心认证类 概述 核心验证器 AuthenticationManager 该对象提供了认证方法的入口,接收一个Authentiaton对象作为参数; public interface AuthenticationManager {Authentication authenticate(Authenti

Spring Security--Architecture Overview

1 核心组件 这一节主要介绍一些在Spring Security中常见且核心的Java类,它们之间的依赖,构建起了整个框架。想要理解整个架构,最起码得对这些类眼熟。 1.1 SecurityContextHolder SecurityContextHolder用于存储安全上下文(security context)的信息。当前操作的用户是谁,该用户是否已经被认证,他拥有哪些角色权限…这些都被保

Spring Security基于数据库验证流程详解

Spring Security 校验流程图 相关解释说明(认真看哦) AbstractAuthenticationProcessingFilter 抽象类 /*** 调用 #requiresAuthentication(HttpServletRequest, HttpServletResponse) 决定是否需要进行验证操作。* 如果需要验证,则会调用 #attemptAuthentica

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin

Java架构师知识体认识

源码分析 常用设计模式 Proxy代理模式Factory工厂模式Singleton单例模式Delegate委派模式Strategy策略模式Prototype原型模式Template模板模式 Spring5 beans 接口实例化代理Bean操作 Context Ioc容器设计原理及高级特性Aop设计原理Factorybean与Beanfactory Transaction 声明式事物

Java进阶13讲__第12讲_1/2

多线程、线程池 1.  线程概念 1.1  什么是线程 1.2  线程的好处 2.   创建线程的三种方式 注意事项 2.1  继承Thread类 2.1.1 认识  2.1.2  编码实现  package cn.hdc.oop10.Thread;import org.slf4j.Logger;import org.slf4j.LoggerFactory

JAVA智听未来一站式有声阅读平台听书系统小程序源码

智听未来,一站式有声阅读平台听书系统 🌟&nbsp;开篇:遇见未来,从“智听”开始 在这个快节奏的时代,你是否渴望在忙碌的间隙,找到一片属于自己的宁静角落?是否梦想着能随时随地,沉浸在知识的海洋,或是故事的奇幻世界里?今天,就让我带你一起探索“智听未来”——这一站式有声阅读平台听书系统,它正悄悄改变着我们的阅读方式,让未来触手可及! 📚&nbsp;第一站:海量资源,应有尽有 走进“智听

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定