Day4 java的基本语法
1.变量和常量
1.1 变量
1.1.1 解释
计算机内存中一块存储空间,是存储数据的基本单元。
1.1.2 变量三要素
- 数据类型
- 变量名(采用驼峰式命名法)
- 变量值
(java是一种强类型语言,所以要求变量的值与数据类型一定要一致)
1.1.3 变量的声明及赋值
-
前提条件
(1)变量一定要先声明,再赋值,然后才能使用。
(2)=(赋值号):将等于号右边的值赋值给等于号的左边
(3)在同一个范围内(同一个大括号中)不能声明相同的变量名。
-
声明变量的语法: 数据类型 变量名;
//eg:声明变量 String name;
-
给变量赋值的语法:变量名=值;
//eg:给变量赋值 name="督导组";
-
声明变量的同时赋值的语法:数据类型 变量名 =值;
//eg: 声明变量的同时赋值 int age=18; float height=1.85f; double weight=180.0; char sex='男';
-
同时声明多个相同数据类型的变量并赋值:声明了三个变量,只给变量名2赋值。 数据类型 变量名1,变量名2=值2,变量名3;
//eg:声明多个相同数据类型的变量,给部分变量赋值 String name1,name2="孙兴",name3,name4;
1.1.4 变量的分类
-
按数据类型分
(1)基本数据类型的变量:数据的数据类型是基本数据类型;
(2)引用数据类型:变量的数据类型是引用数据类型。
-
按声明位置分
(1)局部变量:在方法中声明的变量叫局部变量,作用范围仅在声明它的大括号中有效;
(2)成员变量:在方法外面声明的变量叫成员变量。
1.2 常量
一旦赋值不可更改
1.2.1 声明语法
final 数据类型 变量名=值;
//eg:声明常量
final double PI=3.1415926;//声明的同时赋值
/*声明后再赋值*/
final double R;
R=2;
2.java中常用的数据类型
2.1 基本数据类型
2.1.1 整数
- byte(1个字节)
- short(2个字节)
- int(4个字节,默认)
- long(8个字节,值后面加L)
//eg:声明变量的同时赋值
byte a=11;
short b=11;
int c=11;
Long d=11L;
2.1.2 浮点型
- float(4字节,值后面加f)
- double(8个字节,默认)
//eg:声明变量的同时赋值
float a=11f;
double b=11;
2.1.3 布尔类型
- boolean(值只能是true/false)
//eg:声明变量的同时赋值
boolean a=false;
boolean b=true;
2.1.4 字符型
- char(存单个字符,2个字节,值要用单引号)
//eg:声明变量的同时赋值
char a ='女';
2.2 引用数据类型
2.2.1 字符串(String)
- 存一个到多个字符,值一定要用双引号。
//eg:声明变量
String name;
//给变量赋值
name = "孙星";
2.2.2 数组,类,接口
2.3 SSCII码和Unicode(万国码)
- char虽然存一个字符,但是由于ASCII和Unicode(万国码)码表对应,部分数字用ASCII码可以转换为单个字符,用Unicode(万国码)转换为单个字符,所以char可以存部分数字(0-65535,为啥是65535因为char的大小是两个字符,2的16次方-1)和万国码
/*eg:本来char只能存一个字符,因为每个字母都有对应的ASCII码表对应,所以char能存数字,前提是这个数字在ASCII码表中对应一个字符*/
char num1=66;
/*本来char只能存一个字符,因为有万国码,每个万国码对应一个字符,所以char类型可以存万国码*/
char num2='\u0041';
- SSCII码和Unicode(万国码)都可以百度搜到,可以自己尝试测试下
2.3 转义字符
- 所有转义字符必须全定在""中
//eg:举例
System.out.println("中"+"\t央\n"+"\\第六督导组\'");
3.数据类型转换
- 注意:兼容的意思是两种类型相同或类似
3.1 自动类型转换 (小转大)
- 两种类型要兼容;
- 目标类型大于原类型.(小转大)
//eg:声明变量的同时赋值,自动类型转换
double num1=11;
long num2=999;
3.2 强制类型转换(大转小)
- 两种类型要兼容
- 目标类型小于原类型(大转小)
//eg:声明变量的同时赋值,自动类型转换
double num3=3.14;
int num4=(int) num3;
float num5=(float)3.333;
3.3 特殊类型
3.3.1 转换超过数据类型范围
- 如果一份变量强制转换为另一个数据类型且强转后的值超过了数据类型的范围,就在这个范围内转圈圈
//eg:下面大转小,输出值-24
byte num6=(byte)1000; //-24
3.3.2 char类型转换
- char类型与int类型本来类型不兼容,但是由于有对应ASCII码表对应,所以能够相互转换
// eg:强制类型转换
int num7=65;
char c7=(char)num7;
//eg:自动类型转换
char c8='a';
int num8=c8;
4.运算符
4.1 算术运算符
4.1.1 -,*(减,乘)算术运算符
- 与数学中用法一样
//-运算符
int a =1,b=2,c=3;
System.out.println(a-b);
//*运算符
System.out.println(a*c);
4.1.2 +(加)算术运算符
- (1)如果+左右两边有一边为字符串类型,起拼接作用
- (2)如果+左右两边都是数字类型,起算术运算作用
//eg:+起算术运算作用
System.out.println(1+1+1);//3
//eg:+起拼接作用
System.out.println("1"+1+1);//111
//eg:第一个+作拼接作用,第二个+作算术运算作用
System.out.println("1"+(1+1)); //12
4.1.3 / (除)算术运算符
- 在java中,整形=整形/整形
//eg:在Java中,整形除以整形结果一定是整形
int num1 = 20;
int num2 = 3;
System.out.println(num1/num2) //6
4.1.4 % 算术运算符
- 两个数相除的到余数,和数学上逻辑相同
//eg:例题:给你一个四位数,求各个位数之和
int num=1234;
int gewei=num%10;
int shiwei=num%100/10;
int baiwei=num%1000/100;
int qianwei=num/1000;
int result=gewei+shiwei+baiwei+qianwei;
System.out.println(result); //1+2+3+4=10
4.1.5 ++,–(加加、减减)算术运算符
-
++运算符:变量自身+1
(1)++变量:变量先自身加1,再参与运算
(2) 变量++:变量先参与运算,再自身加1
-
–运算符:变量自身-1
(1)–变量:变量先自身减1,再参与运算
(2)变量–:变量先参与运算,再自身减1
//eg:示例
int count=10;
int result4=(++count)+(count++)+(count--)*(--count);
// count 11 12 11 10
// result4 11 + 11 + 12 * 10
System.out.println(result4); //142
4.1.6 注意事项
- 在算术计算式中,有一个数为大类型,结果就为大类型。
//eg:示例
double a=2.0;
int b=1;
System.out.println(a/b); // 2.0
4.2 关系运算符
4.2.1 >,<,>=,<= 关系运算符
- 与数学中的用法一样
int a=1,b=2,c=3,d=4;
System.out.println(a>b); //false
System.out.println(d>c); //true
System.out.println(a>=c); //false
System.out.println(b>=d); //false
4.2.2 != (不等于)关系运算符
int a=1,b=2;
System.out.println(a!=b); //true
4.2.3 == (等于)关系运算符
String s1="吴签";
String s2="牙签";
System.out.println(s1 == s2); //false
4.3 逻辑运算符
4.3.1 ! (非)逻辑运算符
- 非true即false,非false即true
4.3.2 |,||(或)逻辑运算符
- 左右两边的式子都为false结果就为false,有一边为true,结果就为true
- |(普通或):左右两边的式子一定会执行完;||(短路或):左边的式子为true,右边的式子不执行;左边的式子为false,右边的式子才会执行。
int count1=10;
int count2=10;
//普通或左右两边的式子都会执行
boolean result1=(++count1)>10|(count1--)>10;
//短路或,左边为true,右边不计算
boolean result2=(++count2)>10||(count2--)>10;
System.out.println("result1="+result1);//true
System.out.println("count="+count1);//10
System.out.println("result2="+result2);//true
System.out.println("count2="+count2);//11
4.3.2 &,&&(且)逻辑运算符
- 左右两边的式子都为true,结果就为true,有一边为false,结果就为false。
- &(普通且): &左右两边的式子一定会执行完;&&(短路且):左边的式子为false,右边的式子不执行,左边的式子为true,右边的式子才会执行。
int count3=10;
int count4=10;
//普通且,左右两边的式子都会执行
boolean result3=(++count3)<10&(count3--)>10;
//短路且,左边为false,右边不计算
boolean result4=(++count4)<10&&(count4--)>10;
System.out.println("result3="+result3);//false
System.out.println("count3="+count3);//10
System.out.println("result4="+result4);//false
System.out.println("count4="+count4);//11
4.4 赋值运算符
4.4.1 = 运算符
- 将等于号右边的值赋值给左边。
4.4.2 +=,-=,*=,/= 运算符
- 将赋值号左边的值加上/减去/乘以/除以右边的值再赋值给左边。
//eg:举例
int num=10;
int a=num+=2;
int b=num-=2;
int c=num*=2;
int d=num/=2;
System.out.println(a);//12
System.out.println(b);//10
System.out.println(c);//20
System.out.println(d);//10
4.5 运算符的优先级
- () > 算术运算符 > 关系运算符 > 逻辑运算符 > 赋值运算符
5. 三目运算符(三元运算符)
5.1 语法
- 关系运算符 ? 值1:值2
5.2 执行流程
- 如果关系表达式的结果为true,三元运算符的结果就等于值1;
- 如果关系表达式的结果为false,三元运算都的结果就等于值2.
//eg:给出三个数得到他们的最大值
int a=1,b=2,c=3;
int max=(a>b?a:b)>(a>c?a:c)?(a>b?a:b):(a>c?a:c);
System.out.println(max);
6.java控制台输入(从键盘上接受数据)
- 三步
6.1 第一步:导包
import java.util.Scanner;
6.2 第二步:获得具有从键盘上接收数据的能力
Scanner input = new Scanner(System.in);
6.3 第三步:接收数据
//接收int类型的数据:
input.nextInt();
//接收double类型的数据
input.nextDouble();
//接收String类型的数据
input.next();
/*接收一个字符的数据(不能从键盘上直接接收char类型的数据,如果想接可以用String类型接收,后者接收一个字符串只要它的第一个字符)*/
input.next().charAt(0);
6.4 实例
//第一步:导包
import java.util.Scanner;
//程序的入口方法
public static void main(String[] args) {
//第二步:获得具有从键盘接收数据的能力
Scanner input = new Scanner(System.in);
System.out.println("输入你的名字");
//第三步:接收键盘上的数据并存在一个变量中
String name = input.next();
System.out.println("输入你的年龄");
//第三步:接收键盘上的数据并存在一个变量中
int age = input.nextInt();
System.out.println("输入你的身高");
//第三步:接收键盘上的数据并存在一个变量中
double height = input.nextDouble();
System.out.println("性别");
//第三步:接收键盘上的数据并存在一个变量中
char num = input.next().charAt(0);
System.out.println("你的姓名是t"+name+"\n年龄"+age+"\t身高"+height+"\t性别"+num);
}