Javase基础知识(1)

     Javase基础语法

一关键字


Java 赋予了特殊含义的单词... 
       public class static void  if else while do for  break continue switch case return 
       final  new this  private super  extends  abstract interface  implements 
       throw throws try  catch  finally  synchronized  instanceof   ... 



二标识符

类名,方法名,变量名,数组名...
       程序中,自定义的名称.
       规则(必须)
          单词字符  a-z A-Z _ $  0~9          不能以数字开头,不能使用关键字, 不能有空格...
       规范(建议)
          变量名:  xxx  xxxYyy 
          方法名: 同上
          类名:   Xxx XxxYyy
          常量名:  XXX   XXX_YYY
          包名:全小写.



三注解

// 单行
/**/ 多行
/***/文本.



四数据类型(8种)

byte   short   int   long   char  float   double   boolean    

4.1计算机基本的数值单位
          计算机存储数据时存储二进制的 0101,每一个二进制位叫做bit(比特)
          1byte=8bit
          1kb=1024byte


       一个汉字=2个英文字母=2字节
       1字节(Byte)=8字位=8个二进制数
       就是说一个汉字有两个字节,16位;一个字母有一个字节,8位.
          ... 
       程序=数据+指令+文档.
       4.2Java基本数据类型8种 
          1)数值
              整数  
                 byte(8位 1字节) short(16位,2字节) int(32位 4字节) long(64位,8字节) 
              浮点数
                 float(32位  4个字节)  double(64 8个字节)
          2)字符
              ''  char 2个字节, 可以表示中文字符   Unicode 
          3)布尔
              boolean  true false  1个字节   1个字节1为  
       4.3非基本数据类型
          1)数组
              []
          2)对象
              
          3)接口
 



五常量(七种)

整形 、长整形、 浮点数 、 字符 、 布尔 、 null 、 字符串常量

程序中直接出现的固定不变的值.
       整形常量
           默认是int 类型.
          十进制  八进制  十六进制    
       长整形常量
          后缀是L(l)
          syso(100); //32
          syso(100L); //64
       浮点数常量
          默认是double 类型.
          解决内存: 浮点数常量使用float 表示
          syso(3.14f(F));
          默认的double 双精度浮点数使用更为广泛.
       字符常量
          计算机无法直接存储字符,计算机只能存储数字(只能表示数字),计算机科学家 字符进行了数字化的转换 (将每一个字符都进行了数字化的编码)
          每一个字符都有一个编号   a->97 
          码表: ASCII   ISO-8859-1  GBK  Java使用  Unicode(内码)    推荐使用UTF-8  
          程序中  单引号 部分''
          '10' //无效字符 
          '1' '0' 'a'  '中'  有效的
          转义字符:
          '\t' 
          \\ 
          \'
          \"
          \b 退格 
          \r  回到一行的开头
          \n  新起一行
       布尔常量
          true false
       null 常量
          内存没有开辟空间.
          String str=null; 
       字符串常量
          程序中 ""  



六变量

有名字,可以重复的使用,程序中一块有名字的内存  
       1.声明变量
          数据类型  变量名;
       2.初始化变量
          变量名=常量|表达式; 
       3.使用变量
        取值和赋值
          通过变量名,可以去除变量中存储的数据,或者通过变量名让变量存储新的数据.
       4. 注意:
          一次只能存储一个数据.
          局部变量使用前
          方法中(方法体),方法上(形参)如add(a,b);   语句中for while...  因为栈内存
              一定要先初始化.
          成员变量
          类中  堆内存.
               默认的值
       5.变量的有效的取值范围
          byte b=300; // 编译报错.





七运算符

算术  赋值 比较  逻辑  位  移位  三目
1.算术表达式
       % ++ --  / 
2.赋值运算符
       = += -= *= /= %= 
3.比较
       == != > < <= <= 
4.逻辑运算符
       & | ! ^ && || 
5.三元  
   b?x:y


八流程控制语句

1. 判断
          if 
          if else
          if   else if 
2. 选择
          switch(byte|short|int|char|枚举(JDK5.0)|字符串(JDK7.0)){
              case 常量值1:
                 语句
                 break;
              case 常量值2:
                 语句
                 break;
              default:
                 
          }
3.循环
          while(true|false){
              循环体; // 满足条件
          }
          
          do{
              语句
          }while(true|false);
          do while 无论条件是否满足,至少执行一次
          while 必须满足条件才会执行.


          for(初始化表达式;true|false;循环后语句){
              循环体;
          }
          while 和for 的区别
              for 节约内存4个字节(一个整数默认为int int占四个字节即4个Byte)... 
              int i=1;
              while(i<3){
                 i++;
              }
              syso(i);
              for(int j=0;j<3;j++){
                 
              }
              syso(j);
       4.其他流程控制语句
          break
              循环中 结束循环,嵌套:结束当前循环.  
              switch 中.
          continue  
              循环中. 跳出本次,继续下一次.



九函数

一段独立功能的小程序, 可以重复使用(重点)
       1. 语法
          修饰符  返回值类型  函数名(数据类型  形参1,数据类型  形参2){
              方法体;
              return 返回值;
          }
       2.函数需要调用才会执行的.
          函数在栈内存执行. 
          如果一个程序中有多个函数需要运行.   函数存在着调用关系 -> 压栈和弹栈 .
          main 函数入口,最先进入栈最后才出栈.
       3.注意:
          函数和和函数是平级的, 不能嵌套,只能调用.
          void: 当函数没有具体的运算结果, 返回值类型需要一个特殊的标识,就是void .
       4.可变长参数(jdk5的新特性)
          ...   函数使用了数组来接收, 
          public static void test(int... arr){}
          可以接收任意多个相外数据类型的参数, 可以没有,可以一个,可以多个,可以直接传递一个数组.... 
       5.重载
          overload 
          同一个类中, 函数名相同,参数列表不同,和返回值无关 和修饰符也无关.
          方便编写和调用函数.



十数组

是一个容器,可以存储多个相同数据类型的数据.
       1.声明
          数据类型 [] 数组名;  
          int[] arr;   如:int[] arr=new int[3];  int[] arr={3,3,3};
                                int[] arr=new int[]{3,3,3};   
       2.初始化
          开辟空间(堆内存)
          数组名=new 数据类型[数组的长度];
       3.使用数组存储数据
          数组名[角标]=赋值
          取值.   数组名[角标]
       4.特点:
          有角标, 从0开始, 内存地址是连续的. 
          声明好数组时候: 长度固定,元素的类型明确了
       5.异常
          空指针
              int[] arr=null; 
              arr 不再指向有效的数组了.
          角标越界 
              访问了不存在的角标
       6.实际开发:
          int[] arr={1,2,2,3}; // 必须一行完成. 
          arr={2,3,4}; // 错误的
          int[] arr=new int[]{1,2,3,4,5};
          arr=new int[]{5,4,3}; // 正确的.
       7.应用
          1.遍历
              角标,增强for
          2.求和
              取出所有元素,相加
          3.获取最值
          4.反转
          5.排序
              1.自己写(会写一个)
       冒泡排序(从小到大)相邻两个对比(i与i+1对比)
   /* for(int j=0;j<arr.length-1;j++){
          for(int i=1;i<arr.length;i++){
              if(arr[i-1]>arr[i]){
                 int temp=arr[i-1];
                 arr[i-1]=arr[i];
                 arr[i]=temp;
              }
          }
          
       }*/


我把冒泡排序优化了:
public static void main(String[] args) {
       //从小到大排
       int[] num=new int[]{1,3,100,33,22,55,44,4,2,10};
       int x=num.length;
       for(int i=0;i<num.length-1;i++){
          for(int j=1;j<x;j++){
              if(num[j-1]>num[j]){
                 int temp;
                 temp=num[j-1];
                 num[j-1]=num[j];
                 num[j]=temp;
              }
          }
          x--;
       }
       System.out.println(Arrays.toString(num));
   }
       选择排序(从小到大)第一位与所有对比  第二位与所有对比   j与i到i+1,i+2,i+3...对比
       for(int i=0;i<arr.length-1;i++){
          for(int j=i+1;j<arr.length;j++){
              if(arr[i]>arr[j]){
                 int temp=arr[i];
                 arr[i]=arr[j];
                 arr[j]=temp;
              };
              
          }
       }
              2.Arrays.sort();
          6.二分查找
public class BubbleTest
{
        public static int binary(int[] array, int value)
    {
        int low = 0;
        int high = array.length - 1;
        while(low <= high)
        {
            int middle = (low + high) / 2;
            if(value == array[middle])
        {
            return middle;
        }
            if(value > array[middle])
        {
            low = middle + 1;
        }
            if(value < array[middle])
        {
            high = middle - 1;
        }
        }
            return -1;
        }
            public static void main(String[] args)
        {
            int[] a = {1, 2, 3, 4, 5, 6, 7, 8, 9};
            int value = binary(a, 9);
            System.out.println(value);
    }
}
       8.二维数组
          数组中的元素还是一个数组.
          int[][] arr=new int[二维数组长度][小数组的长度];
          遍历: 取出每一个元素
          求和:




猜你喜欢

转载自blog.csdn.net/orecle_littleboy/article/details/78324691