A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

1   JRE:JVM+类库   JVM虚拟机
2   JDK:JRE+JAVA的开发工具
3   开发工具:编译工具(javac.exe) 打包工具(jar.exe)等
4  java 程序运行流程
.Java文件源代码文件……通过编译器编译……生成  .class字节码文件…….通过解释器解释执行
  5   System.out.println("HelloWorld")       输出语句双引号内是字符串,
  6    控制台写过的命令可用上下箭头重复执行
7*一般不是{}结尾的加  分号;
8关键字全部为小写
9   整数默认'int'类型   浮点数默认'double'
10file:///C:/Users/ADMINI~1/AppData/Local/Temp/msohtmlclip1/01/clip_image002.jpg
11 给 包,类,方法,变量等起名字
           命名原则:见名知意
a包  最好是域名倒过来,要求所有的字母小写
b类或者接口         如果是一个单词首字母大写   如果是多个单词每个单词首字母大写(驼峰标识)
c方法或者变量
        如果是一个单词全部小写
        如果是多个单词,从第二个单词首字母大写
d常量
        如果是一个单词,所有字母大写
        如果是多个单词,所有的单词大写,用下划线区分每个单词
12注意:
              整数默认是int类型,定义long类型的数据时,要在数据后面加L。
                 浮点数默认是double类型,定义float类型的数据时,要在数据后面加F。
13变量定义的注意事项
•      变量未赋值,不能直接使用
–     引出变量的第二种使用格式
•      变量只在它所属的范围内有效。
–     变量在哪对大括号内,变量就属于哪对大括号
•      一行上可以定义多个变量,但是不建议
14隐式转换   
•      byte,short,char-- int -- long -- float -- double
15强制转换的格式
•      byte  b = (byte)(a + b);
•      强制转换:目标类型 变量名 = (目标类型) (被转换的数据);
•       不建议强制转换,因为会有精度的损失。
16   而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示
17   赋值只在大括号内有效
18  字符串的数据类型是 String      数组的数据类型    元素类型+[]    int[]
      Public static  int[] getIntArr(){
           int[] arr={1,2,1,2,1,2};
             return arr;
}
19无论是内存还是硬盘,计算机存储设备的最小信息单元“位(bit)”,我们又称之为“比特位”,通常用小写的字母b表示。
而计算机最小的存储单元叫“字节(byte)”,通常用大写字母B表示,字节是由连续的8个位组成。
·        20   font: [fɒnt], 字体    basic: [ˈbeɪsɪk], 基本的         text: [tekst], 文本      edit: [ˈedɪt], 编辑
·               format: [ˈfɔ:mæt], 格式化           flag: [flæg], 标志
§   
§          String next(): [nekst], 获取键盘录入的字符串, 当获取到有效字符串后结束
§          String nextLine(): [nekst][laɪn],获取键盘录入的字符串, 以换行符结束
§           int nextInt(): [nekst][ɪnt], 获取键盘录入的整型数值
21     字符串进行运算,实际为用字符对应的数值运算,
(  ‘a’       97)       (‘A’        65)        (‘0’         48)
  而字符串进行运算是 字符串的拼接,  尤其输出数组时用
字符串中  \为转义符 ,"\....."中斜杆会把和后面的组合起来,      所以字符串中,要用两个\表示一个,   即\\来表示\
int a=10;   
int   b=20;
syso(“hello”+a+b) ;      ……………输出hello1020   从左到右 字符串+数值=字符串      
syso(a+b+ “hello”);     ………………输出30hello
22      a++ 表示先运算,后自增1
           ++a 则相反,表示县自增1,再参与运算
23    关系运算符包含以下内容:
==,!=,>,>=,<,<=
关系运算符的结果都是boolean型,也就是要么是true,要么是false。
24       'A' ==65  'a'==97  ' 0 '== 48
25      :&&和&的区别?
       a:最终结果一样。
       b:&&具有短路效果。左边是false,右边不执行。
       &是无论左边是false还是true,右边都会执行
     同理  |||;
26       % 取余时  X%Y正负只和X有关
27    键盘录入
      A:导包   import java.util.Scanner;
       B:创建对象    Scanner sc=newScanner(System.in);
      C:接收数据       数据类型   变量名=sc.nextInt();              (sc即对象名)
                                        int x = sc.nextInt();
  创建随机数:
A:      import java.util.Random;
           Random r=new Random();
int x=r.nextInt(10);   ………….[0,10)  不包括10
创建数组
数据类型[] 数组名 = new 数据类型[数组长度];
int[] arr = new int[3];
28 连续输出多个变量时用    加号    接引     双引号空格   即可
System.out.println(Java  +"  "+SQL+"   "+Web);  
30    tring next() ;             获取键盘录入的字符串, 当获取到有效字符串后结束
         StringnextLine();        获取键盘录入的字符串, 以换行符结束
          intnextInt() ;            获取键盘录入的整型数值
String c = (b == 0)?"偶数":"奇数";
29三元运算符:格式
       (关系表达式)?表达式1:表达式2;
       如果条件为true,运算后的结果是表达式1;
       如果条件为false,运算后的结果是表达式2;
比较两个数的大小
int a = 10;
        int b = 20;
        int c = (a > b) ? a : b;……………………………..c=20
比较两个数是否相同
int a = 10;
        int b = 20;
        boolean flag= (a== b) ? true: false;
获取三个数最大值
// 定义三个int类型的变量
        int a = 10;
        int b = 30;
        int c = 20;
        // 先比较两个整数的大值
        int temp =((a > b)? a : b);
        int max =((temp > c)? temp : c);
        System.out.println("max:"+ max);
30System.out.println换行  
      System.out.print  不换行
31  字符串 "qwe   wqwe   df "
32 导包快捷键  ctrl+shift+O
   
33     * for  (初始化语句;    判断条件语句;   控制条件语句)    {循环语句 ;  }          判断条件决定,for是否执行
       * while(判断条件语句) {         循环体语句;   }
*    初始化语句;   while(判断条件语句) {         循环体语句;         控制条件语句;}
1        实现多次猜cun数据.
34  While(ture){循环语句;
while (true){
      System.out.println("请输入你猜的数字");
      int i =sc.nextInt();
      
      if (i>number){
         System.out.println("大了");
      }else if(i<number){
         System.out.println("小了");
         
      }else{
         System.out.println("猜中了");
         break;
      }        
   }
先列错误的情况,最后else正确的  break结束; 键入数据要在while,但在if之外
35  sum=sum+1   累加
for(int x=1; x<=5; x++) {
sum += x;
}
36   计数器    int count=0;要定义在主方法中    if    后边,满足if   条件后,才执行一次
           for (int a=100;a<=999;a++){
           int g=a*a*a;
           int s=a/10%10;
           int b=a/100%10;               
           if(g*g*g+s*s*s+b*b*b==a) {
                 System.out.println(a);
           count++;
           }   
37    do …while  循环格式
      do{    循环体语句;}
38      for循环实现1-5之间数据求和
8   public staticvoid main(String[] args) {
        //定义求和变量,初始化值是0
        int sum =0;
        
        //获取1-5之间的数据,用for循环实现
        for(intx=1; x<=5;x++) {
            //把每一次获取到的数据,累加起来就可以了
            //sum = sum + x;
            /*
             * 第一次:sum= 0 + 1 = 1
             * 第二次:sum= 1 + 2 = 3
             * 第三次:sum= 3 + 3 = 6
             * 第四次:sum= 6 + 4 = 10
             * 第五次:sum= 10 + 5 = 15
             */
            sum += x;
        }
        
//输出求和结果
        System.out.println("sum:"+sum);
    }
}
39 if语句获取两数较大值
int max;
        if(a>b){
            max = a;
        }else {
            max = b;
        }
        //可能做其他的操作    //max+= 100;
        System.out.println("较大的值是:"+max);
40 if语句实现判断学生等级
0-100   优秀
* 80-90   
* 70-80   
* 60-70    及格
* 60以下   不及格
1 键入成绩               2   if语句分情况   (注意错误数据)
41 switch语句的格式
A .   表达式的取值:byte,short,int,char
B.    break表示中断,结束的意思,会结束 switch语句
C.       default语句表示所有情况都不匹配的时候,就执行该处的内容,和if语句的else相似。
switch语句实现根据数字输出对应星期
switch(表达式) {                          (switch(weekday)
*          case值1:
*                 语句体1;
*                 break;
*          case值2:
*                 语句体2;
*                 break;
*          default:     break;
•       for循环语句格式:
•       for(初始化语句;判断条件语句;控制条件语句) {
•                循环体语句;
    }
•      输出10HelloWorld
•       for(int x=1; x<=10; x++) {
•        
•                   System.out.println("HelloWorld");
•      for循环实现获取指定范围数据
•         for(int x=1; x<=5; x++) {
•               System.out.println(x);
•               }
•      for循环实现1-5之间数据求和
A:定义求和变量,初始化值是0
B:获取1-5之间的数据,用for循环实现
C:把每一次获取到的数据,累加起来就可以了
D:输出求和变量即可      int sum  定义在for之外,  sum求和则是等for循环结束后在计算,
int sum = 0;
for(int x=1; x<=5; x++) {
sum += x;
}
System.out.println("sum:"+sum);
•      for循环打印水仙花数
所谓的水仙花数是指一个三位数,其各位数字的立方和等于该数本身
       for(int x=100; x<1000; x++)      循环获取所有三位数100 ~999
          //获取个位,十位,百位
            int ge = x%10;
           int shi = x/10%10;
           int bai = x/10/10%10;
•         while循环语句格式
while(判断条件语句) {
                 循环体语句;
              控制条件语句;
}  
int x=1;
      while(x<=10) {
        System.out.println("HellloWorld");
        x++;
      }
•       dowhile循环语句
初始化语句;
   do {
         循环体语句;
         控制条件语句;
} while((判断条件语句);
public staticvoid main(String[] args) {
       输出10 HelloWorld
      
       for(int x=1; x<=10; x++) {
           System.out.println("HelloWorld");
       }
      
      
       //do...while改写
       int x=1;
       do {
          System.out.println("HelloWorld");
           x++;
       }while(x<=10);
    }
使用区别:控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果你想继续使用,就用while,否则推荐使用for。
•       Break的使用
•         Break  跳出当前(单层)循环
•       for(int x=1; x<=10; x++) {
•             if(x == 3) {
•                break;
•             }
•             System.out.println("HelloWorld");
•          }
•       此时只能打印两个HelloWorld
•       continue  退出本次循环   替换break则回打印9
2 数据类型[]  数组名;    int[] arr; 定义了一个int类型的数组.数组名是arr
  数据类型  数组名[];~~~~~~~~~~~~~不推荐
3 数组长度就是数组中元素个数
•       4 动态初始化
  数据类型[]数组名=new 数据类型[数组长度]
•       静态初始化
数据类型[] 数组名 = new 数据类型[]{元素1,元素2,...};
简化格式:
数据类型[] 数组名 = {元素1,元素2,...};
举例:
int[] arr = new int[]{1,2,3};
简化后:
int[] arr = {1,2,3};
•       数组中索引
   索引是元素在数组中的序号,0开始
int[] arr=new int[3]
最大索引2           (0,1,2)
数组名arr存的是地址值
定义在方法中的变量都是局部变量.mian中的都是
•       两个常见小问题:
A:java.lang.ArrayIndexOutOfBoundsException
数组越界异常
产生的原因:就是你访问了不存在的索引元素。
B:java.lang.NullPointerException
空指针异常
产生的原因:数组已经不指向堆内存的数据了,你还使用数组名去访问元素。
int []arr={11,33,77,22};
   int min=arr[0];
   for(int i=0;i<arr.length;i++){
      
      if(min>arr){
      min=arr;
      }
}
for循环中进行比较,得出数值,最后输出
•       System.out.println(“”);换行
int[][]arr=new int[3][];
不给一维数组是正确的,但必须二维数组
•       一维数组的遍历
for (int i=0;i<arr.length;i++){
System.out.print(arr);
}
•       二维数组的遍历
   for (int i=0;i<arr.length;i++){
      for (int j=0;j<arr.length;j++){
   System.out.print(arr[j]+"    ");
}}
•       计数器,求和等等,要在循环之外定义,如果在循环内,那么每次循环又会被重新定义而出错
public class Test {
public static voidmain(String[] args) {
   int []arr=new int[1000];
   
   int count=0;
   int sum=0;
   for(int i=0;i<=999;i++){
       arr =i;     
        int ge=arr%10;
        int shi=arr/10%10;
        int bai=arr/100%10;
       int x=ge*ge*ge+bai*bai*bai+shi*shi*shi;
         
       if(x==arr &arr>=100){
        System.out.println(arr);
         count++; sum+=arr;
       }      
    }
•      随机数给所有数组元素赋值
数字1-10保存到一个长度为10的一维数组中
定义一个新数组,长度为3,取出原来数组中随机三个元素(不考虑是否重复)
给新数组的元素赋值
求新数组所有元素的和
public static voidmain(String[] args) {
   int []arr=new int[10];
   int []arr2=new int[3];
   for(int i=0;i<10;i++){
          arr =i+1;
   }
       Random r=new Random();
               
        for (int m=0;m<3;m++){  
         
int number =r.nextInt(10);
         arr2 [m]=arr[number];
         
System.out.println("新数组元素为"+arr2[m]);   
        }
   
}
产生一个0~9之间的随机数;  两步
Random r=new Random();
  int x=r.nextInt(10);
二维数组的遍历

// 方式1: for循环遍历获取一维数组, 然后for循环遍历一维数组
int[][] arr = {{1,2,3}, {1,2}};
for (int i = 0; i < arr.length; i++) {
    int[] arr1 = arr;
    for (int j = 0; j <arr1.length; j++) {
        int n= arr1[j];
    }
}

// 方式2: for循环得到二维数组索引i, 然后for循环得到一维数组索引j, 使用二维数组访问元素方式获取元素
int[][] arr = {{1,2,3}, {1,2}};
for (int i = 0; i < arr.length; i++) {
    for (int j = 0; j <arr.length; j++) {
        int n= arr[j];
    }
}
关于return的作用
int count=0;
   for(int i=0;i<arr.length;i++){
      
if(arr==3){
      
count++;
        return i;      
      }
    }
注意和return i; 的区别,执行return就是结束方法,count++就不会执行
count++;
public staticvoid compare(int a,int b)
void   表示没有返回值
只能单独调用  compare(x,y);      return;   用来结束
方法重载overload: 在同一个类中,出现方法名相同的情况 *
* 特点:   方法名相同,参数列表不同.与  返回值类型  无关,和方法体无关
*     参数列表不同是指:
*              参数个数不同;
*              参数对应的数据类型不同;(包括顺序,注意对应两个字 )
*
   public static booleancompare(int a,int b){}
输入double
Int可以自动转化成double类型
方法中已经完成了 输出   所以main函数中就    不需要在次输出
方法名第二个单词开始首字母大写
  public static int getMax(inta, int b, int c) {
定义方法时   返回数组
public static int[] result(int a,int b){
      int sum=a+b;
      int dec=a-b;
      int cheng=a*b;
      int chu=a/b;
      
   int []arr={sum,dec,cheng,chu};
  return arr;
方法 定义格式
*    修饰符 返回值类型 方法名(参数类型 参数名1,参数类型 参数名2...) {
*          方法体;
*          return 返回值;             public static
*    }
赋值调用,推荐方式
Void
没有明确返回值的函数调用:
其实就是void类型方法的调用
只能单独调用
打印1n之间的数据
利用数组遍历
两个明确:
* 返回值类型:void
* 参数列表:int n
把所有的水仙花数打印在控制台
    public static voidprintFlower() {
       for(int x=100; x<1000; x++){
           int ge = x%10;
           int shi = x/10%10;
           int bai = x/10/10%10;
           
           if((ge*ge*ge+shi*shi*shi+bai*bai*bai) == x){
              System.out.println(x);
           }
       }
    }
   
    public static voidmain(String[] args) {
       printFlower();
    }
遍历数组
public staticvoid main(String[] args) {
      
       int[] arr = { 11, 22, 33, 44, 55 };
       // 遍历   
       //[元素1, 元素2,元素3, ...]
       printArray(arr);
    }
   
    public static voidprintArray(int[] arr) {
       System.out.print("[");
       for(int x=0; x<arr.length; x++){
           if(x==arr.length-1){
              System.out.println(arr[x]+"]");
           }else {
              System.out.print(arr[x]+", ");
           }
       }
    }
   
   
不死神兔问题
有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,
*      假如兔子都不死,问第二十个月的兔子对数为多少?
1 1    2  3   5  …..
public staticvoid main(String[] args) {
      //定义数组
      int[] arr = new int[20];
      
      //初始化第一个月和第二个月的兔子对数c
      arr[0] = 1;
      arr[1] = 1;
      
      for(int x=2; x<arr.length;x++) {
        arr[x] = arr[x-2] + arr[x-1];
      }
      
      System.out.println("第二十个月的时候的兔子对数是:"+arr[19]);
   }
数组反转问题
public classTest7 {
    public static voidmain(String[] args) {
       // 定义一个长度为5的数组
       int[] arr = new int[5];
       // 通过键盘录入数据给数组中的元素赋值
       Scanner sc = newScanner(System.in);
       for (int x = 0; x < arr.length;x++) {
           System.out.println("请给出第" + (x + 1) + "个元素");
           arr[x] = sc.nextInt();
       }
      
       System.out.println("反转前的数组元素:");
       printArray(arr);
       // 定义方法将arr数组中的内容反转
       reverse(arr);
      
       System.out.println("反转后的数组元素:");
       //定义方法遍历数组
       printArray(arr);
    }
   
    //遍历数组
    public static voidprintArray(int[] arr) {
       System.out.print("[");
       for(int x=0;x<arr.length;x++){
           if(x == arr.length-1) {
              System.out.println(arr[x]+"]");
           }else {
              System.out.print(arr[x]+", ");
           }
       }
    }
   
    /*
     * 两个明确: 返回值类型:void 参数列表:int[] arr
     */
    public static voidreverse(int[] arr) {
       for(int startIndex=0,endIndex=arr.length-1;startIndex<=endIndex;startIndex++,endIndex--){
           int temp =arr[startIndex];
           arr[startIndex] = arr[endIndex];
           arr[endIndex] = temp;
       }
    }

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马