本帖最后由 小石姐姐 于 2017-12-7 14:59 编辑
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'
10
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=new Scanner(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() ; 获取键盘录入的字符串, 当获取到有效字符串后结束
String nextLine(); 获取键盘录入的字符串, 以换行符结束
int nextInt() ; 获取键盘录入的整型数值
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);
30 System.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 static void main(String[] args) {
//定义求和变量,初始化值是0
int sum = 0;
//获取1-5之间的数据,用for循环实现
for(int x=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(初始化语句;判断条件语句;控制条件语句) {
• 循环体语句;
}
• 输出10次HelloWorld
• 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++;
}
• do…while循环语句
初始化语句;
do {
循环体语句;
控制条件语句;
} while((判断条件语句);
public static void 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 void main(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 void main(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 static void compare(int a,int b)
void 表示没有返回值
只能单独调用 compare(x,y); return; 用来结束
方法重载overload: 在同一个类中,出现方法名相同的情况 *
* 特点: 方法名相同,参数列表不同.与 返回值类型 无关,和方法体无关
* 参数列表不同是指:
* 参数个数不同;
* 参数对应的数据类型不同;(包括顺序,注意对应两个字 )
*
public static boolean compare(int a,int b){}
输入double
Int可以自动转化成double类型
方法中已经完成了 输出 所以main函数中就 不需要在次输出
方法名第二个单词开始首字母大写
public static int getMax(int a, 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类型方法的调用
只能单独调用
打印1到n之间的数据
利用数组遍历
两个明确:
* 返回值类型:void
* 参数列表:int n
把所有的水仙花数打印在控制台
public static void printFlower() {
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 void main(String[] args) {
printFlower();
}
遍历数组
public static void main(String[] args) {
int[] arr = { 11, 22, 33, 44, 55 };
// 遍历
//[元素1, 元素2, 元素3, ...]
printArray(arr);
}
public static void printArray(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 static void 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 class Test7 {
public static void main(String[] args) {
// 定义一个长度为5的数组
int[] arr = new int[5];
// 通过键盘录入数据给数组中的元素赋值
Scanner sc = new Scanner(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 void printArray(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 void reverse(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;
}
}
|
|