自学Java第二天

Java基本语法

2.1 关键字

关键字的定义和特点

定义:被Java语言赋予了特殊意义,用做专门用途的字符串
特点:关键字中所有字母都为小写
在这里插入图片描述
在这里插入图片描述

保留字

**Java保留字:**现有Java版本尚未使用,但以后版本可能会作为关键字使用。自己命名标记符时要避免使用这些保留字
byValue,cast,future.generic,inner,operator,outer,rest,var,goto,const

文本编辑器

在这里插入图片描述
(竖行编辑文本:Alt键+光标)

标识符

标识符:
1.Java对各种变量、方法等要素命名时使用的字符序列称的标识符
2.凡是自己可以起名字的地方都叫标识符。
定义合法标识符规则:
1.由26个英文字母大小写,0-9,_或$组成
2.数字不可以开头。
3.不可以使用关键字和保留字,但能包含关键字和保留字。
(比如:类名不能用直接用class,但可以是class1)
4.Java中严格区分大小写,长度无限制。
5.标识符不能包含空格。
**注意:**在起名字时,为了提高阅读性,要尽量有意义,“见名知意”。

Java中的名称命名规范

**包名:**多单词组成时所有字母都小写:xxxyyzzz
**类名、接口名:**多单词组成时,所有单词的首字母大写:xxxYyyZzZ
**变量名、方法名:**多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyVZzz
**常量名:**所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ

2.2 变量

变量的概念:
1.内存中的一个存储区域
2.该区域有自己的名称(变量名)和类型(数据类型)
3.Java中每个变量必须先声明,后使用
4.该区域的数据可以在同一类型范围内不断变化
使用变量注意:
1.变量的作用域:一对{}之间有效
2.初始化值
**定义变量的格式:**数据类型 变量名=初始化值
变量是通过使用变量名来访问这块区域的

java中变量的定义:数据类型变量名=变量的值,例如:int i = 1
int i = 1
i = 2
**注意:**声明变量过程中的这个=,不是数学意义上的=,在java编程中代表赋值(赋予变量值)
**变量的类型:**声明的变量的数据类型就是变量的类型

变量的分类—按数据类型

对于每一种数据都定义了明确的具体数据类型,在内存中分配了不同大小的内存空间
在这里插入图片描述
在java中,数据类型分为基本数据类型和引用数据类型,其中基本数据类型有8中,除了这8中之外其他所有的数据类型都是引用数据类型

整数类型:byte, short, int, long

在这里插入图片描述
byte b = 126
int i = 1
short s = 1
long 1= 3l,这个long类型变量赋值时要在值的后面跟上一个字母l

浮点类型:float, double

●与整数类型类似,Java浮点类型也有固定的表数范围和字段长度,不受具体OS的影响。
●Java的浮点型常量默认为double型,声明float型常量,须后加‘f”或F’。
●浮点型常量有两种表示形式:
十进制数形式:如:5.12 512.0f .512(必须有小数点)
科学计数法形式:如:5.12e2 512E2 100E-2
在这里插入图片描述
double d= 1.22
float f = 1.22f,float类型变量赋值时值后面跟上字母f

字符类型:char

char型数据用来表示通常意义上“字符”(2字节)
字符型常量的表现形式:
1.字符常量是用单引号**(’’)括起来的单个字符,涵盖世界上所有书面语的子待。例如:char c1 = ‘a’;char c2 = ‘中’;char c3 = ‘9’ ;
2.Java中还允许使用转义字符 ‘’ 来将其后的字符转变为特殊字符型常量。例如:char c3 = ‘\n’;// '\n’表示换行符
char类型是可以进行运算的。因为它都对应有Unicode码。**

\b 退格符 \n 换行符 \r 回车符 \t 刺表符 " 双引号 ’ 单引号
\ 反斜线

布尔类型:boolean

boolean 类型适于逻辑运算,一般用于程序流程控制:
1.if条件控制语句;
2.while循环控制语句;
3.do-while循环控制语句;
4.for循环控制语句;
boolean类型数据只允许取值true和false,无null。
不可以o或非0的整数替代false和true,这点和C语言不同。
boolean b1 = true
boolean b2 = false

换行输出
System. out. prin(“sss\n”);
或者System. out. println(“sss”);
在这里插入图片描述
输出结果:
在这里插入图片描述

引用类型:String类

用来接收字符串的
●值nul可以赋值给任何引用类型(类、接口、数组)的变量,用以表示这个引用类型变量中保存的地址为空。
●String类属于引用类型,可用null赋值。
●String类是一个典型的不可变类,String对象创建出来就不可能被改变。创建出的字符串将存放在数据区,保证每个字符串常量只有一个,不会产生多个副本。
String s0=“hello”;
String s1=“hello”;
String s2=“he”+“ll”+“o”;
字符串就是由0到多个字母数字符号共同组成的一个串,个串要用英文的双引号括起来

String str=“hello world”;
system.out.println(str);
●引用类型,都可以用null作为值,也就是说可以在初始化的时候赋值为null
●string是引用类型,也就是说可以使用null作为值
int i 0 =1
int i 1 =1
●以上这种会在内存中存储2个1的值
String s0=“hello”
String s1=“hello”
●这种的,不会在内存中存在两个"hello",只存在1一个"hello”
●假设"hello”的内存地址xxxxx,声明s0变量时给s0赋值"hello”实际上让s0变量引用"hello”的内存地址xxxxx;当我们再声明变量s1也赋值"he11o”的时候实际上也是直接把已经存在的"hello”的内存地址给s1引用

String s3 = “he”+“11”+“o”;可以多级拼接
在这里插入图片描述

2.3集成开发环境

在这里插入图片描述
下载安装使用eclipse
官网下载,方法看以下网址
https://jingyan.baidu.com/article/b0b63dbf02e4d24a4830701a.html
注意:便用的eclipse和安装的jdk位数要保持一致,必须都是32位或看都是64位

基本数据类型转换

在这里插入图片描述

int res=i+s+b;//问题,最后得到的数字6是一个声明类型的呢?在计算过程中i、s、b这3个变量会做数据类型的转化吗?
//在计算过程中,整数类型是int的范围最大,所以s和b都分别先转换成int类型然后进行加的运算,最终的结果是int的数据

ASCII码:上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码。ASCII码一共规定了128个字符的编码,比如空格"SPACE"是32(二进制00100000),大写的字母A是65(二进制01000001).

char c ='a';//char类型的数据在与数字进行数学运算的时候,它是转换为相对应的ASCII码的值然后再进行的计算
String str0="1"+1+2+3//当把任何基本类型的值和字符串值进行连接运算时(+),基本类型的值将自动转化为字符串类型。此时输出为1123

练习1

String str1=4;//判断对错:错 需要加上双引号
String str2=3.5f+";//判断str2对错:对
System.out.println(str2);//输出:3.5
System.out.println(3+4+“Hello!”);//输出:7Hello!
System.out.println(“Hello!”+3+4);//输出:Hello!34
System.out.println(‘a’+1+“Hello!”);//输出:98Hello!
System.out.println(“Hello!”+‘a’+1);//输出:Hello!a1

注意:当有一些列的+的运算的时候,如果某个部分其中含有字符串,那么这个字符串前边挨着的+开始一直往后就是要按照字符串拼接去看

强制类型转换

在这里插入图片描述
byte b = 9;
int i = b;//以上这两行属于正常隐式转换数据类型,自动的

int k = 7;
byte b0 = (byte)k; //这个就是强制转换数据类型,转换的数据类型要用英文的小括号括起来

数字类型的运算规则:
1、有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。数字类型的从小到大分别是byte、short、int、long、float、double。
2、数字类型的运算中,多个相同类型变量参与的运算,变量要先转换为相对应的数据类型的默认类型(比如两个byte类型的变量相加,会先把两个byte类型的变量转换成默认的int类型之后再计算,得到的结果是int类型)。这种情况适用于变量的数据类型的容量比默认类型的容量小,(比如byte,short,都比int小)
3、byte,short,char之间不会相互转换,他们三者在计算时首先转换为int类型。

练习2

判断是否能通过编译
1)short s = 5;
s = s-2;//判断:错
2)byte b = 3;
b = b+4;//判断:错
b = (byte)(b+4);//判断:对
3)char c = ‘a’;
int i = 5;
double d = .314;
double result = c+i+d;//判断:对102.314
4)byte b = 5;
short s = 3;
short t = s+b;//判断:错

2.4 运算符

运算符是一种特殊的符号,用以表示数据的运算、赋值和比较等。
●算术运算符
●赋值运算符
●比较运算符(关系运算符)
●逻辑运算符
●位运算符
●三元运算符

1.算数运算符

在这里插入图片描述
当整数除以整数时,会把结果的小数部分舍弃,只保留整数部分
取模就是去余数
++和–分别是加1和减1的运算,++或者–符号在变量之前,先对变量进行运算然后再取变量的值;
如果++或者–符号在变量之后,就先取变量的值,再对变量进行运算

算数运算符的注意问题

在这里插入图片描述
在这里插入图片描述

练习1:算术运算符:自加、自减

public class TestSign{
	public static void main(String[]args){
		int i1=10,i2=20;
		int i=i1++;
		System.out.print("i="+i);//i=10
		System.out.println("i1="+i1);//i1=11
		i=++i1;
		System.out.print("i="+i);//i=12
		System.out.println("i1="+i1);//i1=12
		i=i2--;
		System.out.print("i="+i);//i=20
		System.out.println("i2="+i2);//i2=19
		i=--i2;
		System.out.print("i="+i);//i=18
		System.out.println("i2="+i2);//i2=18
	}
}

2.赋值运算符

在这里插入图片描述
在这里插入图片描述
short s = 2
s = s+3;
变量参与运算时候,java程序不知道具体的这个变量在做完运算后会不会查重当前变量的范围,所以会先把变量转换为一个更大长度,这这个例子中,short是一个短整形数据,会转化为int类型
要想运行应改为 **s = (short)(s + 3);**或者 s += 3;
在使用扩展赋值运算符时,变量在参与运算时会把结果强制转换为当前变量的类型

思考题:

int i =1;
i *= 0.1;
System.out.println(i);
i++;
System.out.println(i);
//输出结果为0,1

3.比较运算符

在这里插入图片描述

比较运算符的结果都是boolean型,也就是要么是true,要么是false。
比较运算符“==”不能误写成“=”。

System.out.println(4==5);
System.out.println(4!=5);

输出结果false ,true

4.逻辑运算符

在这里插入图片描述
●逻辑运算符用于连接布尔型表达式,在java中不可以写成3<x<6,应该写成x>3 & x<6。
●“&”和“&&”的区别:
单&时,左边无论真假,右边都进行运算;
双&时,如果左边为真,右边参与运算,如果左边为假,那么右边不参与运算。
●“|”和“||”的区别同理,||表示:当左边为真,右边不参与运算。
●在不需要逻辑运算两边都参与运算的时候,尽量使用&&和||
●异或(^)与或(|)的不同之处是:当左右都为true时,结果为false。
理解:异或,追求的是“异”!

int i = 0;
int k = 1;
System.out.println(++k == 2);
System.out.rint1n(i!=0 & ++k == 2);
System.out.println(k);
//输出false,2
int i = 0;
int k = 1;
System.out.println(++k == 2);
System.out.println(i!=0 && ++k == 2);
System.out.println(k);
//输出false,1

练习2:请写出每题的输出结果

在这里插入图片描述

if(Boolean值){代码}//当其中的Boolean值是true的时候会执行大括号里面的代码,false时不执行大括号里面的代码

5.位运算符

注意:无<<<
在这里插入图片描述

  • 位运算是直接对二进制进行运算

计算机内部表示数的字节单位是定长的,如8位,16位,或32位。所以,位数不够时,高位补零,所说,如图3xx

所示,42转换成二进制以后就是。00101010,也即规范的写法为(42)10=(00101010)

以15位例(负数以-15为例)
15的二进制:00000000 00000000 00000000 00001111
-15的二进制:11111111 11111111 11111111 11110001
计算过程:补码(负数的二进制)=反码+1
反码:11111111 11111111 11111111 11110000
补码(即加1):11111111 11111111 11111111 11110001也就是-15的二进制
正数二进制 > 反码 > 加1(补码)> 负数二进制
负数二进制 > 减1> 反码 > 原码 > 正数二进制

左移

在这里插入图片描述

右移

在这里插入图片描述
右移时,最高位是1就补1,最高位是0就补0
无符号右移,忽略首位是0是1,都直接补0

与&,或|,异或^,反码~

在这里插入图片描述
在这里插入图片描述
&运算:同位&运算时,都是1结果为1,其他情况都是0
|运算,同位|运算时,都是0结果为0,其他情况都为1
运算,异或运算时,都是0或者都是1的时候结果是1,其他的情况都是1
~运算,就是把二进制的同位翻转,也就是1变0,0变1

6.三元运算符(三目运算符)

在这里插入图片描述

int i = -1;
int k = i > 0 ? 1 : 0;
System.out.print1n(k);
//输出0

运算符的优先级

●运算符有不同的优先级,所谓优先级就是表达式运算中的运算顺序。如右表,上一行运算符总优先于下一行。
●只有单目运算符、三元运算符赋值运算符是从右向左运算的。
在这里插入图片描述
————————————————
结合性
所有的数学运算符都认为是从左到右运算的,Java 语言中大部分运算符也是从左到右结合的,只有单目运算符、赋值运算符和三目运算符例外,其中,单目运算符、赋值运算符和三目运算符是从右向左结合的,也就是从右向左运算。

乘法和加法是两个可结合的运算,也就是说,这两个运算符左右两边的操作数可以互换位置而不会影响结果。

当有多中运算符参与运算的时候,先要考虑优先级,有相同优先级的就看结合性以决定运算顺序。

因为这样,所以,如果没有两个相同优先级的运算,就不存在考虑结合性的问题了。一个 ?: 是体现不出来结合性的。 请看这个:

a?b:c?d:e
这个要怎么算?先看优先级,两个一样。再看结合性,右结合,所以先算:
c?d:e
再算:

a?b:(c?d:e)
这就是所谓右结合。如果是左结合的话 就是先算:

a?b:c
再算:

(a?b:c)?d:e
实际上,一般结合性的问题都可以用括号来解决。
————————————————

原文链接:https://blog.csdn.net/NumberOneStudent/article/details/101343538

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值