基础语法

基础语法

标识符

作用

常量、变量、方法、类、包等的名称

命名规则

  1. 必须以字母,下划线_,美元符号$开头
  2. 大小写敏感,长度不限制
  3. 不可以是java关键字

java基本数据类型

java是一种强类型语言

  • 常量有数据类型
  • 变量必须声明其数据类型

数据类型

数据类型
基本数据类型
引用数据类型
数值型
字符型/char/
布尔型/boolean/
整数类型/byte,short,int,long/
浮点类型/float,double/
类/calss/
接口/interface/
数组
类型占用存储间表数范围
byte1字节-128~127
short2字节-2152<sup>15</sup>-1(-3276832767)
int4字节-231~231-1(约21亿)
long8字节263~263-1
float4字节尾数后七位有效数字
double8字节
字符型2字节
布尔型1位,不是1字节

注意事项

  • 整型常量默认为int型,声明long型常量可以后加‘ l ’或‘ L ‘(建议使用大写,小写容易误认为数字1)
  • 浮点常量默认为double。要变为float,需在后面增加F/f. 如: 3.14F

基本数据类型之间的转换

自动转换(隐形转换):在运算过程中,如果两个值的类型不一致,将会自动将小的类型转化为大的类型

强制转换:在运算过程中,可以手动强制转换,将大的类型转化为小的,实现方式(datatype)

常量和变量

Java变量是程序中最基本的存储单元,其要素包括变量名,变量类型和作用域。

变量在使用前必须对其声明, 只有在变量声明以后,才能为其分配相应长度的存储单元

注意事项

  • 每个变量都有类型,类型可以是基本类型,也可以是引用类型。
  • 变量名必须是合法的标识符。

命名规则

所有变量、方法、类名:见名知意

  • 变量、方法名:
    • 首字母小写和驼峰原则 ageNew monthSalary
  • 常量:
    • 大写字母和下划线 MAX_VALUE
  • 类名:
    • 首字母大写和驼峰原则 Man GoodMan

运算符

算数运算符:+,-,*,/,%,++,–

赋值运算符: =

扩展赋值运算符:+=,-=,*=,/=

关系运算符:>,<,>=,<=,==,!=

逻辑运算符:&&,||,!

位运算符:&,|,^,~ , >>,<<,>>> (了解!!!)

条件运算符:?:

优先级

赋值<三目<逻辑<关系<算数<单目(++,–)

注意事项

  1. /:取商
  2. %:取模,取余数
  3. ++:在变量原有基础上+1,谁在前先运算谁
  4. 关系运算符返回值为布尔类型
  5. &&短路与:两边表达式从左到右进行对比,如果左边表达式为false,则右边不需要判断,两边表达式有一个为false即为false
  6. ||短路或:两边表达式从左到右进行对比,如果左边表达式为true,则右边不需要判断,两边表达式有一个为true即为true
  7. 三目运算符:(3>2 ? 3:2)表达式如果是true,则返回?后的结果;如果是false,则返回:后的结果。

机器数和真值

例如:11010111(机器数) = -87(真值)

第一个1为负数,后面为26+24+22+21+20=87

原码反码补码

原码

原码是指将最高位作为符号位(0表示正,1表示负),其它数字位代表数值本身的绝对值的数字表示方式。

例如:

数字6在计算机中原码表示为 :0000 0110

数字-6在计算机中原码表示为:1000 0110

以上是在8位计算机中的原码表示,如果在32位或16位计算机中,表示方法是一样的,只是多了几个0而已。

原码进行乘除运算时结果正确,而在加减运算的时候会回出现问题

反码

反码表示规则为:如果是正数,则表示方法和原码一样,如果是负数,则保留符号位1,然后将这个数字的原码按照每位取反。

例如:

数字6在计算机中反码就是它的原码:00000110

数字-6在计算机中反码为 :11111001

负数符号位为1,其他位都取反

补码

补码是计算机表示数据的一般方式,其规则为:如果是正数,则表示方法和原码一样,如果是负数,则将数字的反码加上1(相当于将原码数值按位取反然后再加1)

分支结构

  1. 单分之结构:只做单一条件的判断,如果符合,做某些事。

    public class IfDemo{
        public static void main (String[] args){
            //单分之判断,Math.random()产生数据的范围是[0,1)
        int i = (int)(Math.random()*6);
        if(i>3){
        	System.out,println("值大于3");
        }
        System.out.println("number:"+i);
        }    
    }
    
  2. 双分支结构:当做条件判断的时候,只有两种选择

    public class IfDemo{
        public static void main (String[] args){
            int r = 1;
            double PI = 3.14;
            double area = PI*r*r;
            double length = 2*PI*r;
            if(area >= length){
                System.out.println("面积大于等于周长");
            }else{
                System.out.println("周长大于面积");        }
        }
            
    }
    

    案例-会员信息录入

    ​ 要求:录入会员信息,判断录入会员号是否合法

    import java.util.Scanner;
    public class AddCust{
        public static void main(String[] args){
            System.out,println("欢迎光临");
            System.out,print("请添加客户信息")//创建Scanner对象
            Scanner sc = new Scanner(System.in);
            System.outprintln("请输入会员号码<4位整数>");
            Sting number = sc.nextLine();
            System.out.println("请输入会员生日<日/月>");
            Sting birthday = sc.nextLine();
            System.out.println("请输入会员积分");
            Sting score = sc.nextLine();
            
            if(number.length()==4){
                System.out.println("会员信息如下")//\t为制表符
                System.out,println(number+"\t"+birthday+"\t"+score);     
            }else{
                System.out.println("会员号码输入错误,请输入四位整数")
            }
       }
    }
    
  3. 多分支:可以进行多个条件的判断,每个匹配项可以选择不同

    案例:年龄分类

    int age = (int)(Math.random()*100);
    if(age<10){
        System.out,println("儿童")}else if(age<20){
        System.out,println("少年")}else{
        System.out.println("成年人")
    }
    

    4.嵌套分支结构

    案例:学校举行运动会,百米赛跑跑入20秒内的学生有资格进决赛,根据性别分别进入男子组和女子组

    int time =(int)(Math.random()*40);
    if (time<20){
        System.out.println("恭喜进入决赛");
        String sex = ((int)(Math.random()*2))==0?"girl":"boy";  
        if(sex = "girl"){
            System.out.println("欢迎进入女子组");
        }else{
            System.out.println("欢迎进入男子组");
        }    
    }else{
        System.out.println("成绩太差,淘汰");
    }
    

    5.switch多分支结构

    1.每个case模块中要添加break,防止多次匹配

    2.如果多个case中处理的逻辑代码功能一致,可以考虑只在最后添加一次处理

    3.default表示默认选项,当所有的case不匹配时,会执行此选项

    4.default可以有,也可以没有

    案例 : 判断元音辅音

    int random = (int)(Math.random()*26);
    char ch = (char)('a'+random);
    swith(ch){
        case'a':
        case'e':
        case'i':
        case'o':
        case'u':
        System.out.println("元音"+ch);
        break;
        default:
        System.out.println("辅音"+ch);
            
    }
    

循环结构

1.while

需要四部分组成 先进行判断再执行

​ 初始化:变量的初始化

​ 条件判断:必须返回true或者false的值

​ 循环体:具体要执行的逻辑代码

​ 迭代变量:促使此循环结束

public class WhileDemo{
    public static void main(String[] args){
        int i = 1;
        while(i<=100){
            System.out.println("第"i+"次输出");
            i++;
        }
    }
}

案例:求一百以内偶数和

public class WhileDemo{
    public static void main{String[] args}{
        int i = 1;
        int sum = 0;
        while(i<=100){
            if(i % 2 == 0){
                sum+=i;
            }
            i++;
        }
    }
}

2.do-while循环

先执行再判断

public class DoWhileDemo{
    public static void main{Strings[] args}{
        int i = 1;
        do{
             System.out.println("第"+i+"次输出");
             i++;
        }while(i<=100);
    }
}

3.for循环

使用最多,语法规则:

​ for(初始化1;条件表达2;步进器4){

​ 代码逻辑3

}

​ 使用for循环的好处

1.代码简洁

2.变量初始化时,for循环的作用域仅仅是当前for循环结构

​ while循环的作用域是从变量的定义开始到整个方法结束

public class ForDemo{
    public static void main(String[] args){
        for(int i = 1,i<=100;i++){
             System.out.println("第"+i+"次输出");
        }
        //100以内的偶数和
        int sum = 0;
        for(int i = 1;i<=100;i++){
            if(i%2==0){
                sum+=i;
            }
        }
        System.out.println("100以内偶数和是"+sum);
    }
}

案例:用循环实现十进制转为二进制

import java.util.Scanner;
public class TenToTwo{
    public static void main(String[] args){
    	Scanner sc = new Scanner(System.in);
        System.out.println("请输入一个十进制数");
        int number = sc.nextInt();
        String str ="";
        while(number!=0){
            int i = number % 2;
            str = str + i;
            number = number/2;
        }
        System.out.println(str);
    }
}

跳转语句

break(适用于循环结构和switch结构)(break语句终止摸个循环,程序跳到循环块外的下一条语句)

continue(只用于循环结构中)(continue跳出本次循环,进入下一次循环)

return(从当前方法退出,返回到调用该方法语句处,并从该语句的下条语句处继续执行程序)

​ return有两个基本用途: 1.返回方法的返回值 2.终止当前程序

break案例:生成0-100随机数,直至88为止

break:跳出循环,当包含多层循环时,break只能跳出本层循环,无法跳出外层循环。

public static BreakDemo{
    public static void main(Strings[] args){
        int count = 0;
        while(true){
            int i = (int)(Math.random()*101);
            if(i==88){
                break;
            }
            count++;
            System.out.println(count+"--"+i);
        }
 	/*	请打印输出(1,1)(1,2)(1,3)......直到(6,6)停止
 		for(int i = 1;i<10;i++){
 			for(int j =1;j<10;j++){
 				System.out.println("("+i+","+j+")");
 					if(i==6&&j==6){
 						return;//此处不可以用break的
 					}
 			}
 		}
 	*/
    }
}

continue 语句:跳出本次循环

案例:把100~150之间不能被3整除的数输出

public class ContinueDemo{
    public static void main(String[] args){
        for(int i = 100;i<=150;i++){
            if(i%3==0){
                continue;
            }
            System.out,println(i);
        }
    }
}

return案例:

public class ReturnDemo{
    public static void main(String[] args){
        System.out.println(get());
        for(int i = 0;i<10;i++){
            System.out,println(i);
            if(i==5){
                return;
                //System.exit(100);(这个和return都可以。括号内可以填任何数)(很暴力,杀死进程)
            }
        }
    }
    public static int get(){
        return 100;
    }
}

多重循环

案例:输出九九乘法表

public class ManyFor{
    public static void main(String[] args){
        for(int i =1;i<10;i++){
            for(int j=1;j<=i;j++){
                System.out.print(j+"*"+i+"="+i*j+"\t");
            }
            System.out.println();
        }
    }
}

案例:斐波那契数列,1.1.2.3.5.8.13.21.34.55

import java.util.Scanner;
//斐波那契数列可以选择打印多少个值
public class Fibonacci{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入要打印的斐波那契数列的个数")int count =sc.nextInt();
        int x =1;
        int y =1;
        int z =0;
        //前两位是1
        for(int i = 1;i<=count;i++){
            if(i==1||i==2){
                System.out.print(1+"/t");
            }else{ 
                z=x+y;
                x=y;
                y=z;
               	System.out.print(z+"/t"); 
            }
        }
    }
}

案例:百钱买百鸡,公鸡5元,母鸡3元,小鸡3只1元

public class BuyChicken{
    public static void main(String[] args){
        for(int i =0;i<=20;i++){
            for(int j=0;j<=34;j++){
                for(int k =0;k<=300;k++){
                    if(((i+j+k)==100) && (5*i+3*j+k/3)==100)&&(k%3==0)){
                        System.out.println("公鸡:"+i+"\t母鸡:"+j+"\t小鸡:"+k);
                    }
                }
            }
        }
    }
}

递归算法

递归函数:

在程序运行过程中,有时需要调用程序本身,此时可以使用递归

注意:在程序中,能不使用递归就不要使用递归

​ 1.使用递归时会加大资源的消耗

​ 2.如果递归的层次比较深,会造成栈溢出

递归使用:输出摸个磁盘目录下所有文件名称

案例:斐波那契数列,1.1.2.3.5.8.13.21.34.55

public class Fibonacci{
    public static void main(String[] args){
        for(int i = 1;i<=10;i++){
            System.out.print(getNumber(i)+"\t")
        }
    }
    public static int getNumber(int number){
        if(number==1||number==2){
            return 1;
        }else{
            return getNumber(number-1)+getNumber(number-2);
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值