Java的基本语法
1.变量:
在内存中开辟一块空间存储数据的.
- 变量的三要素(三个组成部分):
变量名,变量数据类型,变量值.
(java是一种强类型的语言),变量名采用驼峰式命名法. - 变量数据类型与变量值的类型要一致.
- 变量必须先声明赋值后,才能使用.
- =叫赋值号:将=右边的值赋给左边.
- 变量声明和赋值的语法:
1:直接声明变量的语法 :数据类型 变量名;
eg://声明变量
String name;
2:声明变量的同时赋值: 数据类型 变量名=值;
eg:int age=18;
float height=1.7f;
char sex='女';
float wangHeight=1.8f;
boolean result=height>wangHeight;
double weight=40.5;
long money=1000000000000L;
3:变量赋值的语法:变量名=值;
eg:name="张三";
name="李四";
-
在同一个范围内不能出现相同变量名
(目前来理解在同一main方法不能声明两个相同变量) -
(了解)可以同时声明多个相同变量然后赋值:数据类型 变量名1,变量名2=值,变量名3;
eg:String name1,name2,name3="王五",name4,name5="赵六";
System.out.println("第五个学生姓名:"+name5);
System.out.println("第三个学生姓名:"+name3);
- 常量:一但赋值不可更改.
常量声明和赋值语法:final 数据类型 常量名=值;
eg:final char XUE_SEX='男';
//XUE_SEX='女';
- (扩展)变量的分类:
1:按数据类型来分:
基本数据类型的变量:变量的数据类型是byte,short,int,long,
float,double,boolean,char
引用数据类型的变量:变量的数据类型是String,数组,集合,类,接口
2:按变量声明的位置分:
局部变量:在方法中声明的变量.
成员变量:在类中方法外面直接声明的变量.
2.java中常用数据类型
2.1:基本数据类型:
整型:
byte(1个字节),short(2个字节),int(4个字节),long(8个字节) (一般整数默认就是int)
浮点型:
float(4个字节),double(8个字节) (一般小数默认是double)
布尔类型:
boolean(值只能是true/false)
字符类型:
char(1个字符)
2.2:引用数据类型:
字符串(String),数组,集合,类,接口
eg:public static void main(String[] args){
//声明变量
String name;
//给变量赋值,字符串要用""赋值
name="张三";
name="李四";
//在声明变量的同时赋值,整数和小数可以直接给值,char类型要用''给值
int age=18;
float height=1.7f;
char sex='女';
float wangHeight=1.8f;
boolean result=height>wangHeight;
double weight=40.5;
long money=1000000000000L;
//声明常量
final char XUE_SEX='男';
//XUE_SEX='女';
System.out.println("姓名为:"+name);
System.out.println("年龄为:"+age);
System.out.println("性别为:"+sex+",体重为:"+weight);
System.out.println("身高为:"+height);
System.out.println("我比王祥醒高:"+result);
System.out.println(name+"的性别为:"+XUE_SEX);
System.out.println("银行的存款:"+money);
}
2.3:char存储
char存单个字符,但因为在部分字符在对应ASCII码和Unicode码(ASCII编码集和Unicode万国码了解下)
eg://char与ansii码,unicode码使用
char c1='A';
char c2=65;//A对应ansii码
char c3='\u0041';//A对应unicode码
System.out.println("c1="+c1+",c2="+c2+",c3="+c3);
3.转义字符:
所有转义字符必须全定在""中
eg:System.out.println("c1="+c1+",\nc2="+c2+",\tc3="+c3);
4.数据类型转换
4.1:自动类型转换:语法:
目标类型 变量名=原类型的变量
兼容:同种类型
4.1.1:两种类型要兼容.
4.1.2:目标类型大于原类型(小转大)
eg:int num1=11;
//自动类型转换,int->long
//long类型中存的值如果是在int范围内可以不带L,超过int范围是一定要带L
long num2=num1;
System.out.println("num2="+num2);
//自动类型转换
float num3=num1;
double num4=num1;
System.out.println("num4="+num4);
4.2:强制类型转换 语法:
目标类型 变量名=(目标类型)原类型的变量
4.2.1:两种类型要兼容.
4.2.2:目标类型小于原类型(大转小)
eg://强制类型转换
float num5=22.0f;
int num6=(int)num5;
System.out.println("num6="+num6);
//强制类型转换
double num7=6.88;
int num8=(int)num7;
System.out.println("num8="+num8);
float num9=(float)6.18;
System.out.println("num9="+num9);
4.3:int与char之间转换:(原因就ascii码和unicode码)
4.3.1:char转换为int
eg://char从 ascii码编码0-255 ,unicode码/u0000-/uffff(0-65535)内数字或 字符或编码都自动转换为类型
char c1=65535;
char c2='A';
char c3='我';
int num11=c3;
System.out.println("num11="+num11);
4.3.2:在码表范围内int类型转换为char类型,要进行强制类型转换
eg:int num12=65;
char c4=(char)num12;
System.out.println("c4="+c4);
4.4:byte类型int:
当一个数赋值给变量时,超过变量取值范围,就在这个范围内转圈圈
byte b1=11;//11
byte b2=11+11;//22
//byte b3=200;//报错
//当一个数赋值给变量时,超过变量取值范围,就在这个范围内转圈圈
byte b3=(byte)200;//-56=200-(取值范围中数127+128+1)
byte b4=(byte)2000;//-48=2000-(取值范围中数127+128+1)*n
byte b5=(byte)273;//17
5.运算符:
5.1:算术运算符:
** +,-,*,/,%,++,-- **
5.1.1:-,*与数学中用法是一样的,算术运算.
5.1.2:+:如果+左右两边是数字,作算术运算
如果+左右两边有一边是字符串,起连接作用
eg:int num1=11;
//起算术运算
int num2=11+22;
//起连接作用
System.out.println("num2的值为:"+num2);
//第一个+起算术运算,第二个+起连接作用
System.out.println(1+1+"1");//21
//两个+起连接作用
System.out.println("1"+1+1);//111
5.1.3:/:算术运算,在java中 整形数字=整形数字/整形数字;
eg://除法运算
int num3=9/3;//3
int num4=10/3;//3
5.1.4:%(求余/取模):求两个数的余数.
eg://求余运算
int num6=10%3;//1
5.1.5:在算术运算中,有一个数为大类型,则结果为大类型
eg:double num5=10/3.0;
System.out.println("num5="+num5);
//给你一个随机四位数,算出各位数之和.eg: 1234 结果10
int num=3456;
int qianWei=num/1000;
int baiWei=num/100%10;
int shiWei=num/10%10;
int geWei=num%10;
int sum=qianWei+baiWei+shiWei+geWei;
5.1.6:++:自身+1,–:自身-1
如果++在变量的前面,变量先自身加1,再参与运算.
如果++在变量的后面,变量先参与运算,再自身加1.
如果--在变量的前面,变量先自身减1,再参与运算.
如果--在变量的后面,变量先参与运算,再自身减1.
eg:int count1=10;
//int result1=++count1;//11 ->count1=count1+1//11,result1=count1
//int result2=count1--;//11->result2=count1//11,count1=count1- 1//10
//System.out.println("result1="+result1+",result2="+result2);
//System.out.println("count1="+count1);//10
//int result3=(count1--)+(++count1)+count1*count1;//120
//result3=(10)+(++count1)+count1*count1; count1=9
//result3=(10)+(10)+count1*count1; count1=10
int result4=(++count1)+(count1--)+(--count1)*(++count1);//112
//result4=(11)+(count1--)+(--count1)*(++count1); count1=11
//result4=(11)+(11)+(--count1)*(++count1); count1=10
//result4=(11)+(11)+(9)*(++count1); count1=9
//result4=(11)+(11)+(9)*(10); count1=10
System.out.println(result4);
5.2:关系运算符:
表比较,>,>=,<,<=,==(表示相等),!=(表示不相等)
eg:int num1=11;
int num2=13;
boolean result1=num1==num2;
System.out.println("result1="+result1);
boolean f1=true;//对
boolean f2=f1;//对
//boolean f3==f2;//错
boolean f4=f2=f1;//对
//先进行==,再=赋值
boolean f5=f2==f1;//对
5.3:逻辑运算符:
与(&,&&),或(|,||),非(!)
- 与:左右两边的式子为true,结果就为true,如果左右两边有一个式子为false,结果为false.
&:&左右两边的式子无论是true或false,两个式子都会执行.
&&(短路与):&&左边的式子为false,右边的式子不会执行. - 或:左右两边的式子有一个为true,结果就为true,两边都为false,结果才为false
|:|左右两边的式子无论是true或false,两个式子都会执行.
||(短路或):||左边的式子为true,右边的式子不会执行. - 非:取反
eg:int num3=10;
//boolean result2=(++num3)<10&(--num3)<10;//&左右两边都执行num3=10
//boolean result2=(++num3)<10&&(--num3)<10;//&&左边为false,
右边不执行num3=11
//boolean result2=(++num3)<10|(--num3)<10;//|左右两边都执行num3=10
//boolean result2=(++num3)<10||(--num3)<10;//||左边为false,
两边都执行num3=10
boolean result2=(++num3)>10||(--num3)<10;//||左边为true,右边不执行num3=11
System.out.println("num3="+num3);//11
5.4:赋值运算符:=,+=,-=,*=,/=
5.4.1:=:将=右边的值赋值给左边.
5.4.2:+=,-=,*=,/=
将符号左边的数加上或减去或乘或除以右边的数,将结果赋值给左边.
eg://=的使用
int num=23;
//+=的使用
num+=20;//<=>num=num+20
System.out.println("num="+num);
6.三目运算符(三元运算符):
语法 :关系表达式?值1:值2
执行特点:
如果关系表达式结果为true,整个式子结果为值1;
如果关系表达式结果为false,整个式子结果为值2;
eg://三元运算
int result1=1>2?1:2;
System.out.println("result1="+result1);
7.表达式:操作数+运算符.
算术表达式:式子中只有算术运算符和操作数.算术表达式的结果是数值
关系表达式(布尔表达式):只要式子有关系运算符.关系表达式的结果是boolean.
8.控制台输入(从键盘上接收数据):三步
- 第一步:导包import java.util.Scanner;导在类的上面
- 第二步:获得从键盘上接上数据的能力
Scanner input=new Scanner(System.in);
- 第三步:用这个能力得到指定类型的值
接收int类型的值 input.nextInt();
接收double类型的值 input.nextDouble();
接收String类型的值 input.next();
接收Char类型的值 input.next().charAt(0);
注意: 如果接收值与要求数据类型不匹配,会报InputMismatchException
个人笔记,思路,仅供参考