🎊 Java基础知识总结(超详细)持续更新中~

Java基础知识总结(超详细)持续更新中~

IDEA和JDK安装教程

用这个链接下滑找到社区版下载安装就行。在配置IDEA的时候会提示下载JDK可以直接下。

下载 IntelliJ IDEA --- Download IntelliJ IDEA

java格式

修饰词 class 类名{ 程序代码 } 例: public class HelloWorld{ public static void main (String[] args){ System.out.println("这是第一个java程序"); } }

关键字

关键字是被java赋予了特殊含义的英文单词

1.关键字全部小写

class:用于创建或者定义一个类(类是java最基本的组成单元。)也就是java文件名字。

一般的代码编辑器比如IDEA,对关键字有特殊颜色标记。

class关键字后面跟类名。

Java 中的注释有三种:

单行注释(快捷键ctrl+/)

//跟代码或注释

多行注释(快捷键ctrl+shift+/)

/* 代码或注释 */

文档注释

/**@author等等文档注释*/

字面量类型

字面量类型说明举例整数类型不带小数点的数字666,-888小数类型带小数的数字3.14,-5.21字符串类型用双引号括起来的类容“hello,world”,“你好,世界”字符类型用单引号括起来的类容,只能有一个字‘A’,‘S’,‘D’,‘我’布尔类型布尔值,表示真假只有两个值:true,false空类型一个特殊的值,空值值是:null

实例:

public class text {

public static void main(String[] args) {

//打印输出数字类型

System.out.println(666);

System.out.println(-777);

System.out.println(3.14);

System.out.println(-5.21);

//打印输出字符串

System.out.println("这是一个java程序");

//打印输出字符

System.out.println('男');

System.out.println('女');

//布尔

System.out.println(true);

System.out.println(false);

//空类型(null不能打印)只能用字符串打印

System.out.println("null");

}

}

特殊字符

\t;制表符

打印的时候,把前面的字符串补齐到8,或者8的倍数。最少补一个空格,最多八个。

有些环境将制表位设为 4 个字符,有些设为 8 个,解决办法就是多加一个\t

有什么用呢?

可以在打印的时候对齐字符。就像表格类容一样,每列都可以做到对齐增加观感。

public class text {

public static void main(String[] args) {

//这种就会后面补5个空格

System.out.println("abc\t");

//这种就会每列都对其更好的观看数据

System.out.println("name\tage");

System.out.println("xiao\t23");

}

}

变量

什么是变量?

变量是在程序执行过程中,他的值可能发生改变的量或者说是数据

变量的使用场景:

当某个数据经常发生改变时,就可以用变量存储。当数据发生变化时,只需要修改变量记录的值就行。

就像登录界面一样,一个变量存储用户名,一个变量存储密码,这些每个人的信息都不一样所以这些数据是会变的,这就叫变量。

变量的定义格式:

数据类型 变量名 = 数据值;

数据类型见下面的表:就是给数据进行(限制)。小数,或者整数等等

变量名就是你给这个空间(小箱子)取的名字。

数据值就是存在空间(小箱子)的数值。

一条语句可以定义多个变量。但是变量使用前一定要赋值。

特别注意:变量名不能重复,但是可以修改变量的值,只能存一个值。

1.基本用法

public class text {

public static void main(String[] args) {

//定义一个a为整数 赋值为10,然后就可以直接输出a这个变量了,也就是10。

int a = 10;

System.out.println(a);//10

}

}

2.也可以把变量进行运算

public class text {

public static void main(String[] args) {

int a = 10;

int b = 20;

System.out.println(a+b);//30

}

}

3.修改变量记录的值

public class text {

public static void main(String[] args) {

int a = 10;

int b = 20;

System.out.println(a+b); //30

//直接给a赋值就可改变原来的值

a = 50

System.out.println(a+b); //70

}

}

4.一条语句定义多个变量

public class text {

public static void main(String[] args) {

int a = 10,b = 20,c = 30;

System.out.println(a); //10

System.out.println(b); //20

System.out.println(c); //30

}

}

Java 基本数据类型

一般使用int,double。

数据类型关键字解释取值范围举例说明整数byte位-128~127byte b = 10;short短整型-32768~32767short s = 10:int整数-2的十次方~2的十次方int i = 10;long长整型-2的十九次方~2的十九次方long l = 10l;浮点数float单精度小数float f = 10.0f;double双精度更多更大的小数double d = 10.0;字符char字符0-65535char c = 'c';布尔boolean布尔true,falseboolean b = true;

变量练习——计算公交车人数

1.一开始没有乘客

2.在第一个站上去了一位乘客

3.在第二站上去两位乘客,下来了一位乘客

4.在第三站上去两位乘客,下来了一位乘客

5.在第四站下来了一位乘客

6.在第五站上去了一位乘客

到终点站车上还有几位乘客?

public class text {

public static void main(String[] args) {

int count = 0;

//在原有的基础上加一

count = count + 1;

//第二站

count = count + 2 - 1;

count = count + 2 - 1;

count = count - 1;

count = count +1;

System.out.println(count);//3

}

}

数据类型代码演示

public class text {

public static void main(String[] args) {

byte b = 10;

System.out.println(b); //10

short s = 20;

System.out.println(s);//20

int i = 30;

System.out.println(i);//30

//long类型的数值后面要加l为后缀,不区分大小写,建议大写好区分。

long n = 99999999L;

System.out.println(n);

//和long类似后缀加个f。

float f = 3.1415f;

System.out.println(f);

double d = 3.1415926535;

System.out.println(d);

char c = '中';

System.out.println(c);

boolean o = true;

System.out.println(o);

}

}

数据类型练习——输出曼波信息

public class text2 {

public static void main(String[] args) {

//定义变量记录姓名

String name = "曼波";

int age = 18;

char gender = '女';

double height = 180.1;

boolean flag = true;

System.out.println("姓名:"+name);

System.out.println("年龄:"+age);

System.out.println("性别:"+gender);

System.out.println("身高:"+height);

System.out.println("是否存在:"+flag);

}

}

标识符

标识符命名规则——硬性要求

由数字、字母、下划线和美元$构成。不能以数字开头、不能是关键字、区分大小写(关键字可以大写)。

小驼峰命名:方法、变量第一个单词小写后面的单词首字母大写。

大驼峰命名方法:类名,每个单词首字母大写。

键盘输入

介绍:java帮我们写了一个类叫Scanner,这个类可以接收键盘输入的数字。

使用步骤:导包—创建对象—接收数据

导包:import java.util.Scanner;(必须在类定义的前面)

创建对象:Scanner scanner = new Scanner(System.in);(scanner是变量名,可以自己命名)

接收数据:int i = scanner.nextInt();(i 是变量名,其他不能变)

//导包,找到这个类在哪

import java.util.Scanner;

public class text2 {

public static void main(String[] args) {

//创建对象,表示我要用Scanner这个类

Scanner scanner = new Scanner(System.in);

//接受数据,变量i记录了键盘输入的数据

int i = scanner.nextInt();

System.out.println(i);//输入什么就会输出什么

}

}

运算符和表达式

运算符:对字面量或者变量进行操作的符号

表达式:用运算符把字面量或者变量进行连接起来,符合java语法的式子就是表达式。不同运算符连接的表达式体现不同的表达式。

算数运算符:+、—、*、/、%(取余)。不认识的可以参考一年级数学。

public class text2 {

public static void main(String[] args) {

System.out.println(3 + 2);

System.out.println(5 - 3);

System.out.println(5 * 6);

//除法,取余实际上都是除法运算,只是取余得到的是余数。

System.out.println(9 / 3); //3

System.out.println(10 % 2); //0

System.out.println(10 % 3); //1

}

}

运算符

算术运算符

加法(+)三种情况。

数字相加,字符串相加,字符相加。

数字进行运算时,数据类型如果不一样不能运算,需要转成一样的才可以运算。(是自动转换的)

转换的种类:隐式转换(取值范围小转大),强制转换(取值范围大转小)。

byte和short和char三种类型在进行运算时会直接提升为int类型进行运算。

取值范围从小到大:

byte

强制转换:目标数据类型 变量名 = (目标数据类型)被强制转换的数据。

public class text2 {

public static void main(String[] args) {

byte a = 30;

byte b = 20;

byte c = (byte)(a + b);

System.out.println(c);

}

}

字符串相加

当代码中有字符串时,这个+就表示字符串连接符,会把前后的字进行拼接,后面的字符不管是不是数字。

连续 + 时会从左到右逐个相加。(如果前面是数字会先进行运算再和字符串相加)

例:

import java.util.Scanner;

public class text2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个三位数:");

int num = sc.nextInt();

int ge = num % 10;

int shi = num /10 % 10;

int bai = num / 100 % 10;

System.out.println("个位是:"+ge);

System.out.println("十位是:"+shi);

System.out.println("百位是:"+bai);

}

}

字符相加

当字符和字符,字符和数字相加时。会把字符通过ASCII码表上面对应的数字进行运算。(可以用它来做不同类型的字符进行比大小)

自增自减运算符

基本用法

++:加、变量的值加一

--:减、变量的值减一

注意:++ 和 -- 既可以放在变量的前面也可以放在变量的后面。

public class text2 {

public static void main(String[] args) {

int a = 10;

a++;

System.out.println(a); //11

++a;

System.out.println(a); //12

a--;

System.out.println(a); //11

--a;

System.out.println(a); //10

}

}

public class text2 {

public static void main(String[] args) {

int x = 10;

int y = x++;//先用后加,y=10

int z = ++x;//先加后用,x+1+1=12,z=12

System.out.println("x:"+x); //12

System.out.println("y:"+y); //10

System.out.println("z:"+z); //12

}

}

赋值运算符

分类

符号作用说明=赋值int a = 10,将10赋值给变量a+=加后赋值a+=b,将a+b的值赋给a-=减后赋值a-=b,将a-b的值赋给a*=乘后赋值a*=b,将axb的值赋给a/=除后赋值a/=b,将a÷b的值赋给a%=取余后赋值a%=b,将a÷b的余数赋给a

注意:低层都隐藏了一个强制转换。可以把数据类型强制转换。

public class text2 {

public static void main(String[] args) {

int a = 10;

int b = 20;

a += b;//等同于a = a + b

System.out.println(a);//30

System.out.println(b);//20

}

}

关系运算符

关系运算符和比较运算符的分类

符号说明==a==b,判断a和b的值是否相等,成立为true,不成立为false!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false>a>b,判断a是否大于b,成立为true,不成立为false>=a<=b,判断a是否小于等于b,成立为true,不成立为false

public class text2 {

public static void main(String[] args) {

// 比较两个数是否相等

int a = 5, b = 2;

System.out.println(a==b); // false

// 比较两个字符串是否相等

String a = "hello", b = "hello";

System.out.println(a==b); // true

}

}

逻辑运算符

使用场景:

&用户登录账号和密码

|随便有一个都行

符号作用说明&(shift+7)逻辑与(且)并且,两边都要为真|(shift+ \ )逻辑或或者,两边都为假,才是假^(shift+6)逻辑异或相同为真,不同为假!(shift+1)逻辑非取反,反方向的钟

public class text2 {

public static void main(String[] args) {

System.out.println(true & true);//true

System.out.println(false & false);//false

System.out.println(true & false);//false

System.out.println(false & true);//false

System.out.println(true | true);//true

System.out.println(false | false);//false

System.out.println(true | false);//true

System.out.println(false | true);//true

}

}

短路逻辑运算符

符号作用说明&&短路与结果和&相同,但是有短路效果||短路或结果和|相同,但是有短路效果

当左边的表达式可以确定最终的结果,那么右边的就不会再参与运算。

public class text2 {

public static void main(String[] args) {

System.out.println(true && true);//true

System.out.println(false && false);//false

System.out.println(true && false);//false

System.out.println(false && true);//false

System.out.println(true || true);//true

System.out.println(false || false);//false

System.out.println(true || false);//true

System.out.println(false || true);//true

}

}

逢7过

键盘录入两个整数,如果其中一个为7,最终输出结果为true。如果他们的和为7的倍数,最终结果为true,其他情况都是false。

import java.util.Scanner;

public class text2 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入第一个整数:");

int num1 = sc.nextInt();

System.out.println("请输入第二个整数:");

int num2 = sc.nextInt();

boolean result = num1 == 7 || num2 == 7 || (num1+num2) % 7 == 0;

System.out.println(result);

}

}

三元运算符

需求:定义一个变量记录两个整数的较大值。

格式:关系表达式? 表达式1:表达式2;

举个栗子:求两个数的较大值

public class text2 {

public static void main(String[] args) {

int num1 = 10;

int num2 = 20;

int max= num1 > num2 ? num1 : num2;

System.out.println(max);//20

}

}

Java流程控制语句

顺序结构

这种按顺序执行的语句就叫顺序结构。

public class text2 {

public static void main(String[] args) {

System.out.println("希望是值得等待的东西,虽然渺茫,但却很珍贵。");

System.out.println("世界不止眼前的苟且,还有诗和远方。");

System.out.println("这是最好的时代,这是最坏的时代,我们一无所有我们巍然矗立");

System.out.println("迄今所有人生都大写着失败,但不妨碍我继续向前。");

System.out.println("当你凝视深渊的时候,深渊也在凝视你");

System.out.println("雄鹰不为暴风折翼,狼群不因长夜畏惧");

}

}

分支结构

if判断语句

格式:分三种格式if、if和else、if加else if加else。

和中文意思一样,(if)如果怎么样就执行。(else)否则就执行这个,第三种就是多种判断要用的。

if(关系表达式){

语句体;

}else if(关系表达式){

语句体;

}else if(关系表达式){

语句体;

}else(关系表达式){

语句体;

}

下面用几个练习题来表达一下if语句

1.判断一个数字是奇数还是偶数

public class text2 {

public static void main(String[] args) {

int num = 13;

if (num % 2 == 0) {

System.out.println(num + "是一个偶数");

} else {

System.out.println(num + "是一个奇数");

}

}

}

2.给定一个三角形的三边长度,判断该三角形是“等腰三角形”、“等边三角形”、“不等边三角形”中的哪一个。

import java.util.Scanner;

public class 三角形 {

public static void main(String[] args){

Scanner scanner =new Scanner(System.in);

System.out.println("请分别输入三角形三条边长度:");

double a = scanner.nextDouble();

double b = scanner.nextDouble();

double c = scanner.nextDouble();

if(a == b && b == c)

{

System.out.println("等边三角形");

}

else if(a == b || b == c)

{

System.out.println("等腰三角形");

}

else if((a*a)+(b*b) == (c*c))

{

System.out.println("直角三角形");

}

else

{

System.out.println("不是三角形");

}

}

}

3.给定一个人的体重和身高,使用if语句实现BMI公式的健康判断

import java.util.Scanner;

public class BMI值 {

public static void main(String[] args){

Scanner scanner = new Scanner(System.in);

System.out.print("请输入你的身高(米):");

double shengao = scanner.nextDouble();

System.out.print("请输入你的体重(kg):");

double tizhong = scanner.nextDouble();

double bmi = tizhong / (shengao * shengao);

bmi = Math.round(bmi *10) / 10.0;

String jiankanzuangtai;

if (bmi < 18.5){

jiankanzuangtai= "偏瘦";

} else if (bmi >= 18.5 && bmi<24) {

jiankanzuangtai="正常";

}else if (bmi >= 24 && bmi < 28){

jiankanzuangtai = "超重";

}else {

jiankanzuangtai ="肥胖";

}

System.out.println("您的BMI值为:"+bmi);

System.out.println("根据BMI标准,您的体重处于:"+jiankanzuangtai+"状态");

}

}

switch循环语句

格式

switch(表达式){//表达式:将要匹配的值

case值1://被匹配的值、只能说字面量,不能是变量、

语句体1;//一般写打印输出的语句

break;//中断,结束

case值2://不能重复

语句体2;

break;

···

default://都不匹配时执行和else一样

语句体n+1;

break;

}

/*执行流程:

首先计算表达式的值。在依次和后面的case的值进行比较,如果有对应的值,就会执行相应的语句,在执行过程中,遇到break就会结束。

如果所有的case都不匹配就会执行default里面的语句体,然后结束整个循环语句。*/

写一个程序输入1-7就可以判断星期几

import java.util.Scanner;

public class text {

public static void main(String[] args){

Scanner weekday = new Scanner(System.in);

System.out.print("请输入一个1-7的整数:");

int week = weekday.nextInt();

String day;

switch (week){

case 1:

System.out.print("星期一");

break;

case 2:

System.out.print("星期二");

break;

case 3:

System.out.print("星期三");

break;

case 4:

System.out.print("星期四");

break;

case 5:

System.out.print("星期五");

break;

case 6:

System.out.print("星期六");

break;

case 7:

System.out.print("星期天");

break;

default:

System.out.print("叫你输1-7的整数听不懂吗?");

break;

}

}

}

给定一个1~7范围内的整数,判断该整数对应的是工作日还是休息日

import java.util.Scanner;

public class text {

public static void main(String[] args){

Scanner weekday = new Scanner(System.in);

System.out.print("请输入一个1-7的整数:");

int week = weekday.nextInt();

String day;

switch (week){

case 1:

case 2:

case 3:

case 4:

case 5:

System.out.print("牛马日");

break;

case 6:

case 7:

System.out.print("休息日");

break;

default:

System.out.print("叫你输1-7的整数听不懂吗?");

break;

}

}

}

for循环语句

格式

ctrl+alt+l:可以格式化自动生成空格

for (初始化语句;条件判断语句;条件控制语句){

循环语句体;

}

//这就是打印十次“HelloWorld”

for (int i = 1;i <= 10;i++){

System.out.println("HelloWorld")

}

//执行流程

执行初始化语句

执行条件判断语句,看结果是true还是false,如果是false就结束循环,反之则继续循环。

执行条件控制语句

回到条件判断语句继续执行

求1到5之间的和

public class text3 {

public static void main(String[] args) {

int sum = 0;

//可以用5.for按tab直接生成下面这段

for (int i = 1; i <= 5; i++) {

//System.out.println(i);

sum = sum + i;

}

System.out.println(sum);

}

}

求1-100之间的偶数和

public class text3 {

public static void main(String[] args) {

int sum = 0;

for (int i = 1; i <= 100; i++) {

if (i % 2 == 0) {

sum = sum + i;

}

}

System.out.println(sum);

}

}

键盘录入两个数字表示范围统计这个范围对的数既能被3整除又能被5整除

import java.util.Scanner;

public class text3 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个数字表示范围的开始:");

int start = sc.nextInt();

System.out.println("请输入一个数字表示范围的结束:");

int end = sc.nextInt();

int count = 0;

for (int i = start; i <= end; i++) {

if (i % 3 == 0 && i % 5 == 0) {

count++;

}

}

System.out.println(count);

}

}

while循环

格式

初始化语句;

while (条件判断语句){

循环体语句;

条件控制语句;

}

循环下面的其他语句

//和for循环语句差不多。

打印1-100

public class text3 {

public static void main(String[] args) {

int i = 1;

while (i <= 100) {

System.out.println(i);

i++;

}

}

}

for循环和while的对比

共同点:运行规则一样

区别:for循环结束后,变量不能再次使用。而while的变量还可以继续用。for循环知道循环次数或者范围。while不知道次数和范围。只知道循环的结束条件。

小练习:打印折纸次数

世界最高峰是珠穆朗玛峰(8844.43米=8844430毫米),有一张无限大的纸厚度是0.1毫米,折叠多少次可以到这个高度。

public class text3 {

public static void main(String[] args) {

//定义变量记录山峰高度

double height = 8844430;

//定义变量记录纸的厚度

double paper = 0.1;

//统计折叠次数

int count = 0;

//循环折叠纸张,只要小于山峰就继续折。每折一次就++,不知道循环次数,只知道结束条件用while。

while (paper

paper=paper*2;

count++;

}

//sout可以直接输出打印语句

System.out.println(count);

}

}

回文数

给定一个整数X,如果是一个回文数(从左往右读和从右往左读都是一样的数),打印true,否则就是false.

import java.util.Scanner;

public class text4 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入数字:");

int x = sc.nextInt();

//临时存储x原来的值,后面进行比较

int temp = x;

//记录倒过来的数

int num = 0;

//循环获取右往左的数

while (x != 0) {

int ge = x % 10;

x = x / 10;

//把当前的数记录拼接在最右边

num = num * 10 + ge;

}

System.out.println(num == temp);

}

}

do while循环

初始化语句;

do{

循环体语句;

条件控制语句;

}while(条件判断语句);

高级循环

无限循环

for(;;){

System.out.println("掌握规则,才能打破规则");

}

while(true){

System.out.println("掌握规则,才能打破规则");

}

do{

System.out.println("掌握规则,才能打破规则");

}while(true);

一般用while循环

无限循环下面不能写其他代码,因为根本停不下来!

跳转控制语句

小老虎吃包子,第三个包子是坏的需要跳过

public class text5 {

//main可以直接输入

public static void main(String[] args) {

for (int i = 1; i <= 5; i++) {

if (i == 3) {

//结束本次循环,继续下次循环

continue;

}

System.out.println("宫百万在吃第" + i + "个包子");

}

}

}

小老虎吃三个包子就饱了

public class text5 {

//main可以直接输入

public static void main(String[] args) {

for (int i = 1; i <= 5; i++) {

System.out.println("宫百万在吃第" + i + "个包子");

if (i == 3) {

//结束整个循环

break;

}

}

}

}

练习

逢7过

任意一个数字开始报数,当报的数字是包含7或者7的倍数的时候要说:过。打印1-100满足逢7过的数据

public class text5 {

public static void main(String[] args) {

for (int i = 1; i <= 100; i++) {

if (i % 10 == 7 || i / 10 % 10 == 7 || i % 7 == 0) {

System.out.println("过");

continue;

}

System.out.println(i);

}

}

}

求平方根

键盘录入一个大于2的整数,计算返回x的平方根只保留整数部分。

import java.util.Scanner;

public class text6 {

public static void main(String[] args) {

Scanner sc =new Scanner(System.in);

System.out.println("请输入一个整数:");

int num = sc.nextInt();

//num.fori+tab直接输入

for (int i = 1; i < num; i++) {

if(i*i==num){

System.out.println(i+"就是"+num+"的平方根");

break;

}else if(i*i>num){

System.out.println((i-1)+"就是"+num+"平方根的整数部分");

break;

}

}

}

}

计算整数1~10的和,注意打印效果需要严格符合下面的示例。

打印示例:1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10 = 55

public class example04 {

public static void main(String[] args) {

int i = 0;

int sum = 0;

do {

i++;

if(i==10) { //在i=10的只打印它本身

System.out.print(i);

}else {// 否则就在i打印的后面加个+号

System.out.print(i+"+");

}

sum += i;

} while (i <10);

System.out.print("="+sum);

}

}

求质数

键盘录入一个整数,判断改整数是否为质数。(如果这个数可以被1和他本身整除,则就是质数,否则为合数)例如7可以被1和7整除,但是8可以被1和8整除,也可以被2和4整除那他就是合数。

import java.util.Scanner;

public class text7 {

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

System.out.println("请输入一个正整数:");

int num = sc.nextInt();

boolean flag = true;

for (int i = 2; i < num; i++) {

//i依次表示这个范围的数字,看num是否被i整除就行

if (num % i == 0) {

flag = false;

break;

}

}

//当整个循环结束了,表示这个范围的数都判断完了,才能认为num是一个质数

if (flag) {

System.out.println(num + "是一个质数");

} else {

System.out.println(num + "不是一个质数");

}

}

}

猜数字游戏

程序生成1-100之间的随机数字,使用程序实现猜出这个数字。

首先要获取一个随机数,java帮我们写好了一个类叫Random,可以生成随机数。

使用教程和Scanner一样

Random r = new Random();

int num = r.nextInt(随机数范围);

import java.util.Random;

import java.util.Scanner;

public class text8 {

public static void main(String[] args) {

Random r = new Random();

//包头不包尾,包左不包右,从0开始,到这个数减1结束

// 生成任意范围的数。1.让这个范围的头减一个值,尾巴加1

int num = r.nextInt(100) + 1;//1-100,默认是0-100.

//猜这个数是多少

Scanner sc = new Scanner(System.in);

//保底机制计数

int count = 0;

//循环猜数字

while (true) {

System.out.print("请输入您猜的数字:");

int guestnum = sc.nextInt();

count++;

//保底机制10次就可以猜中

if (count == 10) {

System.out.println("保底成功,猜对了");

break;

}

//判断猜的数字大了还是小了

if (guestnum > num) {

System.out.println("您猜的数字大了哦!请重新猜呢!");

} else if (guestnum < num) {

System.out.println("您猜的数字小了哦!请重新猜呢!");

} else {

System.out.println("恭喜您,猜对了呢!");

break;

}

}

}

}

数组

数组是一种容器,可以同时用来存储同种数据类型的多个值。

存储数据的时候有隐形转换,int类型可以存byte、short、int。double可以存所有数字类型的数。

数组的初始化:在内存中,为数组容器开辟新空间,将数据存入容器的过程

静态初始化:

格式:数据类型[ ] 数组名 = new 数据类型[ ]{元素1,元素2,...元素n};

注意:元素和数据库一样,创建了几个就只能用几个。

int[] array = new int[]{11,12,13};

double[] array2 = new double[]{11.1,12.2,13.3};

//日常使用

int[]array = {11,12,12};

double[] array2 = {11.1,12.2,13.3};

public class text9 {

public static void main(String[] args) {

//存储5个学生的年龄

int[] arr1=new int[]{11,12,13,14,15};

int[] arr2={11,12,13,14,15};

//存储5个学生姓名

String[] arr3=new String[]{"张三","李四","王五","老六","宋七"};

String[] arr4={"张三","李四","王五","老六","宋七"};

//存储学5个学生身高

double[] arr5=new double[]{1.92,1.73,1.85,1.68,1.75};

double[] arr6={1.92,1.73,1.85,1.68,1.75};

}

}

数组的元素访问

格式:数组名[索引];

注意:一旦覆盖后原来的数就不存在了

数组名[索引]=具体数据/变量

arr[0] = 100;

数组遍历

遍历是指取出数据的过程。将数组中的所有类容取出来进行操作。

public class text10 {

public static void main(String[] args) {

int[] arr={1,2,3,4,5};

/* System.out.println(arr[0]);

//Ctrl+D可以直接向下复制

System.out.println(arr[1]);

System.out.println(arr[2]);

System.out.println(arr[3]);

System.out.println(arr[4]);*/

/*for (int i = 0; i < 5; i++) {

System.out.println(arr[i]);

}*/

//关于数组的长度属性,length。调用方式:数组名.length

//System.out.println(arr.length);

//数组名.fori:arr.fori回车/tab

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

}

遍历的数组求和

定义一个数组,存储1,2,3,4,5遍历数组得到每一个元素,求数组里面所有的数据和。

public class text11 {

public static void main(String[] args) {

//定义数组

int[] arr = {1, 2, 3, 4, 5};

//求和变量

int sum = 0;

//遍历得到数组的每一个数据

for (int i = 0; i < arr.length; i++) {

//i表示数组里面的索引,arr[i]依次表示数组里面的数。

sum = sum + arr[i];

}

System.out.println(sum);

}

}

统计个数

定义一个数组,存储1-10,遍历得到每一个元素,统计里面有多少个能被3整除的数字。

public class text11 {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

//arr.fori回车

int count=0;

for (int i = 0; i < arr.length; i++) {

if (arr[i] % 3 == 0) {

count++;

}

}

System.out.println("数组中能被3整除的个数有"+count+"个");

}

}

变化数据

定义一个数组,存储1-10,遍历得到每一个元素,如果是奇数,则将当前的数字扩大两倍,如果是偶数则变成二分之一。

public class text12 {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

for (int i = 0; i < arr.length; i++) {

if (arr[i] % 2 == 0) {

arr[i] = arr[i] / 2;

} else {

arr[i] = arr[i] * 2;

}

}

//遍历数组

//一个循环只做一件事

for (int i = 0; i < arr.length; i++) {

System.out.println(arr[i]);

}

}

}

数组的动态初始化

动态初始化指定数组长度,由系统分配初始值

格式:数据类型[ ] 数组名=new 数据类型[数组长度];

例:int[] arr = new in[3];

练习:定义一个数组,用来存班级中50名学生的姓名,姓名未知,学生报道后才知道。

public class text13 {

public static void main(String[] args) {

//数据类型[] 数组名 = new 数据类型[数组长度];

String[] arr=new String[50];

arr[0]="zhangsan";

arr[1]="lisi";

System.out.println(arr[0]);

System.out.println(arr[1]);

System.out.println(arr[2]);//null

//默认初始化的规律

//整数类型为:0。小数类型为0.0。字符类型为:‘\u0000’ 空格。布尔类型为:false。引用数据类型:null

}

}

数组动态初始化和静态初始化的区别

动态初始化:手动指定数组的长度,由系统分配默认初始化值。

只明确元素个数,不确定数值,用动态初始化。

静态初始化:手动指定数组的元素,系统根据元素个数,计算数组的长度。

明确了要用的数据,就用静态初始化。

数组的常见问题

当访问了数组中不存在的索引,就会发生索引越界的异常。

最小索引是:0,最大索引是:数组的长度减1。

数组的常见操作

1.求最值

已知数组元素为{33,5,23,44,55}求数组中最大的值。打印出来。

public class text14 {

public static void main(String[] args) {

int[] arr = {33, 5, 23, 44, 55};

//暂时认为0索引是最大的

int max = arr[0];

//循环获取每一个元素做比较

//为了提高效率循环开始条件可以写1

for (int i = 1; i < arr.length; i++) {

if (arr[i] > max) {

max = arr[i];

}

}

System.out.println(max);

}

}

2.求和

生成10个1-100的随机数存入数组。求出他们的和,求出他们的平均数,求出有多少个数比平均数小。

import java.util.Random;

public class text15 {

public static void main(String[] args) {

int[] arr = new int[10];

Random r = new Random();

//每循环一次就会生成新的随机数。

for (int i = 0; i < arr.length; i++) {

int num = r.nextInt(100) + 1;

//把生成的的数添加到数组中,数组名[索引] = 数据;

arr[i] = num;

}

int sum = 0;

for (int i = 0; i < arr.length; i++) {

sum = sum + arr[i];

}

System.out.println("数组中所有数据的和是:" + sum);

int avg = sum / arr.length;

System.out.println("数组中的平均数是:" + avg);

int count = 0;

for (int i = 0; i < arr.length; i++) {

if (arr[i] < avg) {

count++;

}

}

System.out.println("数组中有"+count+"个数比平均数小");

}

}

3.交换数据

定义一个数组,存入{1,2,3,4,5}。按要求交换索引对应数据{5,2,3,4,1}。

public class text16 {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5};

/*int temp=arr[0];

arr[0]=arr[4];

arr[4]=temp;

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i]+" ");

}*/

for (int i = 0, j = arr.length - 1; i < j; i++, j--) {

int temp = arr[i];

arr[i] = arr[j];

arr[j] = temp;

}

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i] + " ");

}

}

}

4.打乱数据

定义一个数组,存入1-5,打乱所有数据的顺序。

import java.util.Random;

public class text17 {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5};

Random r = new Random();

for (int i = 0; i < arr.length; i++) {

//随机索引

int randomIndex = r.nextInt(arr.length);

int temp = arr[i];

arr[i]=arr[randomIndex];

arr[randomIndex]=temp;

}

for (int i = 0; i < arr.length; i++) {

System.out.print(arr[i]+" ");

}

}

}

数组的内存图

java内存分配

1.栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行

2.堆:存储对象或者数组,new来创建的,都存储在堆内存

**简单的说就是int[] arr = new int[2];在堆内存里面创建了一个地址用来存储数组,如果打印只arr这个变量就会打印出内存值,如果加上变量索引就可以从堆内存中读取数据,流程是先找到数组——找到对应的内存地址——找到对应的索引。包括修改数组中的值也是先读取堆内存再修改对应索引值,每一个数组互不影响,相互独立,就想像住的房子一样,每个住户都不会互相影响。如果把数组1赋值给数组2那么他们会共用同一个地址。改变数组2的值也会改变结果。**

方法

方法是程序中最小的执行单元。重复的代码,具有独立功能的代码可以抽取到方法中。可以提高代码的复用性,提高代码的可维护性。

方法的格式

要在main的大括号外面定义方法。

public static void 方法名(){

方法体(打包起来的代码);

}

例如:

public static void game(){

几个打印语句;

}

方法的调用

调用格式:方法名(); 【在main里面调用】

public class text18 {

public static void main(String[] args) {

System.out.println("a");

System.out.println("b");

printInfo();//就会打印出abcd

printInfo();//在多打印一个cd

}

public static void printInfo() {

System.out.println("c");

System.out.println("d");

}

}

按照顺序执行,看到方法会先执行方法,不管有几个方法,只要调用了就会执行,直到main方法里面的代码全部执行结束。

带参数的方法定义和调用

格式:方法名(参数1,参数2,...);

getSum(变量1,变量2,...);

注意:方法调用是,参数数量与类型必须与方法定义中小括号里面的变量一一对应,否则会报错。

public class text19 {

public static void main(String[] args) {

getSum(10,20);

}

public static void getSum(int num1,int num2) {

int result = num1+num2;

System.out.println("结果是:"+result);

}

}

形参和实参

形参:形式参数,是指方法定义中的参数。

实参:实际参数,方法调用中的参数。

定义方法小技巧:1.我要干什么?2.我干这个需要什么才可以完成?

public class text20 {

public static void main(String[] args) {

getLength(3.2,4.5);

}

//1.要干什么?求矩形的周长

//2.需要什么?长和宽

public static void getLength(double len,double width){

double result = (len+width)*2;

System.out.println("矩形的周长是:"+result);

}

}

带返回值方法的定义和调用

格式:

public static 返回值类型 方法名(参数){

方法体;

return 返回值;

}

public class text21 {

public static void main(String[] args) {

//直接调用为空

getSum(10,20,30);

//赋值调用

int sum = getSum(10,20,30);

System.out.println(sum);

//输出调用

System.out.println("结果是:"+getSum(10,20,30));

}

public static int getSum(int num1, int num2, int num3) {

int result = num1 + num2 + num3;

return result;//返回给方法调用处

}

}

方法的重载

在同一个类中,定义了多个同名的方法,这些同名的方法具有共同的功能。每个方法具有不同的参数类型或参数个数,这些同名的方法就构成了重载关系。

public class text22 {

public static void main(String[] args) {

compare(10,20);//调用

byte b1 = 10;

byte b2 = 20;

compare(b1,b2);//也可以赋值调用

}

//可以把相同功能的方法起一样的名字,但是参数列表必须不同

//调用的时候更加简单,系统会根据数据类型自己调用方法

public static void compare(byte b1,byte b2) {

System.out.println(b1==b2);

}

public static void compare(short s1,short s2) {

System.out.println(s1==s2);

}

public static void compare(int i1,int i2) {

System.out.println(i1==i2);

}

public static void compare(long n1,long n2) {

System.out.println(n1==n2);

}

}

练习1设计一个方法求数组的最大值,并将最大值返回

public class text23 {

public static void main(String[] args) {

int[] arr = {1, 2, 3, 4, 5};

int max = getMax(arr);

System.out.println(max);

}

public static int getMax(int[] arr) {

int max = arr[0];

for (int i = 1; i < arr.length; i++) {

if (arr[i] > max) {

max = arr[i];

}

}

return max;

}

}

🎯 相关推荐

欢乐球什么时候出 公测上线时间预告
mobile28365正规网址

欢乐球什么时候出 公测上线时间预告

📅 07-17 👀 510
爱咬人的“苏神”【颜强世界杯】
mobile28365正规网址

爱咬人的“苏神”【颜强世界杯】

📅 08-17 👀 1004
赛尔号谱尼攻略:全方位解析获取与挑战策略
mobile28365正规网址

赛尔号谱尼攻略:全方位解析获取与挑战策略

📅 07-16 👀 8408
合成牛排、整切牛排和原切牛排有什么区别?如何辨别?
Batemo 电池资源管理器
beat365老版本

Batemo 电池资源管理器

📅 08-26 👀 1833
微信定位怎么修改到别的地方?简单操作一学就会
mobile28365正规网址

微信定位怎么修改到别的地方?简单操作一学就会

📅 09-26 👀 9861
是网络直播延时(1):起播延时及优化
mobile28365正规网址

是网络直播延时(1):起播延时及优化

📅 07-10 👀 4589
宝马M-宝马M4
365体育ribo88

宝马M-宝马M4

📅 07-10 👀 8767
索立信平板电脑报价
beat365老版本

索立信平板电脑报价

📅 08-05 👀 5286