博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

javaSE

Posted on 2023-03-01 15:10  马里奥--  阅读(11)  评论(0)    收藏  举报

基本语法

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); 最大值是 327672^15 - 1);

Int       最小值是 -2,147,483,648-2^31); 最大值是 2,147,483,6472^31 - 1);

Long   最小值是 -9,223,372,036,854,775,808-2^63),最大值是 9,223,372,036,854,775,8072^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);

}

}