Java语言基础
一、变量
1.1什么是变量
- 变量:表示数据在内存当中的内存地址,变量对应的数据是可以改变的,如果不知道用变量那么就需要记住内存地址来进行操作
1.2如何使用变量
- 声明变量(申请内存地址)
- 数据类型 变量名 ;
- 变量的初始化(对变量进行赋值)
- 变量名 = 值 ;
- 使用变量
pub1ic class demo{
pub1ic static void main(string[] args){
//力式一
//1.中明变量
int a;
1/2.变量初始化
a=10;
//3.使用变量
System. out. print1nCa);
*/
//方式二
//1.声明变量并且初始化变量
int a 10;
//2.使用变量
System. out. print1n("a的值为: "+a);
*/
//方式三
//连定义多个变量
int a,b,c=10;
//使用变量
//System. out. print1n("连赋值的a的值为: "+a);
错误
//system. out. print1n("连赋值的b的值为: "+b);
错误
System. out. print1n("连赋值的C的值为"+C);
//注意:在java当中变量-定婴初始化才能使用
}
注意:在Java中变量一定要初始化才能使用
1.3变量命名规范
- 只能是数字、字母、下划线、$组成
- 不能使用数字开头
- 不能使用Java中的关键字和保留字
-
关键字
-
Java 保留字:现有 Java 版本尚未使用,但以后版本可能会作为关键字使用。自己命名标识符时要避免使用这些保留字
byValue、cast、future、 generic、 inner、 operator、 outer、 rest、 var 、 goto 、const
-
- 使用驼峰命名法(两个单词以上组成)
- 包名:多单词组成时所有字母都小写:
xxxyyyzzz
- 类名、接口名:多单词组成时,所有单词的首字母大写:
XxxYyyZzz
- 变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:
xxxYyyZzz
- 常量名:所有字母都大写。多单词时每个单词用下划线连接:
XXX_YYY_ZZZ
- 总原则:见名知意
- 包名:多单词组成时所有字母都小写:
二、数据类型
2.1
-
基本数据类型
-
整数类型:byte short int long
-
浮点类型:float double
-
布尔类型:boolean
-
字符类型:char
-
public class Demo01{ public static void main(String[] args){ //声明变量并初始化 //整数类型 byte a1=10; short a2=10; int a3=10; long a4=10L; //浮点类型 float b1=10.1F; double b2=10.1; //布尔类型 boolean c=true; //字符类型 char d1='A'; //使用变量 System.out.println("byte:"+a1); System.out.println("short:"+a2); System.out.println("int:"+a3); System.out.println("long"+a4); System.out.println("float"+b1); System.out.println("double"+b2); System.out.println("boolean:"+c); System.out.println("char:"+d1); } }
-
取值范围
-
整型
- byte的取值范围为**-128~127**,占用1个字节(-2的7次方到2的7次方-1)
- short的取值范围为**-32768~32767**,占用2个字节(-2的15次方到2的15次方-1)
- int的取值范围为**(-2147483648~2147483647)**,占用4个字节(-2的31次方到2的31次方-1)
- long的取值范围为**(-9223372036854774808~9223372036854774807)**,占用8个字节(-2的63次方到2的63次方-1)
-
浮点型
- float 3.402823e+38 ~ 1.401298e-45(e+38表示是乘以10的38次方,同样,e-45表示乘以10的负45次方)占用4个字节
- double 1.797693e+308~ 4.9000000e-324 占用8个字节
-
boolean型(布尔型)
这个类型只有两个值,true和false(真和非真)
- boolean t = true;取值为1
- boolean f = false;取值为0
-
char型(文本型)
用于存放字符的数据类型,占用2个字节,采用unicode编码,它的前128字节编码与ASCII兼容
字符的存储范围在\u0000~\uFFFF,在定义字符型的数据时候要注意加’ ‘
字符有三种表示方式: 1.字符'A' '中' 2.数字 97 65 20 3.十六进制 '\u0041' '\u0025'
-
-
-
-
引用数据类型
- String 类 接口 数组
2.2数据类型细节
- long 类型数据使用时候要在最后添加L或l
- float 类型数据需要在最后添加F或f
- 字符必须使用 ’ ’ 来表示
2.3转义字符
- 转义字符:转变字符原有含义
- 常见的转义字符:\n 表示换行 \t 表示一个制表位 \u表示16进制
- 转义字符 注意事项:\不能单独使用
2.4引用数据类型
String 表示引用数据类型
在Java中一切被" "包裹起来的类型都是引用数据类型
public class Demo{
public static void main(String[] args){
String n="asdasdasdasdasdasdasdas";
System.out.println(n);
}
}
三、数据类型转换
- 在Java中要求等号左边与等号右边类型一致。若类型不一致,那么就需要进行类型转换
3.1自动类型转换
-
在数据类型兼容的情况下,小转大就是自动类型转换
-
自动类型转换也称为隐式转换,意思就是,不做任何操作也可以
public class Demo{ public static void main(String[] args){ byte a1=10; //等号左边是int类型 等号右边是byte //自动类型转换 int a2=a1; System.out.println(a2); int b1 = 111; //左边是double 右边是int double b2 = b1; System.out.println(b2); } }
3.2强制类型转换
- 在数据类型兼容的情况下,大专小就是强制类型转换
- 也称之为显式转换,需要添加相对应的语法
- 语法:(数据类型)变量
public class Demo{
public static void main(String[] args){
int a1 = 100;
//左边为short 右边为int
short a2=(short)a1;
System.out.println(a2);
float b1=(float)3.14159;
System.out.println(b1);
//左边是long 不加L是int类型
long c1 = (long)10000000000000000;
System.out.println(c1);
/*
*/
/*
数据类型的提升:
1.计算当中如果有double,结果也是double
计算当中如果有float,结果也是float
计算当中如果有long,结果也是long
计算当中如果有int,结果也是int
2.byte short char 类型在计算中会自动提升为int类型
*/
}
}
类型转换注意事项 :
-
数据类型转换注意的问题: 1.boolean 不参与任何的类型转化 2.数据类型转换房子范围的大小(byte short|char int long float double) 3.在Java中任意一个整数都是int ,任意一个小数都是double 4.在强制类型转换当中会造成数据丢失
四、运算符
4.1、算数运算符
如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。
对于除号
/
,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。**+**除字符串相加功能外,还能把非字符串转换成字符串。
public class Demo {
public static void main(String[] args) {
//取余 求模 % 前面的是被模数 后面的是模数
//除法 / 前面的是被除数 后面的是除数
int a = 3;
int b = 2;
System.out.println(a % b);
//如果对负数取模,可以把模数负号忽略不记
System.out.println(3 % 2);
System.out.println(-3 % 2);
System.out.println(3 % -2);
System.out.println(-3 % -2);
//整数之间做除法时,只保留整数部分而舍弃小数部分
System.out.println(3 / 2);
System.out.println(3.0 / 2);
//++在变量的基础上加1 前面:先加1,再赋值 后面:先赋值,再加1
int i = 10;
int t1 = ++i;
System.out.println(i);
System.out.println(t1);
/*
++i;
System.out.println(i);
*/
}
}
5.2、赋值运算符
符号**=**,不是我们通常说的等于,在Java中它的意思是把右侧的值给
左侧
当**=**两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理
支持连续赋值:x = y = 1
扩展赋值运算符:+=、-=、*=、/=、%=
public class Demo {
public static void main(String[] args) {
//赋值运算
int x = 10;
int y;
//连续赋值
x = y = 1;
//扩展赋值运算
x += 2; //x = x + 2;
System.out.println(x);
System.out.println(y);
}
}
4.3、关系运算符
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yBS4eLWJ-1665475107093)(D:\Folder\笔记\img\关系运算.jpg)]
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
关系运算符
==
不能误写成=
。
public class Demo {
public static void main(String[] args) {
//关系运算
int a = 10;
int b = 100;
System.out.println(a > b); //false
System.out.println(a >= b); //false
System.out.println(a <= b); //true
System.out.println(a < b); //true
System.out.println(a == b); //false
System.out.println(a != b); //true
}
}
5.4、逻辑运算符
与(&或&&):两侧为真,则为真;一侧为假,则为假。
或(|或||):两侧为假,则为假;一侧为真,则为真。
非(!):取反,真的变成假,假的变成真。
异或(^):强调的是异,两侧相同则为假,两侧不同则为真,体现的是一个异。
public class Demo {
public static void main(String[] args) {
//逻辑运算 &逻辑与 两个都为真(true),则为真,一侧为假,则为假(false)
System.out.println((5 > 5) & (4 > 3));
//|逻辑或 一侧为真,则为真,两侧为假,则为假
System.out.println((5 > 5) | (4 > 4));
//!逻辑非 取反
System.out.println(!(5 == 5));
// ^异或 两边相同返回假,两边不同返回真
System.out.println(true^true);
System.out.println(true^false);
}
}
**&和&&**区别:
- **&**左边无论真假,右边都进行运算
- **&&**如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算
**|和||**区别:
- **|**左边无论真假,右边都进行运算
- **||**如果左边为假,右边参与运算,如果左边为真,那么右边不参与运算
public class Demo {
public static void main(String[] args) {
//&&短路与 两个都为真(true),则为真,一侧为假,则为假(false),左侧为假,右侧不进行运算
int x1 = 10;
int y1 = 100;
if((x1 != 10) && (++y1 > 100)) {
}
System.out.println(y1);
//||短路或 一侧为真,则为真,两侧为假,则为假,左侧为真,右侧不进行运算
if((x1 >= 10) || (++y1 > 100)) {
}
System.out.println(y1);
}
}
4.5、三元运算符
语法:(条件表达式)? 表达式1:表达式2
条件表达式为true,运算后的结果是表达式1
条件表达式为false,运算后的结果是表达式2
表达式1和表达式2为同种类型
public class MyTest13 {
public static void main(String[] args) {
//三元运算符,判断最大值
int x1 = 10;
int x2 = 100;
int max = (x1 >= x2) ? x1 : x2;
System.out.println(max);
}
}
4.5、三元运算符
语法:(条件表达式)? 表达式1:表达式2
条件表达式为true,运算后的结果是表达式1
条件表达式为false,运算后的结果是表达式2
表达式1和表达式2为同种类型
public class Demo {
public static void main(String[] args) {
//三元运算符,判断最大值
int x1 = 10;
int x2 = 100;
int max = (x1 >= x2) ? x1 : x2;
System.out.println(max);
}
}
4.6、位运算符
- | :按位或
- 特点是:相同位数上有1的结果就1
- &:按位与
- 特点是:相同位上同为1才是2
- ^:按位异或
- 特点:相同位上为0不同为1
- ~:按位取反
- 特点:将每一位上的数字取反 将补码进行按位取反
- 先求补码 通过反码 获取源码
- 数字加一取反
4.7、左移,右移
- 左移**<<**
- 特点:将二进制的数位整体向左移动N位 低位补0
- 右移**>>**
- 特点:将二进制的数位整体向右移动N位 如果是正数补0,负数补1
- 无符号右移 >>> 要用32位来表示 无论正负 高位补0
- 特点:将二进制数位整体向右移动N位 高位补0
public class Demo{
public static void main(String[] args){
System.out.println(16|7);
System.out.println(18&23);
System.out.println(13^34);
System.out.println(~14);
System.out.println(18<<2);
System.out.println(23>>2);
System.out.println(-18>>2);
System.out.println(-23>>>2);
}
}
4.8、运算符优先级
五、控制台录入
控制台录入指的是通过键盘输入数据与程序之间进行交互
使用步骤:
- 创建键盘输入对象Scanner
- 引入Scanner类
- 使用创建好的Scanner对象来进行扫描输入内容
//引入Scanner类
import java.util.Scanner;
public class Demo{
public static void main(String[] args){
//创建Scanner扫描对象
Scanner sc =new Scanner(System.in);
//使用创建好的Scanner对象来进行扫描输入内容
System.out.println("请输入数字:");
int a =sc.nextInt();
System.out.println("输入的数字:"+a);
}
}