Java语言基础

本文详细介绍了Java编程的基础知识,包括开发环境搭建、变量使用规范、数据类型及转换规则、运算符运用、流程控制结构、数组操作及方法定义等内容。

目录

1.java开发环境

2.变量

命名规则:

常规命名:

3.数据类型

基本数据类型:

        类型间的转换:

        两点规则:

引用数据类型:

4.运算符

        算术:+、-、*、/、%、++、--

        关系:>、<、>=、<=、==、!=

        逻辑:&&、||、!

        赋值:=、+=、-=、*=、/=、%=

5.三种结构(顺序、分支、循环)

        顺序结构:从上往下逐行执行,每句必走

        分支结构:有条件的执行某语句一次,并非每句必走

                if结构:1条路

                if...else结构:2条路

                if...else  if结构:多条路

                switch...case结构:多条路

        循环结构:有条件的执行某语句多次,并非每句必走       

                while结构:先判断后执行,有可能一次都不执行

                do...while结构:先执行后判断,至少执行一次

                for结构:应用率高,与次数相关

                break:跳出循环

                continue:跳出循环体中剩余语句而进入下一次循环

6.数组

        数组复制:

        数组排序:

7.方法:函数、过程

        方法的定义:五要素

        方法的调用:


1.java开发环境

JVM:java虚拟机,加载.class并运行.class

JRE:java运行环境,除了包含JVM以外还包含了运行java程序所必须的环境,

          JRE=JVM+java系统类库

JDK:java开发工具包,除了包含JRE以外还包含了开发java程序所必须的命令工具

          JDK=JRE+编译、运行等命令工具

说明:运行java程序的最小环境为JRE

           开发java程序的最小环境为JDK

2.变量

使用:变量使用之前必须声明并初始化

命名规则:

        只能包含字母、数字、_和$符,不能以数字开头

        不能使用关键字(例如:public、int、static、abstract、interface...... )

        严格区分大小写

        允许中文命名,但不建议

常规命名:

“小驼峰命名法”:变量名、方法名(例如:double score,int firstName  , void showName)

“大驼峰命名法”:类名、接口名(class Person ,  class StudentName ,interface PlayGame)

全小写:项目名、包名(cn.cy.project)

全大写:常量名(static final SING)

3.数据类型

基本数据类型:

        byte:字节型,1个字节 -128~127,包装类Byte

        short:短整型,2个字节,-32768~32767,包装类Short

        int:整数型,4个字节,-2147483648~-2147483648(21亿左右),包装类Integer

                注:整形直接量默认为int类型,但不能超出范围

                       两个整数相除,结果还是整数,小数无条件舍弃(不四舍五入)(例:5/2=2)

        long:长整型,8个字节,-9223372036854775808~9223372036854775807,包装类Long

                注:长整型直接量需在数字后加L或l

                       运算时若有可能溢出,建议在第一个数字后加L(例:100L*3000*1000)

        double:双精度浮点型,8个字节,包装类Double

                注:小数直接量默认为double类型,如表示float,需在数字后加F或f

                       double和float型数据参与运算时,可能会发生舍入误差,精确场合不能使用

        float:单精度浮点型,4个字节,包装类Float

        char:字符型,2个字节,0~65535,包装类Character

                注:采用Unicode编码格式,一个字符对应一个码

                       表现的形式是字符char,但本质上是码int

                        ----ASCII码:'a'--97    'A'--65    '0'--48

                       字符型直接量需放在单引号中,且只能有一个

                       特殊符号需要通过\来转义(例:\n  \t)

        boolean:布尔型,1个字节,只能赋值为true或false,包装类Boolean

注:Byte,Short,Integer,Long,Double, Float的父类是抽象类Number,Number继承Object

        Character ,Boolean直接继承Object

        类型间的转换:

                        数据类型从小到大依次为:byte < short < int < long < float <double 

                                                                                 char < int

        自动/隐式类型转换:小类型到大类型

        强制类型转换:大类型到小类型

                语法:(要转换成为的数据类型)变量  注意:强转有可能溢出或丢失精度

int a = 5;
long b = a; //自动/隐式类型转换
int c = (int)b; //强制类型转换

long d = 5;   //自动类型转换
double e = 5; //自动类型转换

long f = 10000000000L;
int g = (int)f;
System.out.println(g); //1410065408,强转有可能发生溢出
double h = 25.987;
int i = (int)h;
System.out.println(i); //25,强转有可能丢失精度

        两点规则:

                整数直接量可以直接赋值给byte,short,char,但不能超范围

                byte,short,char型数据参与运算时,系统会将其一律先转换为int在运算

byte b1 = 5;
byte b2 = 6;
//byte b3 = b1+b2; //b1+b2时,系统自动将它俩转换为int了,int结果赋给byte,需强转
byte b4 = (byte)(b1+b2);

引用数据类型:

        类(class)String:

        接口(interface):

        数组:

        枚举:

4.运算符

        算术:+、-、*、/、%、++、--

                %:取模/取余,余数为0即为整除

System.out.println(5%2); //1,商2余1
System.out.println(8%2); //0,商4余0----整除
System.out.println(2%8); //2,商0余2

                ++/--:自增1/自减1,可在变量前也可在变量后

                        单独使用时,在前在后都一样

                        被使用时,在前在后不一样

                                a++的值为a---------(a--的值为a)

                                ++a的值为a+1------(--a的值为a-1)

//演示++单独使用
int a=5,b=5;
a++; //相当于a=a+1
++b; //相当于b=b+1
System.out.println(a); //6
System.out.println(b); //6

//演示++被使用
int a=5,b=5;
int c = a++; //简便记法:a++的值为5,所以c就为5
int d = ++b; //简便记法:++b的值为6,所以d就为6
System.out.println(a); //6
System.out.println(b); //6
System.out.println(c); //5
System.out.println(d); //6

//演示--单独使用:
int a=5,b=5;
a--; //相当于a=a-1
--b; //相当于b=b-1
System.out.println(a); //4
System.out.println(b); //4

//演示--被使用:
int a=5,b=5;
int c = a--; //a--的值为5,所以c为5
int d = --b; //--b的值为4,所以d为4
System.out.println(a); //4
System.out.println(b); //4
System.out.println(c); //5
System.out.println(d); //4

        关系:>、<、>=、<=、==、!=

1)>(大于)、<(小于)
  >=(大于或等于)、<=(小于或等于)
  ==(等于)、!=(不等于)
2)关系运算的结果为boolean型,
  关系成立则为true,关系不成立则为false

        逻辑:&&、||、!

                逻辑运算的结果是boolean型

                &&:短路与,两边都为真则为真,见false则false

                第1个条件为false时,则发生短路(后面的不执行)

//演示短路:
boolean b3 = a>b && c++>2;
System.out.println(b3); //false
System.out.println(c);  //5,发生短路了

                ||:短路或,有真则为真,见ture则ture

                第一个条件为true时,则发生短路(后面的不执行)

//演示短路:
boolean b4 = a<b || c++>2;
System.out.println(b4); //true
System.out.println(c);  //5,发生短路了

                !:逻辑非(取反),非真则假,非假则真

        赋值:=、+=、-=、*=、/=、%=

                简单运算符:=

                扩展运算符:+=、-=、*=、/=、%=          注:扩展运算符自带强转功能

int a = 5;
a += 10; //相当于a=(int)(a+10)
System.out.println(a); //15
a *= 2; //相当于a=(int)(a*2)
System.out.println(a); //30
a /= 6; //相当于a=(int)(a/6)
System.out.println(a); //5

//小面试题:
short s = 5;
//s = s+10; //编译错误,需强转,改为s=(short)(s+10);
s += 10; //相当于s=(short)(s+10); 

                字符串连接:+

                        若两边为数字,则做加法运算

                        若两边出现了字符串,则做字符串连接

                        任何类型与字符串连接,结果都会变为字符串型

System.out.println(10+20+""+30); //3030---------String
System.out.println(""+10+20+30); //102030-------String
System.out.println(10+20+30+""); //60-----------String

                条件/三目:?:

                        语法:boolean?数1:数2

                        若boolean为true,则整个表达式的值为?后面的数1

                        若boolean为false,则整个表达式的值为?后面的数2

int a=8,b=5;
int max = a>b?a:b;
System.out.println("max="+max); //max=8

        优先级记忆方法:单目乘除为关系,逻辑三目后赋值

                单目:+,-,++,--,!,~(按位取反)

                乘除:*,/,%,+,-

                为(位):<<(左移),>>(右移)

                关系:> ,<, >=, <=, ==, !=

                逻辑:&& ,||, &, |, ^

                三目:A > B ? X : Y

                赋值:= ,+=, -=, *=, /=, %=, |=, &=, ^=

5.三种结构(顺序、分支、循环)

        顺序结构:从上往下逐行执行,每句必走

        分支结构:有条件的执行某语句一次,并非每句必走

                if结构:1条路

                if...else结构:2条路

                if...else  if结构:多条路

1)if语法:
   if(boolean){
      语句块--------------基于条件执行的语句
   }
2)执行过程:
    判断boolean的值:
       若为true,则执行语句块(整个结束)
       若为false,则直接结束
-------------------------------------------------
1)if...else语法:
   if(boolean){
      语句块1
   }else{
      语句块2
   }
2)执行过程:
    判断boolean的值:
      若为true,则执行语句块1(整个结束)
      若为false,则执行语句块2(整个结束)
3)说明:
    语句块1和语句块2,必走其中之一-------------2选1
--------------------------------------------------
1)if...else if语法:
  if(boolean-1){
    语句块1
  }else if(boolean-2){
    语句块2
  }else if(boolean-3){
    语句块3
  }else{
    语句块4
  }
2)执行过程:
    判断boolean-1,若为true则执行语句块1(结束),若为false则
    再判断boolean-2,若为true则执行语句块2(结束),若为false则
    再判断boolean-3,若为true则执行语句块3(结束),若为false则执行语句块4(结束)
3)说明:
    语句块1/2/3/4,必走其中之一--------多选1

                switch...case结构:多条路

                        优点:效率高、结构清晰

                        缺点:只能对整数判断相等

                        break:跳出switch

                        注:switch可以作用于的数据类型有byte , short , char , int , String , 枚举

        循环结构:有条件的执行某语句多次,并非每句必走       

                循环:反复多次执行一段相同或相似的代码

                循环三要素:循环变量的初始化

                                      循环变量的条件(以循环变量为基础)

                                      循环变量的改变(向着循环的结束变)

            循环变量:在整个循环过程中反复改变的那个数

                while结构:先判断后执行,有可能一次都不执行

1)语法:
  while(boolean){
    语句块/循环体------------反复执行的代码
  }
2)执行过程:
    先判断boolean的值,若为true则执行语句块,
    再判断boolean的值,若为true则再执行语句块,
    再判断boolean的值,若为true则再执行语句块,
    如此反复,直到boolean的值为false时,while循环结束

                do...while结构:先执行后判断,至少执行一次

                建议:当第1要素与第3要素的代码相同时,首选do...while

1)语法:
  do{
    语句块
  }while(boolean);
2)执行过程:
    先执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,再判断boolean的值,若为true则
    再执行语句块,如此反复,直到boolean的值为false时,do...while结束

                for结构:应用率高,与次数相关

1)语法:
  //    1      2       3
  for(要素1 ; 要素2 ; 要素3){
    语句块/循环体---------------反复执行的代码   4
  }
2)执行过程:
    1243243243243243...2

                三种循环结构如何选择:

                        先看循环是否与次数有关:

                            若有关----------------------直接上for

                            若无关,再看要素1与要素3的代码是否相同

                                若相同------------------直接上do...while

                                若不同------------------直接上while

                break:跳出循环

for(int num=1;num<=9;num++){
    if(num==4){ //在某种特定条件下,提前结束循环
        break; //跳出循环
    }
    System.out.println(num+"*9="+num*9);
}

/*  执行过程:
    num=1  1*9=9
    num=2  2*9=18
    num=3  3*9=27
    num=4
*/

                continue:跳出循环体中剩余语句而进入下一次循环

//输出9的乘法表,只要不能被3整除的
for(int num=1;num<=9;num++){
    if(num%3!=0){
        System.out.println(num+"*9="+num*9);
    }
}

//输出9的乘法表,跳过能被3整除的
for(int num=1;num<=9;num++){
    if(num%3==0){
        continue; //跳过循环体中剩余语句而进入下一次循环
    }
    System.out.println(num+"*9="+num*9);
}
  
/*  执行过程:
    num=1  1*9=9
    num=2  2*9=18
    num=3
    num=4  4*9=36
    num=5  5*9=45
    num=6
    num=7  7*9=63
    num=8  8*9=72
    num=9
    num=10 false
*/         

                嵌套循环:循环中套循环,常常多行多列时使用,一般外层控制行,内层控制列

                                  执行规则:外层循环走一次,内存循环走所有次

                                  建议:嵌套的层数越少越好,能用一层就不用两层,能用两层就不用三层

                                  break只跳出当前一层循环

补充:生成随机数:Math.random()----------0.0到0.9999999

                                Random rand=new Random();

                                rand.nextInt();----------0.0到0.9999999

          默认值规则:byte , short , int , long , char ,------------------0

                                float , double-----------------------------------------0.0

                                boolean------------------------------------------------false

6.数组

        是一种数据类型(引用类型)

        相同数据类型元素的集合

        初始化:初始化数组中的元素

        访问:访问的是数组中的元素

                通过(数组名.length)可以获取数组的长度(元素的个数)

                通过下标/索引来访问数组的元素,下标从0开始,最大到(数组的长度-1)

                遍历/迭代:从头到尾挨个走一圈

        数组复制:

System.arraycopy(a,1,b,0,4);
int[] b = Arrays.copyOf(a,6);
  a = Arrays.copyOf(a,a.length+1);

        数组排序:

Arrays.sort(arr); //从小到大的排序

7.方法:函数、过程

        作用:用于封装一段特定的业务逻辑功能

        建议:方法尽可能独立,一个方法只干一件事

        方法可以被反复调用多次

        可以减少代码重复,有利于代码的维护

        何时用:只要是一个独立的的业务功能,就得封装到一个方法中

        方法的定义:五要素

修饰词  返回值类型  方法名(参数列表){
    方法体----具体的业务逻辑功能实现
}

        方法的调用:

return 值;        1)结束方法的执行        2)返回结果给调用方--------用在有返回值的方法中

return;        1)结束方法的执行----------用在无返回值的方法中

补充:break,continue,return的区别:

        break:跳出当前循环

        continue:结束当次循环,进入下次循环

        return:结束方法

-------------------------------------------------------------------------------------------------------------------------(自用)

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值