Mosh Java课程自学(一)

news2024/11/23 18:28:54

目录

一、前言

二、全局介绍

三、Types


一、前言

首先推荐一下B站上转载的Mosh讲Java课程,当然,建议有一定基础并且英文水平尚可的同学学习,否则你可能会被搞得很累并逐渐失去对编程的兴趣。

Mosh 【JAVA终极教程】中英文字幕 高清完整版 最简洁易懂的课程(3个PART齐全)更新完毕,注意看校对版!!!_哔哩哔哩_bilibili

二、全局介绍

很多人第一门语言接触的是C,相比于Java来说有明显的不同,毕竟C是面向过程的编程语言,而Java是面向对象的编程语言。两者之间意义上的不同,在我早期的一篇博客中进行了简单阐述,有兴趣可以看看:

从最简单直白的角度 浅谈面向过程与面向对象的区别_bit_Sakura的博客-CSDN博客

1、平台独立性(可移植性)

 众所周知Java的一大优点就是他在所有安装了Java运行环境的OS上都可以运行,不管是Linux、Mac还是windows,这也是在国内Java使用率远超C#的一个原因。

Java将编译的源代码放到虚拟机(Java Virtual Machine)上,经过处理交给对应平台完成移植。

2、package 

 说回Java,在Java中存在一个新的概念,package(包),什么是包,通俗来说就是文件夹。

像我们写的程序都以文件的形式保存,那在一个项目里,必然有很多很多的程序文件,要统筹管理这些大量文件就需要文件夹分开整理保存。

package一般的命名方式是以公司域名的倒序命名,例如:com.baidu...

 

在project 所属的文件夹中可以看到图中创建的package。

看到这种结构为什么需要package也就不言而喻了————自然是层次性可维护性。

3、class

同样是基础对象的编程,和C++一样,Java中自然也有class (类)的概念。

类是一个抽象的概念,它是一个宏观的概念,而对象是它的实例,也就是具象化,比如说水果和苹果,家具和桌椅之间的关系。这部分相比不用多说大家都知道。

在Java编程中与C/C++等语言不同的一点是(尤其对于刚接触的新手):执行程序的接口或者说进入程序运行的地方的形式不一样(只是形式上)。

C/C++是以main函数为起始执行的,当然Java也是,但是他们长得不一样,这就导致了刚接触Java的人会产生疑惑。

 这个public class Main 是什么鬼?嵌套在里面的那一串好像是main函数入口,但又好像不是。

先来看我们工程那一栏,

这里有个Main,首字母大写的,和第一行一样,这是我们创建的包的主类。

在这个主类中,public static void main(String[] args) 就是程序入口,public作为访问修饰符允许被所有类访问,static标明这是个静态方法(后面再说),参数String[] args 允许外部传参,能使编程更方便。

关于package和class话题实在太多,在后面的接触中会一一呈现。

三、Types

1、基本类型

Java中有两种类型,一种是基本类型:

byte、short 适用于表示范围不大的整数,比如一个人的年龄体重等。 

long表示的范围就大很多了,在Java中表示长整型数字时,要在数字后面加L,否则会报错:

 在Java中最好每3位使用一个下划线分割长整型数字,更清晰明了。

Java中有固定的常量不想使其被改变时我们可以用final修饰:

 

double 类型比float 类型存储范围更大,精度更高。

带小数点的字面量默认属于double类型,所以声明一个float类型的变量时,都要在数字后面加上 "F" 或 "f"。

2、引用类型

还有另一种类型是引用类型,用来表示除基本类型之外相对复杂的一些类型。

引用类型会在堆上申请开辟空间,借由new实现,并且Java环境会自动释放该空间。

现在我想创建一个日期类型,Java环境自动给我们提示了一串相关Date类型所在的包,“Enter" 将包导入:

 现在来创建Date类型,打印时间:

 使用 . 操作符可以显示该实例成员相关的函数操作,这是引用类型拥有而基本类型所不具备的。

 基本类型开辟的空间在栈上,而引用类型开辟的空间在堆上,实际上是将对象的地址赋值过去了,这也是很大的一个差异。

 

3、字符串

字符串也是引用类型,早期的创建方式:

当然你现在可以这么做:

 与C/C++不同,Java中字符串可以相加,也就是通过 + 的方式拼接:

 String类中有很多有趣的方法,如 .replace:

 将 “hello”中的 ' l ' 换成 'Q'。

如 .trim:

.trim会裁掉字符串前后多余的留白。

 已经存储在内存的字符串是无法改变的,比如用.toUpperCase /.toLowerCase取得字符串的大/小写子串,改变的不是原始字符串,而是返回了一个新的串。

原始字符串并未改变,也不能改变。

 4、数组

数组的创建方式(老版):

常用的:

现在想打印数组看一下,但是这样打印出来的是数组的首地址,

所以得借助Arrays:

二维数组也是一样:

这样出来的就是一个两行三列的数组。

但是打印不能用上面的Arrays.toString(),这样依然打印的是首地址,要用deepToString():

 多维数组都是一样的规则。

 5、显示类型转换、隐式类型转换

我们知道,float变量和int变量无法相加,那么byte 和 int ,short 和 byte , short 和long 之间又如何呢?

short 类型和int类型相加,居然转换成了long类型,结果没有问题,这是怎么回事?

 这涉及到变量之间的隐式类型转换,表示范围小的会自动朝表示范围大的转换(当然浮点数和整形之间不可以)

byte < short < int <long ---> float ---->double 

float < double

上图中变量x 先隐式类型转换成int , 编译器会生成一个匿名变量X,临时存放x转换成更高类型的值,和y相加,由于 = 左边是long类型,那么相加的值又会再次自动转变成更高的long类型。

float 和double之间也是大同小异。

那么浮点数和整形之间可以转换吗?————也是可以的,

当然也可以用显示类型转换。

单个字符char 类型也可以:

字符串与整形/ 浮点型之间也可以转换 :

 

 总结一下:

 

6、Math类相关方法

Math.round()接收一个float,返回一个 int类型

                          接收一个double,返回一个 long类型

按四舍五入处理。

Math.ceil ,向上提升,不舍只进。接收一个double,返回一个double类型

Math.floor,向下取整,只舍不进。接收一个double,返回一个double类型

Math.random 返回一个0~1之间的double型浮点数。

7、Format格式化

碰到金钱处理 ¥$,经常需要格式化输出;还有百分制格式化。

8、输入Scanner

 图中byte类型的变量隐式类型转换成了String类型。

 要想接收从键盘读入的数据,需要用到scanner.nextByte(),scanner.nextFloat()等方法。 

如果读的是字符串,需要scanner.next() / scanner.nextline(),两者区别在于前者只能读到空格处,后面的部分读不到;而nextline可以读到包括空格的所有字符。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1020971.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

口袋参谋:如何高效一键下载真实买家秀?

​在淘宝天猫上&#xff0c;即使卖一支笔都有上万个宝贝竞争&#xff0c;所有卖家拼的就是权重带来的曝光度&#xff0c;能展示给买家多少&#xff0c;自己收获多少流量。 如何用自己的优势将流量访客转化为顾客&#xff0c;提升店铺的转化率。而买家秀&#xff0c;就是为此而生…

Java常用类之 String、StringBuffer、StringBuilder

Java常用类 文章目录 一、字符串相关的类1.1、String的 不可变性1.2、String不同实例化方式的对比1.3、String不同拼接操作的对比1.4、String的常用方法1.5、String类与其他结构之间的转换1.5.1、String 与基本数据类型、包装类之间的转换1.5.2、String 与char[]的转换1.5.3、…

ipad可以使用其他品牌的手写笔吗?开学平价电容笔推荐

新学期已经来临&#xff0c;相信不少同学已经开始着手筹备新学期的该准备什么了&#xff0c;毕竟原装的苹果Pencil&#xff0c;功能强大&#xff0c;但价格昂贵&#xff0c;一般人根本买不起。那么&#xff0c;有没有像苹果原装那样的电容笔呢&#xff1f;当然是有的。国产的平…

长安链上线可视化敏捷测试工具v1.0版本

开发者对区块链底层平台进行初步的了解后&#xff0c;一项经常会涉及到的工作是对平台进行测试以考量其性能及稳定性是否符合自身使用需求。长安链推出了可视化UI操作界面的区块链敏捷测试工具v1.0版本&#xff0c;当前版本可对内置合约进行压测并生成网络拓扑图以验证组网方式…

免费开箱即用微鳄售后工单管理系统

编者按&#xff1a;本文介绍基于天翎MyApps低代码平台开发的微鳄售后工单管理系统&#xff0c; 引入低代码平台可以帮助企业快速搭建和部署售后工单管理系统&#xff0c; 以工作流作为支撑&#xff0c;在线完成各环节数据审批&#xff0c;解决售后 工单 服务的全生命周期过程管…

《2023中国氢能源行业分析报告》丨附下载_三叠云

✦ ✦✦ ✦✦ ✦✦ ✦ 1. 国内氢能政策梳理 直接涉及氢能政策&#xff1a;1&#xff09;21年以来&#xff0c;发布国家级10个、省级83个、 市县级252个&#xff1b;2&#xff09;涉及发展规划占比45%、财政支持占比 20%、项目支持占比17%、管理办法占比16%、 氢能安全和标准占…

公私钥非对称加密 生成和验证JSON Web Token (JWT)

前言 这是我在这个网站整理的笔记&#xff0c;关注我&#xff0c;接下来还会持续更新。 作者&#xff1a;神的孩子都在歌唱 公私钥非对称加密 生成和验证JSON Web Token 什么是JSON Web Token (JWT)Java程序中生成和验证JWT代码解析 什么是JSON Web Token (JWT) JSON Web Tok…

【C++】泛型算法(二)泛型指针Iterator(迭代器)

迭代器iterator定义 迭代器是一种检查容器内元素并遍历元素的数据类型&#xff1b;迭代器提供一个对容器对象或者string对象的访问方法&#xff0c;并定义了容器范围&#xff1b;迭代器的使用可以提高编程的效率。 其定义应该提供&#xff1a; 迭代对象&#xff08;某个容器&a…

拆贡献算总和(抓住双射)+竞赛图与连通分量相关计数:arc163_d

https://atcoder.jp/contests/arc163/tasks/arc163_d 首先竞赛图有个性质&#xff1a; 然后有了这个性质&#xff0c;我们就可以考虑计数题的经典套路&#xff0c;拆贡献算总和。 考虑假如我们成功划分成两个集合 A , B A,B A,B&#xff0c;其中一个可以为空&#xff08;我们…

Qt --- Day02

实现效果&#xff1a; 点击登录&#xff0c;检验用户密码是否正确&#xff0c;正确则弹出消息框&#xff0c;点击ok转到另一个页面 不正确跳出错误消息框&#xff0c;默认选线为Cancel&#xff0c;点击Yes继续登录 点击Cancel跳出问题消息框&#xff0c;默认选项No&#xff0c…

netty之pipeline

Netty抽象出流水线(pipeline)这一层数据结构进行处理或拦截channel相关事件。 事件分为入站事件(inBound event)和出站事件(outBound event)的ChannelHandlers列表。ChannelPipeline使用先进的Intercepting Filter模式&#xff0c;使用户可以完全控制如何处理事件以及管道中的…

全流程GMS地下水数值模拟及溶质(包含反应性溶质)运移模拟技术教程

详情点击公众号链接&#xff1a;全流程GMS地下水数值模拟及溶质&#xff08;包含反应性溶质&#xff09;运移模拟技术教程 前言 GMS三维地质结构建模 GMS地下水流数值模拟 GMS溶质运移数值模拟与反应性溶质运移模 详情 1.GMS的建模数据的收集、数据预处理以及格式等&#xff…

2023/9/18 -- C++/QT

作业 完善登录框 点击登录按钮后&#xff0c;判断账号&#xff08;admin&#xff09;和密码&#xff08;123456&#xff09;是否一致&#xff0c;如果匹配失败&#xff0c;则弹出错误对话框&#xff0c;文本内容“账号密码不匹配&#xff0c;是否重新登录”&#xff0c;给定两…

《Linux运维总结:Centos7.6之OpenSSH7.4升级版本至9.4》

一、环境信息 操作系统&#xff1a;Centos7.6.1810 OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 如下图所示&#xff1a; 注意&#xff1a;升级后由于加密算法的区别&#xff0c;低版本的SSH工具可能无法连接&#xff0c;建议改用Xshell7或SecureCRT9.0以上版本。 二、注意事项 1、检…

第九章 关系查询处理和查询优化

第九章 关系查询处理和查询优化 9.1 关系数据库系统的查询处理 9.1.1 查询处理步骤 查询分析 对查询语句进行扫描、词法分析和语法分析&#xff0c; 词法分析&#xff1a;从查询语句中识别出正确的语言符号。语法分析&#xff1a;进行语法检查。 查询检查 合法性检查视图转换…

【java】【SpringBoot】【二】运维实用篇 SpringBoot工程

目录 一、打包与运行 1、程序打包与运行&#xff08;Window版&#xff09; 1.1 打包 1.2 运行 1.3 打包插件 1.4 总结 1.6 命令行启动常见问题及解决方案 2、程序运行&#xff08;Linux版&#xff09; 二、配置高级 1、临时属性设置 2、配置文件分类 3、自定义配置…

Spring Boot + Vue3前后端分离实战wiki知识库系统十三--单点登录开发二

接着https://www.cnblogs.com/webor2006/p/17608839.html继续往下。 登录功能开发&#xff1a; 接下来则来开发用户的登录功能&#xff0c;先准备后端的接口。 后端增加登录接口&#xff1a; 1、UserLoginReq&#xff1a; 先来准备用户登录的请求实体&#xff1a; package com…

07JVM_内存模型和CAS与原子类

一、内存模型 1.java内存模型 Java内存结构是JMM&#xff08;Java Memory Model&#xff09;的意思。JMM定义了一套在多线程读写共享数据&#xff08;成员变量&#xff0c;数组&#xff09;时&#xff0c;对数据的原子性&#xff0c;见性&#xff0c;有序性的规则和保障。 1…

浅谈电力电容器技术的发展及选型

安科瑞 华楠 摘要&#xff1a;介绍了我国电力电容器产品制造技术的发展现状。在与国外电力电容器产品先进水平对比的基础上,讨论了我国电力电容器产品的差距和某些对策,并对我国电力电容器技术发展趋势提出了一些看法。 关键词&#xff1a;电力电容器;制造技术;技术发展 0 引…