基本语法
1.关键字
就是被java语言赋予了特殊的含义,用做专门用途的字符串(单词)
关键字的特点都是小写的。如:class,public,void,static,if,for,int,byte....
2.保留字
就是没有被java语言赋予特殊的含义,保留起来,以后可能会成为关键字。如:goto...
3.标识符(起名)
凡是可以起名字的地方都是标识符
命名规则:
由26个英文字母大小写,数字:0-9 ,_或 $ 组成
数字不可以开头。
不可以使用关键字和保留字,但能包含关键字和保留字。
Java中严格区分大小写,长度无限制。
标识符不能包含空格!!!!
命名规范:Java中的名称命名规范:
包名:多单词组成时所有字母都小写:xxxyyyzzz
类名接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz
变量名和方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz
常量名:所有字母都大写。多单词时每个单词用下划线连接:XXX_YYY_ZZZ。
4.变量
变量就是申请内存来存储值。(运行内存)也就是说,当创建变量的时候,需要在内存中申请空间。
内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。
内存中的一个存储区域
该区域有自己的名称(变量名)和类型(数据类型)
Java中每个变量必须先声明,后使用
该区域的数据可以在同一类型范围内不断变化
//定义变量的格式 : 数据类型 变量名 = 初始化值;‘ = ’现在叫赋值符号 将右边的值给左边
如:int age = 10; //可以通过变量的名字,访问变量的值
如:System.out.println(age); //变量的值可以在同一类型范围内不断变化
如:age = 5;
举个栗子:变量就像教室一样 数据类型就是它是一个教室用来放学生的,放杂物肯定不行,
变量名就是 几年级几班 说了这班就能找到里面的学生
初始值就是进去的学生 变量 变 教室一直在 但是里面的学生会变 当然也可以不变
变量也可以是个杯子 数据类型就是不同容量的杯子
变量的作用域(作用范围) {}内就像在你们学校 告诉你几年级几班就可以找到 出去学校 他就不知道你是哪个学校的
一对{ }之间有效
如:
{
int i = 10;
System.out.println(i);
}
以下不能访问
{
int i = 10;
}
System.out.println(i);
5.数据类型
1.基本数据类型
整数类型:
byte -128~127 (-2^5~2^5-1)
Short 最小值是 -32768(-2^15); 最大值是 32767(2^15 - 1);
Int 最小值是 -2,147,483,648(-2^31); 最大值是 2,147,483,647(2^31 - 1);
Long 最小值是 -9,223,372,036,854,775,808(-2^63),最大值是 9,223,372,036,854,775,807(2^63 -1);
整数类型最大的
如:
//byte类型的取值范围-128~127
byte b = 12;
//long的值后面需要加l或L,建议使用L
long lo = 12L;
浮点类型(带小数点的):float,double
单精度
float f = 12.3F; //float值后需要加f或F
双精度
double d = 12.34564; //double 类型是基础类型中最大的
float:2^23 = 8388608,一共七位,这意味着最多能有7位有效数字,但绝对能保证的为6位,也即float的精度为6~7位有效数字;
double:2^52 = 4503599627370496,一共16位,同理,double的精度为15~16位。
字符类型:char
存储值是单个字符,必须单引号括起来
char c = 'a';
//也可以使用转义字符
char c = '\n'; // \n:换行 \t:制表符
boolean类型(布尔类型):
取值要么是true,那么是false
如:
boolean b = true;
2.引用数据类型
类 (class),接口(interface),数组( [ ] )
注意:String字符串是属于类的,是引用数据类型
String 变量名 = “内容”; 必须用双引号引起来!!英文符号
6.类型转换
1.自动类型转换
就是容量小的数据类型可以直接给容量大的数据类型
Char -> int -> long -> float -> double
byte -> short -> int -> long -> float -> double
当多种数据类型运算的时候,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
如:
double d = 1 + 1L + 12.3;
注意:当byte,short, char相互计算的时候,它们会先把自己转换为int类型
如:
byte b1 = 12;
byte b2 = 12;
int b3 = b1+b2;
byte a = 1;
short b = 2;
char c = 'a';
int i = a + b + c;
当数字类型和字符串String相(+)的时候,会起连接的作用,结果还是字符串
如: System.out.println("hello"+12); //结果 "hello12"
2.强制类型转换
就是自动类型转换的逆过程。就是把容量大的数据类型给容量小的数据类型,需要使用强制转换符"()"
如:
long lo = 12L;
int i = (int)lo;
注意:可能会造成精度损失
如:
double d = 11.91;
int i = (int)d; //11
(String)字符串不能直接转换为基本类型
boolean类型不可以转换为其它的数据类型
7.运算符
1.算术运算符
+,-,*,/,%,++,--
/:除,2个整数相除,结果还是整数
%:取模(取余数)
如 5 % 2,就是5除以2的余数
++:自增,在原来的值基础上+1
前自增: ++i
先自增,再使用这个值
后自增: i++
先使用这个值,再自增
--:自减,在原来的基础上-1
用法与自增一致
注意:+遇到String就起连接的作用,结果还是String,
如:"hel"+"lo":结果是"hello"
2.赋值运算符
=, +=, -=, *=, /=, %=
如:
int i = 12; //把12赋值为变量i
i+=2; //相当于 i=i+2;
3.关系运算符(比较运算符)
==(等于),!=(不等于),>,>=,<,<=
比较运算符返回的结果都是boolean类型,要么true,要么false
注:==用来判断数值类型,String类型没办法判断,可以使用函数(.equals())来判断两个String类型的内容是否一样
a1.equals("a") 返回的也是boolean类型
4.逻辑运算符
&(与),&&(短路与):and
如果两边都为true,那么结果为true,否则为false
|(或),||(短路或):or
如果有一边为true,那么结果为true,否则为false
!(非):not
如果原来为true,那么结果为false,否则为true
^(异或)
两边不一样为true,否则为false。
&和&&的区别:
对于&,前面为false,还会判断右边的,而&&不会判断右边的
两个&&的时候 ,判断到左边的为假,就不会判断右边了,就会返回假 节省内存
|和||的区别:
对于|,前面是true,还会判断右边的,而||不会判断右边的
两个||的时候 ,判断到左边的为真,就不会判断右边了,就会返回真 节省内存
开发中常使用 &&, ||, !
注意:逻辑运算符返回的都是boolean类型
4.1转义字符( \ )英文状态下回车上方的按键
将没有特殊含义的字符赋予特殊含义,将有特殊含义的字符转化为正常的字符
你可以尝试在输出语句中输出一个单引号或者双引号,
5.三元运算符(三目运算)
格式:
(条件表达式)?表达式1:表达式2;
如果条件为true, 运算后的结果是表达式1;
如果条件为false,运算后的结果是表达式2;
如:
int i = 15; int j = 20; int max = i > j ? i : j ;
1.流程控制
1.选择结构
就是 执行或跳过 特定的语句
1.if
格式1:
if(boolean类型的表达式){
//代码块
}
当boolean类型的表达式为true的执行 代码块。
格式2:
if(boolean类型的表达式){
//代码块1
}else {
//代码块2
}
当boolean类型的表达式为true的时候执行代码块1,否则执行代码块2
格式3:
if(boolean类型的表达式1){
//代码块1
}else if(boolean类型的表达式2){
//代码块2
}else if(boolean类型的表达式3){
//代码块3
}else{
//代码块4
}
当boolean类型的表达式1为true的的时候执行代码块1,
否则boolean类型的表达式2为true的的时候执行代码块2,
否则boolean类型的表达式3为true的的时候执行代码块3,
否则执行代码块4
else if可以有多个,else是可选的。
注意:判断的条件是从上往下判断,注意取值的范围。
if (input_num % 2 == 0) { //判断一个数为奇数还是偶数 System.out.println("偶数"); } else { System.out.println("奇数"); }
2.switch
格式:
switch ( 变量 ) {
case 常量值:
语句;
break; //跳出
case 常量值:
语句;
break;
case 常量值:
语句;
break;
default:
语句;
}
switch(变量)中变量的变量必须是下述几种类型之一:int, byte, char, short, 枚举, 字符串(String);
case子句可以有多个,case中的值必须是常量,且所有case子句中的值应是不同的;
default子句是可选的;当表达式没有对应的case常量时就会执行default后的内容;
break语句用来在执行完一个case分支后使程序跳出switch语句块break是可选的
Switch 和 if 的区别是什么 switch 一般用在具体的值 if 用在选中范围内
public static void main(String[] args) { Scanner input = new Scanner(System.in); //键盘扫描 System.out.println("请输入年"); int nian = input.nextInt(); System.out.println("请输入月"); int yue = input.nextInt(); System.out.println("请输入日"); int ri = input.nextInt(); int sum = 0; switch (yue - 1) { case 11: sum += 30; case 10: sum += 31; case 9: sum += 30; case 8: sum += 31; case 7: sum += 31; case 6: sum += 30; case 5: sum += 31; case 4: sum += 30; case 3: sum += 31; case 2: sum += (nian % 400 == 0 || nian % 4 == 0 && nian % 100 != 0) ? 29 : 28; case 1: sum += 31; } System.out.println("本日是今年的第" + (sum + ri) + "天"); }
2. 循环结构
作用:在循环条件满足的情况下,反复执行特定的代码
1.for循环
格式:
for(初始化部分;循环条件部分;迭代部分){
//循环体部分
}
for执行的流程: *****
初始化部分->循环条件部分->循环体部分->迭代部分->循环条件部分->循环体部分->迭代部分->反复执行循环条件部分,循环体部分,迭代部分,直到循环条件不满足跳出循环
如:
//从1打印到5
for(int i = 1 ;i <= 5 ; i++){
System.out.println(i);
}
注意点:
在for循环中定义的变量,对当前for循环中有效
for(;;){} //没有循环条件,这是无限循环
2.while
格式:
while(循环条件){
//循环体
}
执行流程:判断循环条件,满足条件执行循环体,在判断循环条件,满足执行循环体,反复执行,直到循环条件不满足跳出循环
如:
//从1打印到5
int i = 1;
while(i<=5){
System.out.println(i);
i++;
}
//无限循环
while(true){
Break;
}
3.do..while(了解)
格式:
do{
//循环体
}while(循环条件);
如:
//从1打印到5
int i = 1;
do{
System.out.println(i);
i++
}while(i<=5);
while和do...while的区别:
执行流程不同,do...while是先执行一次循环体,而while是先判断条件
2.break和continue关键字
都可以跳出当前循环语句,后面都不能直接接语句
区别:
break是跳出整个循环,而continue是跳出当前一次循环,继续下一次循环
break可以在循环语句和switch语句中使用,而continue只能在循环语句中使用
在嵌套循环中可以通过给循环加标签名,之后使用break和continue跳出指定标签名的循环
如:
aa:for(int i = 1;i<=3;i++){
System.out.println("i-----"+i);
for(int j=1;j<=5;j++){
if(j == 3){
break aa;
}
System.out.println("j----------"+j);
}
}
浙公网安备 33010602011771号