热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Java基础知识笔记(二)

一,常量和变量1.常量程序在运行过程中,值不会发生改变的标识符常量分类:整数常量,小数常量,布尔常量【true和false】,字符常量,nul

一,常量和变量

1. 常量
程序在运行过程中,值不会发生改变的标识符
常量分类:整数常量,小数常量,布尔常量【true和false】,字符常量,null常量
System.out.println和System.out.print都可以实现打印,并且可以打印不同的数据类型
二者在进行打印的时候,不管是打印哪种数据类,每次只能打印一个值
整数常量:
System.out.println(10);
小数常量:
System.out.println(3.14);
布尔常量:
System.out.println(true);
System.out.println(false);
字符常量:——–用单引号表示
System.out.println(‘1’);
System.out.println(‘f’);
System.out.println(‘&’);
System.out.println(‘我’);
字符串———–用双引号表示
System.out.println(“我”);
System.out.println(“hello java”);
System.out.println(“2467857782”);

【注意】字符表示单个的字母,数字,特殊符号都可以是字符

2.变量
在程序运行过程中,值随时可以发生改变的标识符
a.需要在内存空间【运算区域】中开辟一块空间,将不确定的数据存储到这个空间中
b.语法:数据类型 标识符 = 不确定的数据
c.特点:
1>变量的值是可变的
2>如果需要使用变量,就必须开辟空间
3>标识符:遵循小驼峰【首字母小写,其他的单词首字母大写】,例如:personAge
4>变量存储一定类型的数据,一旦类型被规定,其他的类型将存储不进去

二,数据类型

Java语言还是一种强类型的语言【对于每一种数据类型都定一了非常明确的数据类型,在内存中分配了不同大小的内存空间,进行数据的存储】
1,数据类型的分类


    基本数据类型
数值型
字节整形【byte】
短整型【short】
整形【int】
长整形【long】
浮点型
单精度【float】
双精度【double】
字符型
【char】
布尔型
【boolean】
引用数据类型
类【class,字符串属于类【String】】
接口【interface】
数组【array:不是关键字】
枚举【enum】

2,每种数据类型占用空间的大小

类型名 关键字 占用的字节数 取值范围
字节整型 byte 1 -2^7 ~ 2^7 - 1(-128~127)
短整型 short 2 -2^15 ~ 2^15 - 1
整型 int 4 -2^ 31~ 2^31 - 1
长整型 long 8 -2^63 ~ 2^63 - 1
单精度 float 4 -2^128 ~ 2^127
双精度 double 8 -2^1024 ~ 2^1023
字符型 char 2 0~65535
布尔型 boolean 1 true和false

需要注意的问题:
a.浮点型
1>如果数据小的话,显示的是数据本身
2>如果数据较大的时候,显示的科学计数法
3>同字节的浮点数比同字节的整数能够s存储更大数据
b.字符型
1>使用单引号表示,只有单个字符,可以使字母,数字,符号,中文
2>使用字符集【ASCII码】表示【表示将语言文字和计算机表示建立起来的一个映射关系】
例如:a—->97
A—–>65
0—–>48

3.不同数据类型变量的定义

需求:定义一个int类型变量num,赋值为4
语法:数据类型 变量名称 = 数值
int num = 4;
对于同一个变量,如果要进行二次赋值的话,就不需要再指定数据类型
num = 10;
其他类型变量的定义
byte b = 2;//-128~127
byte b2 = 128;
byte类型的变量,在赋值的时候,只要在-128~127范围内,都会赋值成功
short s = 100;
会选用L来进行标记
long l = 10L;
浮点型:所有的浮点型,默认数据类型是double,会选用f来进行标记
float f = 2.3f;
double d = 3.14;
字符型:
char ch1 = ‘f’;
char ch2 = ‘3’;
char ch3 = ‘%’;
char ch4 = ’ ‘;
布尔型:
boolean b1 = true;
boolean b2 = false;
字符串类型:字符串是由多个字符组合而成,使用双引号表示,其中引入的内容没有限制,使用String关键字来进行定义变量
String str1 = “hello world”;
String str2 = “473645838574378”;
/********************特殊写法**********************************/
//写法一
//int number = 10;
int number;
number = 10;
System.out.println(number);
number = 100;
System.out.println(number);
//写法二
//可以连续定义多个变量,使用逗号分隔,但是前提条件是:只能定义同种数据类型
double dou1 = 1.0,dou2 = 3.4,dou3 = 10.5;
System.out.println(dou1);
System.out.println(dou2);
System.out.println(dou3);
/****************可能会出现的错误**************************************/
//错误一:在定义变量的时候,缺少三要素中的任何一个
//给变量第一次赋的值称为初始值,对变量赋初始值的过程就称为初始化变量
boolean boo;
System.out.println(boo);//错误:可能尚未初始化变量boo
//错误二:在同一个方法中或者类中,出现同名的变量
int number = 200;
System.out.println(number);//错误: 已在方法 main(String[])中定义了变量 number
/*****************************final关键字************************************/
如果在一个变量的前面加上final关键字,那么这个变量其实就是一个常量
//被final修饰的变量,变量名称的定义将不再遵循小驼峰命名法,遵循常量命名法:所有的字母全部大写,并且不同的单词之间使用下划线分隔
final int SCORE = 99;
score = 66;//错误:无法为最终变量score分配值
System.out.println(score);
//问题:不同数据类型之间能直接进行加法运算吗?
//答案:不能,不同的数据类型之间如果要进行运算的话,必须将他们转化为同一种数据类型

4,数据类型的转换

 a.自动类型转换
还可以称为隐式类型转换,转换的原理:相兼容的数据类型之间,将取值范围较小的数值或者变量赋值给取值范围较大的数据类型对应的变量
大 = 小
/************************自动类型转换*************************/
int num1 = 20;
//当int类型的num1赋值给long类型的num2的时候,num1会自动将其类型提升为long类型
long num2 = num1;
System.out.println(num2);

byte b = 10;
int i = 20;
//b + i之前,首先会将b自动提升为int类型,然后才参与运算
int c = b + i;
System.out.println(c);

float f1 = 10.0f;
float f2 = 3.14f;
int num = 1;
//num在参与运算之间,先自动提升为float类型,然后才参与运算
float result = f1 + f2 + num;
System.out.println(result);

char c1 = 'c';//ASCII码99
int i1 = 1;
//c1先提升为int类型,参照ASCII码
int result2 = c1 + i1;
System.out.println(result2);

System.out.println('a');//a
System.out.println('a' + 2);//99
System.out.println('1');//1
System.out.println('1' + 0);//49

byte b1 = 10;
byte b2 = 20;
// 错误: 不兼容的类型: 从int转换到byte可能会有损失
//char,byte,short在参与运算之前,都会自动提升为int类型
byte b3 = (byte)(b1 + b2);
System.out.println(b3);//30
b.强制类型转换
还可以称为显式类型转换,转换的原理:相兼容的数据类型之间,将取值范围较大的数值或者变量赋值给取值范围较小的数据类型对应的变量

语法:小范围 变量名 = (小范围)大范围的变量或者数值
小 = 大
/************************强制类型转换*************************/
int age = 18;
byte age1 = (byte)age;

double d1 = 3.14;
float d2 = (float)d1;

float d3 = (float)10.0;
总结:
a.整型数据默认情况下数据类型是int,浮点型数据默认情况下是double
b.byte,short,char类型的变量在参与运算的时候,首先会自动提升为int类型,然后才参与运算
特殊:char提升为int类型的时候遵循ASCII码
c.整型和浮点型之间运算的时候,整型会统统提升为浮点型,然后才参与运算

三、运算符

1.算术运算符
+ - * / %【求余】 ++【自加】 –【自减】

        int a = 10;
int b = 20;
System.out.println(a + b);//30
System.out.println(a - b);//-10
System.out.println(a * b);//200
//整型/整型= 整型【取整】
System.out.println(a / b);//0

//求余
System.out.println(a % b);//10

/*
求余运算 时,如果有负数参与运算,结果为正为负看左边
左边为正则结果则为正
左边为负反之
*/

System.out.println(-1 % 5);//-1
System.out.println(1 % -5);//1

//自增自减运算符
//++:自增1
//--自减1
int c = 3;
//++出现在变量的后面,在参与运算的时候,先使用原来的值,然后自增1
int c1 = c++ + 2;
System.out.println(c);//4
System.out.println(c1);//5

int d = 3;
//++出现在变量的前面,在参与运算的时候,先自增1,然后再参与运算
int d1 = ++d + 2;
System.out.println(d);//4
System.out.println(d1);//6

int e = 5;
int e1 = e-- + 10;
System.out.println(e);//4
System.out.println(e1);//15

int f = 5;
int f1 = --f + 10;
System.out.println(f);//4
System.out.println(f1);//14


int g = 10;
//自增和自减可以单独当做一条语句
//g++;
g = g + 1;
System.out.println(g);//11


//特殊情况:+【连接运算符】,主要针对字符串
//作用:可以将基本数据类型转换为字符串
//任何类型的数据和字符串使用+相连,最终的结果都为字符串
System.out.println("hello" + "," + 100 + "," + 3.14);

System.out.println("" + 100);
2.赋值运算符
=
复合赋值运算符:+= -= *= /= %=
//复合赋值运算符:+= -= *= /= %=
int num1 = 100;
num1 += 1;//等价于num1 = num1 + 1
System.out.println(num1);

short num2 = 50;
num2 += 5;//等价于num2 = (short)(num2 + 5)
System.out.println(num2);


int x = 10;
int y = 20;
int z = 30;
//赋值方向:从右往左
x = y = z;
System.out.println(x);//30
System.out.println(y);//30
System.out.println(y);//30

//int m;
//1 = m;
3.关系运算符【条件运算符】
> <<= >= ==【恒等于】 !=【不等于】
用于比较两个变量的大小,如果成立则结果为true,反之为false
注意:在使用关系运算符时,保证参与比较的两个变量是同一种类型
//> <<= >= ==【恒等于】 !=【不等于】
System.out.println(5 > 3);

System.out.println(5 == 3);
4.逻辑运算符
用于连接布尔类型的表达式

与【&、&&:短路与】、或【|、||:短路或】、异或【^】、非【!】
        int x = 4;

//1.与: & &&
/*
true & true = true;
true & false = false;
false & true = false;
false & false = false;

规律总结:全真为真,有假为假

& 和 &&的区别:
&:无论左边是true还是false,两边都会参与运算
&&:只要左边是false,则右边不参与运算,直接得到结果为false
*/
System.out.println(x > 3 & x <6);//true
System.out.println(x > 3 && x > 6);//false

//举例
int a = 10;
boolean result = (a++ > 10) & (a-- <10);
System.out.println(a);//10
//false & false = false

int b = 10;
boolean result1 = (b++ > 10) && (b-- <10);
System.out.println(b);//11

//2、或 | ||
/*
true | true = true;
true | false = true;
false | true = true;
false | false = false;

规律总结:有真则真,全假为假

| 和 ||的区别:
|:无论左边是true还是false,两边都会参与运算
||:只要左边是true,则右边不参与运算,直接得到结果为true
*/


//3.异或 ^
/*
true ^ true = false;
true ^ false = true;
false ^ true = true;
false ^ false = false;

规律总结:相同为假,不同为真
*/

//4.非
/*
!true = false;
!false = true;

规律总结:假则为真,真则为假
*/
5.位运算符【★★】
& | ^ ~ <<【左移】 >>【右移】 >>>【无符号右移】

<位运算a>
<位运算b>
6.三元运算符【★★★★★】
作用:实现了二选一的操作
语法:条件表达式?表达式1:表达式2
注意:运算之后一定要有一个结果


//需求:判断一个数是否是偶数,如果是则结果为“是偶数”,反之,结果为“是奇数”
int num = 11;

//语法:条件表达式?表达式1:表达式2
String result = num % 2 == 0 ? "是偶数" : "是奇数";
System.out.println(result);

//三目运算符实现了二选一,如果条件表达式成立,则最终的结果为表达式1,反之,为表达式2

int x = 3,y;

y = (x > 1) ? 100 : 200;
System.out.println(y);
7.转义运算符
通过\来改变后面字母或者符号的含义
    /*
\n 换行
\b 退格,相当于backspace键
\r 按下回车键,相当于enter键
\t 制表符,相当于tab键
*/

System.out.println("hello\tworld");

//在Window下,如果要进行回车,直接使用\r是不可以,必须\r\n结合使用
//但是,\n单独可以使用
System.out.println("hello\r\nworld");

//需求:"hello java"
System.out.println("\"hello java\"");

//需求:\hello java\
System.out.println("\\hello java\\");
8.运算优先级

<运算符优先级>
注意:
a.尽量不要把一个表达式写的过于复杂,如果涉及到稍微复杂一点的运算时,建议分步操作
b.不要过多的依赖于运算符的优先级来控制表达式的执行顺序,这样可读性太差,推荐使用()


推荐阅读
  • Java中包装类的设计原因以及操作方法
    本文主要介绍了Java中设计包装类的原因以及操作方法。在Java中,除了对象类型,还有八大基本类型,为了将基本类型转换成对象,Java引入了包装类。文章通过介绍包装类的定义和实现,解答了为什么需要包装类的问题,并提供了简单易用的操作方法。通过本文的学习,读者可以更好地理解和应用Java中的包装类。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • C语言常量与变量的深入理解及其影响
    本文深入讲解了C语言中常量与变量的概念及其深入实质,强调了对常量和变量的理解对于学习指针等后续内容的重要性。详细介绍了常量的分类和特点,以及变量的定义和分类。同时指出了常量和变量在程序中的作用及其对内存空间的影响,类似于const关键字的只读属性。此外,还提及了常量和变量在实际应用中可能出现的问题,如段错误和野指针。 ... [详细]
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • c语言\n不换行,c语言printf不换行
    本文目录一览:1、C语言不换行输入2、c语言的 ... [详细]
  • 动态规划算法的基本步骤及最长递增子序列问题详解
    本文详细介绍了动态规划算法的基本步骤,包括划分阶段、选择状态、决策和状态转移方程,并以最长递增子序列问题为例进行了详细解析。动态规划算法的有效性依赖于问题本身所具有的最优子结构性质和子问题重叠性质。通过将子问题的解保存在一个表中,在以后尽可能多地利用这些子问题的解,从而提高算法的效率。 ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 猜字母游戏
    猜字母游戏猜字母游戏——设计数据结构猜字母游戏——设计程序结构猜字母游戏——实现字母生成方法猜字母游戏——实现字母检测方法猜字母游戏——实现主方法1猜字母游戏——设计数据结构1.1 ... [详细]
  • [大整数乘法] java代码实现
    本文介绍了使用java代码实现大整数乘法的过程,同时也涉及到大整数加法和大整数减法的计算方法。通过分治算法来提高计算效率,并对算法的时间复杂度进行了研究。详细代码实现请参考文章链接。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 使用C++编写程序实现增加或删除桌面的右键列表项
    本文介绍了使用C++编写程序实现增加或删除桌面的右键列表项的方法。首先通过操作注册表来实现增加或删除右键列表项的目的,然后使用管理注册表的函数来编写程序。文章详细介绍了使用的五种函数:RegCreateKey、RegSetValueEx、RegOpenKeyEx、RegDeleteKey和RegCloseKey,并给出了增加一项的函数写法。通过本文的方法,可以方便地自定义桌面的右键列表项。 ... [详细]
  • 《2017年3月全国计算机等级考试二级C语言上机题库完全版》由会员分享,可在线阅读,更多相关《2017年3月全国计算机等级考试二级C语言上机题库完全版( ... [详细]
  • 查找给定字符串的所有不同回文子字符串原文:https://www ... [详细]
author-avatar
天使装着幸福
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有