Java学习笔记(02_1Java语言基础)

2023-10-27

知识点总结于毕向东Java基础视频教程25天版本,侵权请联系删除。

Java语言基础组成

关键字

定义:被Java语言赋予特殊含义的单词
特点:关键字中所有字母都为小写

标识符

  • 在程序中自定义的一些名称。

  • 由26个英文字母大小写,数字:0-9符号:_$组成。

  • 定义合法标识符规则:
    1.数字不可以开头
    2.不可以使用关键字

  • Java中严格区分大小写。

  • 在起名字时,为了提高阅读性,要尽量有意义。

    Java中的名称规范:

  • 包名:多单词组成时所有字母都小写。xxxyyyzzz

  • 类名接口名:多单词组成时,所有单词的首字母大写。XxxYyyZzz

  • 变量名和函数名:多单词组成时,第一个单词首字母小写,第二个单词开始每个首字母大写。xxxYyyZzz

  • 常量名:所有字母都大写。多单词使用时每个单词用下划线连接。XXX_YYY_ZZZ

注释

  • 用于注解说明解释程序的文字就是注释。
  • 提高了代码的阅读性。
  • Java中的注释格式:
    1.单行注释//这是单行注释
    2.多行注释/*这是多行注释*/
    3.文档注释/** 这是文档注释 */
  • 对于单行和多行注释,被注释的文字,不会被JVM(java虚拟机)解释执行。
  • 对于文档注释,是java特有的注释,其中注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文件形式体现的该程序的说明文档。
  • 注释是一个程序员必须具有的良好编程习惯。
  • 初学者编写程序可以养成习惯:先注释再写代码。
  • 将自己的思想通过注释先整理出来,再用代码去体现。因为代码仅仅是思想的一种体现形式。

常量与变量

常量

  • 常量表示不能改变的数值。
  • Java中常量的分类:
    1.整数常量。所有整数。
    2.小数常量。所有小数。
    3.布尔型常量。较为特有,只有两个数值true和false。
    4.字符常量。将一个数字字母或符号用单引号( ’ ’ )标识。
    5.字符串常量。将一个或多个字符用双引号标识。
    6.null常量。只有一个数值null。
  • 对于整数:java有三种表现形式:
    1.十进制:0-9,满10进1
    2.八进制:0-7,满8进1.用0表示开头。
    3.十六进制:0-9,A-F,满16进1.用0x表示开头。

变量

变量的概念:

  • 内存中的一个存储区域
  • 该区域有自己的名称(变量名)和类型(数据类型)
  • 该区域的数据可以在同一类型范围内不断变化

为什么要定义变量:

  • 用来不断的存放同一类型的常量,并可以重复使用

使用变量注意:

  • 变量的作用范围(一对{}之间有效)
  • 初始化值

定义变量的格式:

  • 数据类型 变量名 = 初始化值;

理解:变量就如同数学中的未知数。

类型转换

Java语言是强类型语言,对于每一种数据都定义了明确的具体数据类型,在内存总分配了不同大小的内存空间。
在这里插入图片描述

数据类型 基本类型 存储单元 取值范围
整型 byte 1个字节(8位) -128~127
short 2个字节(16位) -32768~32767
int 4个字节(32位) -2,147,483,648~2,147,483,647
long 8个字节(64位) -9,223,372,036,854,775,808~9,223,372,036,854,775,807
浮点型 float 4个字节(32位) -2^128 ~ 2^128
double 8个字节(64位) -2^1024 ~ 2^1024
字符型 char 2个字节(16位) 0~65536
布尔型 boolean 1个字节(8位) 仅有两个值true, false,变量初始化默认值false
整数默认类型:int 小数默认类型:double, 不同类型的数不能直接做运算。

例如:

byte b=2; //正确
b=b+2; //错误
  • 2代表int类型的整数为什么可以直接赋给byte,但为什么第2句又错了呢?
因为编译器知道常量2在byte的合法取值范围当中,会自动转换成byte。而b=b+2错误是由于编译器无法在编译期间知晓变量的值,不确定最后得到的值会不会超过byte的取值范围,所以报错。
  • 自动类型转换(隐式类型转换)
    从低位类型到高位类型系统可以自动转换。
  • 所有的byte型、short型和char的值将被提升到int型。
  • 如果一个操作数是long型,计算结果就是long型。
  • 如果一个操作数是float型,计算结果就是float型。
  • 如果一个操作数是double型,计算结果就是double型。
  • 强制类型转换(显式类型转换)
    语法格式:(数据类型) 数值
数据在经过强制转换后可能会出现丢失精度的情况。

运算符

算术运算符

运算符 运算 范例 结果
+ 正号 +3 3
- 负号 b=4;-b; -4
+ 5+5 10
- 6-4 2
* 3*4 12
/ 5/5 1
% 取模 5%5 0
++ 自增(前) a=2;b=++a; a=3,b=3
++ 自增(后) a=2;b=a++; a=3;b=2
- - 自减(前) a=2;b=- -a; a=1;b=1
- - 自减(后) a=2;b=a- -; a=1;b=2
+ 字符串相加 “He”+“llo” “Hello”

提问:

int x=4270;
x=x/1000*1000;
System.out.println(x);//x的值是多少?

x为int型,1000默认也为int型,所以结果也是int型,则需要舍弃小数位,得到结果为4。再进行乘法运算得到x为4000。

负数的取模运算

注意:在Java语言中,负数取模运算的结果的符号只与第一个操作数的符号相同(或为0)。

连接符

字符串数据和任何数据使用"+"都是相连接,最终都会变成字符串。
System.out.println("5+5"+5+5);//"5+555"

转义字符

通过"\"转变后面字母或者符号的含义。

\n:换行

\b:退格。相当于backspace键。

\r:按下回车键。//在Windows系统中,回车符是由两个字符来表示"\r\n"。

\t:制表符。相当于tab键。

转义字符写在被转义字符的前面。
System.out.println("\"Hello World\"");

输出结果:“Hello World”(带上了双引号)

赋值运算符

  • 符号:
    = , +=, -=, *=, /=, %=
  • 示例:
    int a,b,c; a=b=c =3; int a = 3;
    a+=5;等同运算a=a+5;

比较运算符

运算符 运算 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
> 大于 4>3 true
< 小于 4<3 false
>= 大于等于 4>=3 false
<= 小于等于 4<=3 false
instanceof 检查是否是类的对象 “Hello” instanceof String true
  • 注1:
    比较运算符的结果都是boolean型,也就是要么是 true,要么是false。

  • 注2:
    比较运算符“==”不能误写成“=” 。

逻辑运算符

运算符 运算 范例 结果
& AND(与) false&true false
| OR(或) false|true true
^ XOR(异或) true^false true
! NOT(非) !true false
&& AND(短路) false&&true false
|| OR(短路) false||true true

&和&&的区别:

int a=2;
a>3 & a<6;
a>3 && a<6;

无论左边是true是false,右边都运算。

&:判断a>3为false,再判断a<6为true。

当左边是false时,右边不运算。

&&:判断a>3为false,不执行后来的判断。
"|"和"||"同理。

位运算符

运算符 运算 范例
<< 左移 3<<2 = 12- -> 3*2*2= 12
>> 右移 3>>1 = 1- -> 3/2= 1
>>> 无符号右移 3>>>1 = 1- -> 3/2= 1
& 与运算 6 & 3 = 2
| 或运算 6 | 3 = 7
^ 异或运算 6 ^ 3 = 5
~ 反码 ~6 = -7
  • <<:将一个运算对象的各二进制位全部左移若干位(左边的二进制位丢弃,右边补0)。其实就是乘2的移动的位数次幂。比如将a左移一位就是a =a*2^1。
  • >>:将一个数的各二进制位全部右移若干位(正数左补0,负数左补1,右边超出的二进制位丢弃)。除以2的移动位数次幂。比如将a左移一位就是a =a/2^1。
  • >>>:无论最高位是什么,右移后都用0补。
  • &:参加运算的两个数据,按二进制位进行“与”运算。
  • |:参加运算的两个数据,按二进制位进行“或”运算。
  • ^:参加运算的两个数据,按二进制位进行“异或”运算。
  • ~:参加运算的一个数据,按二进制位进行“取反”运算。
练习:(1)最有效率的方式算出2乘以8等于几?
            (2)对两个整数变量的值进行互换(不通过第三方变量)
(1)2<<3;

(2)如下:
方法1:

int n,m;
n=n+m;//如果n和m的值非常大,容易超出int范围
m=n-m;
n=n-m;

方法2:

int n,m;
n=n^m;
m=n^m; //m=(n^m)^m=n
n=n^m; //n=(n^m)^n=m

三元运算符

  • 格式
    (条件表达式)?表达式1:表达式2;
    如果条件为true,运算后的结果是表达式1;
    如果条件为false,运算后的结果是表达式2;

  • 示例
    获取两个数中大数。
    int x=3,y=4,z;
    z = (x>y)?x:y; //z变量存储的就是两个数的大数。

注意:类型不同的数会从低位转换到高位。
  • 特点
    1.可以简化if else代码;2.因为是一个运算符,所以运算结束必须返回一个结果。

程序流程控制

判断结构

  1. if
if(条件表达式)
{
	语句;
}
  1. if-else
if(条件表达式)
{
	语句;
}
else
{
	语句;
}
  1. if-else if- else
if(条件表达式)
{
	语句;
}
esle if(条件表达式)
{
	语句;
}
else
{
	语句;	
}

选择结构

switch(条件表达式){
          case1:
            语句体1;
            break;
          case2:
            语句体2;
            break;
            ...
          default:   
            语句体n;
            break;
} 
  • switch语句选择的类型只有四种:byte,short,int ,char。
  • case之间与default没有顺序。先执行第一个case,没有匹配的case执行default。
  • 结束switch语句的两种情况:遇到break,执行到switch语句结束。
  • 如果匹配的case或者default没有对应的break,那么程序会继续向下执行,运行可以执行的语句(不需要再次判断),直到遇到break或者switch结尾结束。

什么时候选择Switch或者If?

如果判断的具体数值不多而且符合byte short int char四种类型,建议使用switch语句,因为相比于if,switch效率稍高。
其它情况:对区间判断,对结果为Boolean类型判断使用if,if的使用范围更广。

循环结构

  1. while
while(条件表达式) 
{ 
	执行语句;
}

  1. do while
do 
{
	执行语句; 
}while(条件表达式);

do while特点是条件无论是否满足,循环体至少被执行一次。

  1. for
for(初始化表达式;循环条件表达式;循环后的操作表达式)
{ 
	执行语句; 
}

注意:

  • for里面的连个表达式运行的顺序,初始化表达式只读一次,判断循环条件, 为真就执行循环体,然后再执行循环后的操作表达式,接着继续判断循环条件, 重复找个过程,直到条件不满足为止。
  • while与for可以互换,区别在于:for为了循环而定义的变量在for循环结束后将在内存中释放*。而while循环使用的变量在循环结束后还可以继续使用
  • 最简单无限循环格式:while(true) , for(; ; ) 。无限循环存在的原因是并不知道循环多少次,而是根据某些条件,来控制循环。

*:变量结构有自己的作用域。对于for来讲:如果将用于控制循环的增量定义在for语句中,那么该变量只在for语句内有效,for语句执行完毕,该变量在内存中释放。

其它流程控制语句

  • break(跳出)
    应用范围:选择结构和循环结构
  • continue(继续)
    应用范围:循环结构

注:

  1. 这两个语句离开应用范围,存在是没有意义的。
  2. 这个两个语句单独存在下面都不可以有语句,因为执行不到。
  3. continue语句是结束本次循环继续下次循环
  4. 标号的出现,可以让这两个语句作用于指定的范围。如下:
标号只能应用于循环上,是给循环起名的一种方式。
w:for(int i=0;i<3;i++){
	q:for(int j=0;j<4;j++){
		break w; //退出名称为w的循环
	}
}
for(int i=1;i<=10;i++){
	if(x%2==1)continue;
	System.out.println(x); //打印1到10之间所有偶数
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Java学习笔记(02_1Java语言基础) 的相关文章

  • Java操作Excel文件

    创建一个Excel文件 public static void creatExcelFile String filepath Workbook wb new XSSFWorkbook try FileOutputStream fileOut
  • JVM工具-jstack

    jstack 打印线程堆栈信息 支持支持本地java进程 core文件以及远程java进程 命令格式 jstack options pid jstack options executable core jstack options serv
  • mac上使用IntelliJ IDEA运行项目

    一 Mac OSX系统下安装Tomcat 1 下载Tomcat官方下载地址 2 解压Tomcat到目录 Library 中 并把文件夹名由 apache tomcat 6 0 16 改为 Tomcat 3 打开 应用程序 Applicati
  • 根据图片地址得到文件流

    得到文件流 param url 图片地址 return public static byte getFileStream String url try URL httpUrl new URL url HttpURLConnection co
  • 接口的加密解密

    接口加密 1 接口参数加密 基础加密 2 接口参数加密 接口时效性验证 一般达到这个级别已经非常安全了 3 接口参数加密 时效性验证 私钥 达到这个级别安全性固若金汤 4 接口参数加密 时效性验证 私钥 Https 我把这个级别称之为金钟罩
  • 使用jemeter进行压力测试关注的指标

    一 压测设置 线程数 并发数量 能跑多少量 具体说是一次存在多少用户同时访问 Rame Up Period in seconds 表示JMeter每隔多少秒发动并发 理解成准备时长 设置虚拟用户数需要多长时间全部启动 如果线程数是20 准备
  • 动力节点老杜java基础视频笔记第一章 学前准备 (1)

    课堂截图 为什么使用截图工具 在听课的过程中 有的时候老师操作的比较快 通过截图的方式将老师的操作保存下来 以便后期的操作 另外截图之后的图片也可以用于笔记的记录 在笔记当中最好采用图文并茂的方式 这样更加利于知识的回顾 使用哪个截图工具
  • Java基础——strictfp关键字

    关键字strictfp是strict float point的缩写 指的是精确浮点 它是用来确保浮点数运算的准确性 JVM在执行浮点数运算时 如果没有指定strictfp关键字 此时计算结果可能会不精确 而且计算结果在不同平台或厂商的虚拟机
  • 集合addAll方法使用存在的问题。

    集合addAll 方法的时候 这里里有两个集合 集合2要拿到集合1中的元素 然后对集合2进行removeAll方法 结果集合1中的值也没有了 只是因为listTwo listOne 只是把集合1的引用给了集合2 集合1和集合2的引用是指向同
  • 六、03【Java 多线程】之Java线程

    Java 创建线程的方式 Java创建线程有四种方式 继承 Thread 类 实现 Runnable 接口 实现 Callable 接口 使用 Executors 工具类创建线程池 1 继承 Thread 类 创建一个类继承 Thread
  • javaSE进阶1之static用法

    JavaSE进阶 静态关键字 static static关键字的作用 成员变量分类 静态成员变量 实例成员变量 static修饰成员变量内存原理 static 修饰成员方法的基本用法 成员方法的分类 static修饰成员方法内存原理 sta
  • 一文彻底弄懂零拷贝原理

    零拷贝 零拷贝 Zero Copy 是一种 I O 操作优化技术 可以快速高效地将数据从文件系统移动到网络接口 而不需要将其从内核空间复制到用户空间 其在 FTP 或者 HTTP 等协议中可以显著地提升性能 但是需要注意的是 并不是所有的操
  • [透彻]为什么要前后端分离?

    前后端分离的意义 前后端分离 已成为互联网项目开发的业界标准使用方式 前后端分离 会为以后的大型分布式架构 弹性计算架构 微服务架构打下坚实的基础 核心思想 前端页面调用后端的restuful api接口 并使用json数据进行交互 服务器
  • ubuntu 11配置hadoop

    最近没事 研究下ubuntu 配置hadoop ubuntu版本 64 bit 11 04 hadoop版本 hadoop1 2 1 一 在Ubuntu下创建hadoop用户组和用户 1 创建hadoop用户组 sudo addgroup
  • JAVA,异常

    异常概念 通常大家认为异常就是错误 但这个错误有很多种 1 语法错误 2 JVM虚拟机错误 3 平台错误 4 程序运行错误 平台或者资源或者逻辑 数值等错误 常见的异常 1 java lang NullPointerException 空指
  • 《编写高质量代码:改善Java程序的151个建议》读书笔记

    编写高质量代码 改善Java程序的151个建议 秦小波 67个笔记 前言 本书附带有大量的源码 下载地址见华章网站www hzbook com 建议11 养成良好习惯 显式声明UID SerialVersionUID 也叫做流标识符 Str
  • 重试机制的实现(4m,10m,10m,1h,2h,6h,15h)

    项目场景 由于我们现在所做的项目有有很多的外放接口供代理商调用 但是有些接口的响应并不是实时返回的 此时我们就需要使用回调接口的方式 将信息响应给代理商 在这期间可能会出网络不稳定等其他情况 导致回调接口调用失败 所以需要特定的回调重试机制
  • Java 泛型 T,E,K,V,?

    泛型带来的好处 在没有泛型的情况的下 通过对类型 Object 的引用来实现参数的 任意化 任意化 带来的缺点是要做显式的强制类型转换 而这种转换是要求开发者对实际参数类型可以预知的情况下进行的 对于强制类型转换错误的情况 编译器可能不提示
  • JAVA--GUI(2)--布局

    布局 为了更好适应不同平台而引入的概念 Java的布局管理器是一个实现了LayoutManager接口的实例 用户无法设置setLocation 这些方法 如果想自己设置则需要取消布局管理器 采用布局管理器 边界布局 顺序布局 网格布局 卡
  • SM2加解密、签名验签

    导论 SM2是国家密码管理局于2010年12月17日发布的椭圆曲线公钥密码算法 在我们国家商用密码体系中被用来替换RSA算法 国产SM2算法 是基于ECC的 但二者在签名验签 加密解密过程中或许有些许区别 目前鄙人还不太清楚 后期有机会的话

随机推荐

  • PyQt5中ui文件如何转为Py文件并界面可视化

    1 在pycharm里的File里面找到setting 2 Tools工具里找到External Tools 3 选择 添加 其中Name 根据你自己想法取 这里写的是 Qt Designer Program 这里是找到你的designer
  • 应用程序签名机制

    原文链接 http www 2cto com Article 201308 237263 html Android安全机制分析 Android系统是基于Linux内核开发的 因此 Android系统不仅保留和继承了Linux操作系统的安全机
  • AttributeError: 'module' object has no attribute 的解决方法

    AttributeError module object has no attribute funSalaryGuide 这个错误相信很多django的开发人员都会遇到 一般来说都是应用没有安装完成 重新安装就可以了 这几天我遇到的情况是已
  • 【Xilinx DMA】Xilinx FPGA DMA介绍

    DMA Direct Memory Access 直接内存访问 可以在不受CPU干预的情况下 完成对内存的存取 在PS和PL两端都有DMA 其中PS端的是硬核DMA 而PL端的是软核DMA 如何选用这两个DMA呢 如果从PS端的内存DDR3
  • ###haohaohao###图神经网络之神器——PyTorch Geometric 上手 & 实战

    图神经网络 Graph Neural Networks GNN 最近被视为在图研究等领域一种强有力的方法 跟传统的在欧式空间上的卷积操作类似 GNNs通过对信息的传递 转换和聚合实现特征的提取 这篇博客主要想分享下 怎样在你的项目中简单快速
  • java 对象对象的属性_java中对象属性可以是另外一个对象或对象的参考

    7 对象的属性可以是另外一个对象或对象的参考 通过这种方法可以迅速构建一个比较大的系统 class Motor Light lights Handle left right KickStart ks Motor lights new Lig
  • Xilinx MIPI CSI license

    Xilinx MIPI CSI license 不绑定MAC地址 永久有效 支持所有Vivado版本 技术交流请加 ljy435
  • CENTOS安装curlftpfs

    首先说明 curlftpfs效率还是挺慢的 用于局域网内文件传输会出现不稳定的情况 1 Fedora可以直接yuminstall curlftpfs CentOS不行 得用DAGrepository 所以得先安装DAGrepository
  • Yearning SQL审核平台部署(Yearning-2.3.4-linux-amd64)

    参考博客 https blog csdn net weixin 45858439 article details 105277413 环境 mysql5 7 35 下载Yearning 2 3 5 linux amd64安装包https g
  • PHP7.27: connect mysql 5.7 using new mysqli_connect

  • Jenkins:报错Build step ‘Execute Windows batch command‘ marked build as failure解决办法

    Windows 下本地的 Jenkins 部署完成后 创建任务进行构建时 遇到如下报错信息 构建虽然失败了 但是命令却是执行成功了 问题就在于 Build step Execute Windows batch command marked
  • 数字媒体资产管理教材

    http vr sdu edu cn lulin course DAM
  • 产量预测文献读后整理

    文献名称 1 Data Driven End To End Production Prediction of Oil Reservoirs by EnKF Enhanced Recurrent Neural Networks 2 Produ
  • TensorFlow实现简单神经网络

    本文首发于我的个人博客QIMING INFO 转载请带上链接及署名 在上文 TensorFlow快速上手 中 我们介绍了TensorFlow中的一些基本概念 并实现了一个线性回归的例子 本文我们趁热打铁 接着用TensorFlow实现一下神
  • 前端强缓存和协商缓存

    缓存是前端面试的一个常见知识点 下面对于实际项目中如何进行缓存的设置给出方案 强缓存和协商缓存 浏览器缓存是浏览器将用户请求过的静态资源存储到电脑本地磁盘中 当再次访问时 就可以直接从本地缓存中加载而不需要去向服务器请求了 但是缓存也有缺点
  • C++内存泄露检测器(库注入方法)

    C 内存泄露检测器 库注入方法 2012 06 18 15 55 04 分类 C C codeproject上的一篇文章 翻译过来共享 C Memory Leak Finder C 内存泄露检测器 leakfinder zip 作者 Fre
  • GPT专业应用:早晚安问候语生成

    正文共 725 字 阅读大约需要 3 分钟 社群运营必备技巧 您将在3分钟后获得以下超能力 自动生成早晚安问候语 Beezy评级 B级 经过简单的寻找 大部分人能立刻掌握 主要节省时间 推荐人 nanako 编辑者 Linda 此图片由Le
  • 【Java 微服务架构 Dubbo篇】-1-Zookeeper

    课程回顾 微服务架构需要解决的问题 分布式协调框架Zookeeper 什么是分布式协调技术 分布式协调技术主要用来解决分布式环境当中多个进程之间的同步控制 让他们有序的去访问某种临界资源 防止造成 脏数据 的后果 在这图中有三台机器 每台机
  • LSTM神经网络详解

    LSTM 长短时记忆网络 Long Short Term Memory Network LSTM 是一种改进之后的循环神经网络 可以解决RNN无法处理长距离的依赖的问题 目前比较流行 长短时记忆网络的思路 原始 RNN 的隐藏层只有一个状态
  • Java学习笔记(02_1Java语言基础)

    知识点总结于毕向东Java基础视频教程25天版本 侵权请联系删除 第二章 Java语言基础 Java语言基础组成 关键字 标识符 注释 常量与变量 常量 变量 类型转换 运算符 算术运算符 赋值运算符 比较运算符 逻辑运算符 位运算符 三元