Java学习笔记(第6天)
//**笔记知识点汇总主要源自B站黑马程序员Java零基础视频教程**//
按Win+R并输入cmd回车打开cmd控制台
常用CMD命令
1.盘符名称+冒号:盘符切换
例:F:回车,即切换至F盘
2.dir:查看当前路径下内容(展示隐藏目录)
例:dir回车,即展开当前路径下内容
3.cd目录:进入单级目录
例:cd .android回车,即进入该目录
4.cd..:退回到上一级目录
例:cd..回车,即退回上级目录
5.cd 目录1\目录2\...:进入多级目录
例:进入E:ODIS\CER
6.cd\:回退到盘符目录
例:cd \回车
7.cls:清屏
例:cls回车
8.exit:退出命令提示符窗口
例:exit回车,即退出cmd命令窗
*9.练习:打开网易云音乐
法一:
法二:
点击高级系统设置、环境变量
双击系统变量中Path并添加路径
注:
(1)为什么要配置环境变量?
在任意目录下可以打开指定软件。
安装好java JDK后
(1)按Win+R并输入cmd回车打开cmd控制台
(2)输入java -version,如果能够成功输出java jdk 的版本,即表明java JDK 环境变量配置完成。
编译程序(入门案例)
public class helloworld
{public static void main(String[] args){System.out.println("Hello World!");}
}
注:
javac工具:把.java文件编译成.class文件
java工具:运行代码
常见高级记事本:Editplus、Notepad++、Sublime...
Notepad++配置
注释
1.单行注释://注释信息
2.多行注释:/*注释信息*/
3.文档注释:/**注释信息*/
关键字
关键字全部小写且高亮显示
class:用于(创建/定义)一个类
类是Java最基本的组成单位
HelloWorld在本段代码中表示类的名字
{}表示类的范畴
public class HelloWorld
{
}
字面量
布尔类型:布尔值,表示真假。只有两个值:true,false
空类型:空值:null
输出语句:System.out.println();
public class ValueDemol{public static void main(String[] args){System.out.println(666);System.out.println(-666);System.out.println(6.66);System.out.println(-6.66);System.out.println(true);System.out.println(false);System.out.println("菜菜不是菜菜");System.out.println('菜');System.out.println("null");
//null不能直接打印,要用字符串的形式进行打印
}
}
\t 制表符:
在打印的时候,把前面字符串的长度补齐到8,或者8的整数倍。最少补1个空格,最多补8个空格。
public class ValueDemol{public static void main(String[] args){System.out.println("name" + '\t' + "age");System.out.println("sue" + '\t' + "18");
}
}
变量
注:只能存一个值;变量名不允许重复定义;一条语句可以定义多个变量;变量在使用之前一定要进行赋值;变量的作用域范围。
public class ValueDemol{public static void main(String[] args){//定义变量//数据类型 变量名 = 数据值//数据类型:限定了变量能存储数据的类型//int(整数) double(小数)//变量名:就是存储空间的名字//作用:方便以后使用//数据值:真正存在变量中的数据//等号:赋值。把右边的数据赋值给左边的变量int a = 10;System.out.println(a);
}
}
public class ValueDemol{public static void main(String[] args){//定义变量int a = 10;System.out.println(a);System.out.println("--------");//变量参与计算int b = 30;int c = 20;System.out.println(b + c);System.out.println("--------");//修改变量记录的值a = 50;System.out.println(a);System.out.println("--------");//一条语句中可定义多个变量int d = 100,e = 200, f = 300;System.out.println(d);System.out.println(e);System.out.println(f);//变量在使用之前必须要赋值,不要把赋值分开写}
}
变量的练习-计算公交车的人数
public class ValueDemol{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);}
}
整数和小数取值范围大小关系:double>float>long>short>byte
long类型变量:需要加入L标识(大小写都可以)
float类型变量:需要加入F标识(大小写都可以)
byte b = 10;
short a = 20;
int c = 30;
long n = 999999L;
float f = 10.1F;
double d = 20.2;
定义变量的三个练习
public class ValueDemol{public static void main(String[] args){//定义变量记录姓名String name = "菜菜不是菜菜";//定义变量记录年龄int age = 10;//定义变量记录性别char gender = '无';//定义变量记录身高double height = 151.2;//定义变量记录是否单身//true单身,false不是单身boolean flag = true;//输出变量的值System.out.println(name);System.out.println(age);System.out.println(gender);System.out.println(height);System.out.println(flag);
}
}
标识符:给类,方法,变量等起的名字。
命名规则--硬性要求
1.由数字、字母、下划线(_)和美元($)组成
2.不能以数字开头
3.不能是关键字
4.区分大小写
命名规则--软性建议
小驼峰命名法:方法、变量
规范1:标识符是一个单词时,全部小写
范例1:name
规范2:标识符由多个单词组成时,第一个单词首字母小写,其他单词首字母大写
范例2:firstName
大驼峰命名法:
规范1:标识符是一个单词时,首字母大写
范例1:Student
规范2:标识符由多个单词组成时,每个单词首字母大写
范例2:GoodStudent
键盘录入
Scanner:可以接收键盘输入数字的类
步骤一:导包-Scanner这个类在哪
import java.util.Scanner;
//导包的动作必须出现在类定义的上边
步骤二:创建对象-表示我要开始用Scanner这个类了
Scanner sc = new Scanner(System.in);
//只有sc是变量名,可以变
步骤三:接收数据
int i = sc.nextInt();
//只有i是变量名,可以变
import java.util.Scanner;
public class ScannerDemol{public static void main(String[] args){Scanner sc = new Scanner(System.in);int i = sc.nextInt();System.out.println(i);
}
}
error:编码 UTF-8 的不可映射字符
解决方案一:添加命令
例 javac -encoding gbk 文件名.java,即可识别中文
键盘录入小练习
import java.util.Scanner;
public class ScannerText{public static void main(String[] args){Scanner sc = new Scanner(System.in);System.out.println("请输入i值");int i = sc.nextInt();System.out.println("请输入y值");int y = sc.nextInt();System.out.println(i + y);
}
}
IDEA项目结构介绍
project(项目)---module(模块)---package(包)---class(类)
(在类里面编写代码)
等待读取完成
新建与打开包
多级包之间用.来隔开
编写代码
IDEA个性化设置
重命名(shift+f6)
%:取模、取余
System.out.println(10 / 3);//3
System.out.println(10.0 / 3);//3.3333333
System.out.println(10 % 2);//0
System.out.println(10 % 3);//1
数值拆分
需求:键盘录入一个三位数,将其拆分为个位、十位、百位后,打印在控制台
package www.demol;
import java.util.Scanner;public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("Please input a three-digit");int number = sc.nextInt();//个位:数值%10int ge = number % 10;//十位:数值/10%10int shi = number / 10 % 10;//百位:数值/100%10int bai = number / 100 % 10;System.out.println(ge);System.out.println(shi);System.out.println(bai);}
}
类型一样的数据才可运算
隐式转换(自动类型提升)
把一个取值范围小的数值,转成取值范围大的数据
隐式转换的两种提升规则
1.取值范围小的,和取值范围大的进行运算,小的会先提升为大的,再进行运算
2.byte short char三种类型的而数据在运算的时候,都会直接先提升为int,然后再进行运算
小byte<<short<<int<<long<<float<<double大
练习
byte b1 = 10;
byte b2 = 20;
result = b1 + b2;
//数据类型 (int)result = (int)b1 + (int)b2;
-------------------------------
int i = 10;
long n = 100L;
double d = 20.0;
result = i + n + d;
//数据类型(double)result = (double)[(long)i + n] + d;
-------------------------------
byte b = 10;
short s = 20;
long n = 100L;
result = b + s + n
//数据类型 (long)result = (long)[(int)b + (int)s] + n;
强制转换
把一个取值范围大的数值赋值给取值范围小的变量
格式:目标数据类型 变量名 = (目标数据类型)被强转的数据;
double a = 12.3;
int b = (int)a;
int a = 300;
byte b = (byte)a;
//数据较大转较小会出错
数据类型
关键字 占用 取值范围
整数 byte 1Byte -128~127
整数 short 2Byte -32768~32767
整数 int 4Byte -231~231-1
整数 long 8Byte -263~263-1
浮点数 float 4Byte -3.402823E+38~-1.401298E-45
1.401298E-45~3.402823E+38
浮点数 double 8Byte -1.797693E+308到-4.9000000E-324
4.9000000E-324到1.797693E+308
字符 char 2Byte 0-65535
布尔 boolean 1Byte true false
算数运算符
字符串的“+”操作
有字符串参与就是拼接,反之相加。
含字符的运算会把字符通过ASCII码表查询到对应的数字再进行计算
“123”+123 》》》》》“123123”
1+99+“年黑马”》》》》》“100年黑马”
System.out.println(1 + 'a');//98
System.out.println('a' + "abc");//"aabc"
练习
package www.demol;
import java.util.Scanner;public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入一个三位数");int number = sc.nextInt();//个位:数值%10int ge = number % 10;//十位:数值/10%10int shi = number / 10 % 10;//百位:数值/100%10int bai = number / 100 % 10;System.out.println("个位是:"+ge);System.out.println("十位是:"+shi);System.out.println("百位是:"+bai);}
}
IDEA编译中文报错
环境
Windows 10
IntelliJ IDEA Community Edition 2022.2
JDK18
步骤
第一步 Settings-File Encodings中将Global和Project的编码都改成Default
第二步 在Help-Edit Custom VM Option中添加 -Dfile.encoding=GBK(让第一步中Default的编码方式固定为GBK)
注:与在源文件bin中的idea64.vmoption中增加-Dfile.encoding=xxx 相比 ,Edit Custom VM Option的优先级更高
第三步 重启IDEA(重启软件后操作生效)
————————————————
版权声明:本解决方案为CSDN博主「AShyyyyyyy」的原创文章,本菜菜遵循CC 4.0 BY-SA版权协议进行转载。
原文链接:https://blog.csdn.net/weixin_45074731/article/details/125681535
自增自减运算符
package www.demol;
public class text111 {public static void main(String[] args) {int x = 10;int y = x++;//先用后加 y=10,x=11int z = ++x;//现加后用 x=12,z=12System.out.println("x:"+x);//12System.out.println("y:"+y);//10System.out.println("z:"+z);//12}
}
赋值运算符
注:拓展的赋值运算符隐含了强制类型转换
关系运算符
例
System.out.println(a == b);
练习(约会)
package www.demol;import java.util.Scanner;
//键入
public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键入System.out.println("请输入自己衣服的时髦度");int myfashion = sc.nextInt();//键入System.out.println("请输入女生衣服的时髦度");int girlfashion = sc.nextInt();//键入boolean result = myfashion >= girlfashion;//布尔System.out.println(result);}
}
逻辑运算符
短路逻辑运算符
注:& |,无论左边true false,右边都要执行
&& ||,如果左边能确定整个表达式的结果,右边不执行
&&左边为false,右边不管是真是假,整个表达式的结果一定是false
||左边为true,右边不管是真是假,整个表达式的结果一定是true
这两种情况下,右边不执行,提高了效率
练习(数字6)
//键盘录入两个整数,如果其中一个为6,最终结果输出true.如果它们的和为6的倍数,最终结果输出true.其它结果为false.
package www.demol;
import java.util.Scanner;
//键入
public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键入System.out.println("请输入一个整数");int number1 = sc.nextInt();//键入System.out.println("请输入第二个整数");int number2 = sc.nextInt();//键入boolean result = number1 ==6 || number2 ==6 || (number2+number1)%6==0;//布尔System.out.println(result);}
}
三元运算符
格式:关系表达式?表达式1:表达式2;
注:三元表达式的结果必须被使用,否则
范例:求两个数的较大值
int max = a>b ? a :b;//把结果赋值给一个变量
System.out.println(a>b ? a :b);//把结果直接打印
练习(两只老虎)
//比较两只老虎的体重
package www.demol;
import java.util.Scanner;
//键入
public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键入System.out.println("请输入第一只老虎的体重");int number1 = sc.nextInt();//键入System.out.println("请输入第二只老虎的体重");int number2 = sc.nextInt();//键入String result = number1 == number2 ?"相同" :"不同";System.out.println(result);}
}
ctrl+alt+l自动格式化代码
运算符优先级
原码、反码、补码
原码(是一种计算机中对数字的二进制定点表示方法。原码表示法在数值前面增加了一位符号位(即最高位为符号位):正数该位为0,负数该位为1(0有两种表示:+0和-0),其余位表示数值的大小。
反码:正数的反码与其原码相同;负数的反码是对其原码逐位取反,但符号位除外
补码:正数的补码与其原码相同;负数的补码是在其反码的末位加1
if语句
一种情况的判断
格式: if(关系表达式){
命令
}
注:如果对一个布尔类型的变量进行判断,不要用==号,直接把变量写在小括号即可
boolean flag = false;
if (flag){............
}
//flag为true时执行
两种情况的判断
格式:if(关系表达式){
语句1;
} else{
语句2;
}
多种情况的判断
格式:if(关系表达式){
语句1;
} else if{
语句2;
}
......
else{
语句n+1;
}
switch语句
格式1:
switch(表达式){
case1: 语句1; break;
case2: 语句2; break;
....
default: 语句n+1; break;
}
注:表达式:(将要匹配的值)取值为byte、short、int、char
JDK5以后可以是枚举,JDK7以后可以是String
格式2:
switch(表达式){
case1-> {语句1;}
case2,3,4-> {语句2;}
....
default:-> {语句n+1;}
}
for循环
格式:
for(初始化语句;条件判断语句;条件控制语句){
循环体语句;
}
for(int i = 1;i <=10;i++){System.out.println("HelloWorld")
}
while循环
格式:
初始化语句;
while(条件判断语句){
循环体语句;
条件控制语句;
}
int i = 0;
while(i < 4){i++;
}
System.out.println(i);
for和while的对比
for循环中,控制循环的变量,因为归属for循环的语法结构中,在for循环结束后,就不能再次被访问了;知道循环的次数和范围
while循环中,控制循环的变量,因为while循环来说不归属其语法结构中,在while循环结束后,其变量还可以继续被访问;只知道循环的结束条件
do...while循环(先执行后判断-至少执行一次)
格式:
初始化语句;
do{
循环体语句;
条件控制语句;
}while(条件控制语句);
无限循环
for(;;){System.out.println("学习");
}
while(true){System.out.println("学习");
}
注:无限循环的下面不能写其它代码,因为循环不止
练习
package www.demol;
public class text111 {public static void main(String[] args){for( int x=1; x<=5; x++){if(x==3){continue;}System.out.println("小老虎在吃第"+x+"个包子");}}
}
package www.demol;
public class text111 {public static void main(String[] args) {for (int x = 1; x <= 5; x++) {System.out.println("小老虎在吃第" + x + "个包子");if (x == 3) {break;}}}
JAVA:找不到符号(IDEA定义变量)
环境
Lombok:bundled 222.3345.118
IDEA:2022.2
JDK1.8
步骤
右键点击此电脑-属性
%JAVA_HOME%\bin
-Djps.track.ap.dependencies=false
点击修复IDE,跟随右下角提示进行操作
关闭IDEA进程再打开
练习(循环):逢七过
package www.demol;
public class text111 {public static void main(String[] args) {for (int x = 1; x <= 100; x++) {if (x %10 == 7 ||x/10%10 == 7||x%7 == 0) {System.out.println("过");//100以内含7或7的倍数打印“过”continue;}System.out.println(x);}}}
练习(循环):求平方根
package www.demol;
import java.util.Scanner;
//键入.导包
public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键入.创建对象System.out.println("请输入一个整数");int number = sc.nextInt();//键入.接收数据for (int x = 1; x <= number; x++) {if (x*x==number) {System.out.println(x+"就是"+number+"的平方根");break;}else if (x*x>number){System.out.println((x-1)+"就是"+number+"平方根的整数部分");break;}}}}
练习(循环):质数判断
package www.demol;import java.util.Scanner;
//键入.导包public class text111 {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//键入.创建对象System.out.println("请输入一个正整数");int number = sc.nextInt();//键入.接收数据boolean flag = true;for (int x = 2; x <= number; x++) {if (number % x == 0) {flag = false;//System.out.println(number+"不是一个质数");break;}/*else{System.out.println(number+"是一个质数");break;}*/}if(flag){System.out.println(number+"是一个质数");}else{System.out.println(number+"是一个质数");}}}
简化版
int number = 100;
for (int x = 2; x <= number的平方根; x++) {// System.out.println(number+"是一个质数");
}
练习(循环):猜数字
类:Random,可以生成一个随机数
注:在小括号中,书写的是生成随机数的范围
这个范围一定是从0开始,到这个数-1结束
口诀:包头不包尾,包左不包右
package www.demol;import java.util.Scanner;
//键入import java.util.Random;
//随机数public class text111 {public static void main(String[] args) {Random r = new Random();//创建对象int number = r.nextInt(100)+1;//1-100//生成// int count = 0;//计数器Scanner sc = new Scanner(System.in);//键入while (true){System.out.println("请输入你要猜的数字");int getnumber = sc.nextInt();//键入count ++;/* if (count ==3 ){System.out.println("猜中了");break;}*/if(getnumber >number){System.out.println("大了");}else if(getnumber < number){System.out.println("小了");}else {System.out.println("猜中了");break;}}}}
数组
数组:是一种容器,可以用来存储同种数据类型的多个值
数组容器在存储数据的时候,需要结合隐式转换考虑
例:int类型的数组容器(boolean byte short int double)
double 类型的数组容器(byte short int long float double)
建议:容器的类型,和存储的类型保持一致
数组的定义: 数据类型 [ ]数组名 int [ ] array
数据类型 数组名[ ] int array[ ]
初始化:在内存中,为数组容器开辟空间,并将数据存入容器的过程
数组的静态初始化:数据类型 [ ]数组名 = new 数据类型 [ ]{元素1,元素2...};
例:int[ ] array = new int[ ]{11,22,33};
double[ ] array2 = new double[ ]{1.1,2.2,3.3};
简化:int[ ] array = {11,22,33};
double[ ] array2 = {1.1,2.2,3.3};
String[ ] array3 = {"zs","ls","ww"};
System.out.println(array);//[I@6d03e736为数组地址值
[:表示当前是一个数组
I、D:表示当前数组类型int、double
@:表示一个间隔符号(固定格式)
6d03e736:数组真正地址值(十六进制)
索引:也叫下标,角标
索引的特点:从0开始,逐个+1增长,连续不间断
例:int number =array[0];//0索引上对应的值赋给number
System.out.println(array[0]);//打印0索引对应的值
array[0]=100;在0索引中覆盖存储100
package www.demol;
public class text111 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};//定义数组/*System.out.println(arr[0]); 数组名[索引]*///利用循环改造代码//开始条件:0//结束条件:数组的长度-1(最大索引)/*输入fori生成for (int i = 0; i < 5; i++) {}*/for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);//i:0 1 2 3 4}//idea提供:数组名.fori,自动的快速生成数组的遍历方式}}
练习(数组):求和
package www.demol;
public class text111 {public static void main(String[] args) {int[] arr = {1,2,3,4,5};//定义数组int sum = 0;//求和变量for (int i = 0; i < arr.length; i++) {sum = sum + arr[i];}System.out.println(sum);}}
练习(数组):求值
package www.demol;
public class text111 {public static void main(String[] args) {int[] arr = {1,2,3,4,5,6,7,8,9,10};//定义数组int count = 0;//计数for (int i = 0; i < arr.length; i++) {if(arr[i] % 3 == 0){count++;}}System.out.println("数组中能被3整除的数有"+count+"个");}}
练习(数组):变化数据
package www.demol;
public class text111 {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]/=2;}else {arr[i]*=2; //奇数 扩大两倍}}for (int i = 0; i < arr.length; i++) {System.out.println(arr[i]);}}}
注:一个循环只做一个事情
数组动态初始化
动态初始化:初始化时只指定数组长度,由系统为数组分配初始值
格式:数据类型[ ]数组名=new 数据类型[数组长度];
范例;int [ ]arr = new int [3];
数组默认初始化值规律
整数类型:默认初始化值0
小数类型:默认初始化值0.0
字符类型:默认初始化值‘/u0000’空格
布尔类型:默认初始化值false
引用数据类型:默认初始化值null
package www.demol;
public class text111 {public static void main(String[] args) {String[] arr =new String[50];//创建数组arr[0] = "zs";arr[1] = "ls";System.out.println(arr[0]);System.out.println(arr[1]);System.out.println(arr[2]);int[] arr2 =new int[3];System.out.println(arr2[0]);System.out.println(arr2[1]);System.out.println(arr2[2]);}}
数组动态初始化和静态初始化的区别
动态初始化:手动指定数组长度,由系统给出默认初始值
*只明确元素个数,不明确具体数值,推荐使用动态初始化
例 :使用数组容器来存储键盘录入的5个整数
int[] arr = {?????};
int[] arr = new int[5];
-------------------------------------------------------------------------------------------------------------------
静态初始化:手动指定数组元素,系统会根据元素个数,计算出数组的长度
*需求中已经明确了要操作的具体数据,直接静态初始化即可
例:将全班的学生成绩存入数组中11,22,33
int[] arr ={11,22,33};
数组常见问题:当访问了数组中不存在的索引,就会引发索引越界异常
练习(数组):最值
package www.demol;
public class text111 {public static void main(String[] args) {int[] arr ={33,5,22,44,55};int max = arr[0];for (int i = 0; i < arr.length; i++) {if(arr[i]>max){max=arr[i];}}System.out.println(max);}}
练习(数组):求和并统计个数
package www.demol;
import java.util.Random;
//随机数
public class text111 {public static void main(String[] args) {int []arr = new int[10];//定义数组Random r = new Random();//创建对象for (int i = 0; i < arr.length; i++) {int number = r.nextInt(100)+1;//1-100//生成arr[i]=number;}
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+"个数据比平均数小");for(int i = 0; i < arr.length; i++) {System.out.print(arr[i]+" ");}}
}
练习(数组):交换数据
package www.demol;
public class text111 {public static void main(String[] args) {int a = 10;int b = 20;int temp = a;a = b;b = temp;System.out.print(a);System.out.print(" ");System.out.print(b);}}
package www.demol;
public class text111 {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]+" ");}}}
package www.demol;
public class text111 {public static void main(String[] args) {int []arr = {1,2,3,4,5};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]+" ");}}}
练习(数组):打乱数组中的数据
package www.demol;
import java.util.Random;
public class text111 {public static void main(String[] args) {int []arr = {1,2,3,4,5};Random r = new Random();int randomIndex = r.nextInt(arr.length);System.out.println(randomIndex);}}
package www.demol;
import java.util.Random;
public class text111 {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内存分配
*栈:方法运行时使用的内存,比如main方法运行,进入方法栈中执行
*堆:存储对象或者数组,new来创建的,都存储在堆内存,并产生地址值
方法区:存储可以运行的class文件
本地方法栈:JVM在使用操作系统功能的时候使用,和我们开发无关
寄存器:给CPU使用
int[] arr={11,22};
sout(arr[0]);//打印11
方法
方法是程序中最小的执行单元
例:main为主方法
重复的代码、具有独立功能的代码可以抽取到方法中
方法可以提高代码的复用性和可维护性
方法定义:把一些代码打包在一起的过程
public static 返回值类型 方法名(参数){方法体;return 返回值;
}方法名();//调用方法
方法调用:方法定义后并不是直接运行的,需要手动调用才能执行
最简单方法定义和调用
package www.demol;
public class text111 {public static void main(String[] args) {System.out.print("a");method();System.out.print("b");}public static void method() {System.out.print("c");System.out.print("d");}}
package www.demol;
public class text111 {public static void main(String[] args) {sum();}public static void sum() {int a = 10;int b = 20;int result = a + b;System.out.print(result);}}
带参数方法定义和调用
package www.demol;
public class text111 {public static void main(String[] args) {method(10,20);//10、20为实参}public static void method(int a,int b)//a、b为形参{int result = a + b;System.out.print(result);}}
形参(形式参数): 方法定义中的参数
实参(实际参数):方法调用中的参数
带返回值方法的定义和调用
public static 返回值类型 方法名(参数){方法体;return 返回值;
}public static int getsum(int a,int b){int c = a + b;return c;
}
package www.demol;
public class text111 {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));输出调用int sum1 = getsum(10, 20, 30);int sum2 = getsum(10, 20, 30);int sum3 = getsum(10, 20, 30);int sum = sum1+sum2+sum3;System.out.println(sum);}public static int getsum (int a, int b, int c){int result = a + b + c;return result;}
}
注:
方法不调用就不执行
方法与方法之间是平级关系,不能互相嵌套
方法的编写顺序和执行顺序无关
方法的返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。
如果要编写return,后面不能跟具体的数据,return语句下面永远执行不到
方法没有返回值:可以省略不写。如果书写,表示结束方法
方法有返回值:必须要写。表示结束方法和返回结果
方法的重载
同一个类中,方法名相同,参数不同(个数不同、类型不同、顺序不同)的方法,构成重载关系,且与返回值无关
package www.demol;
public class text111 {public static void main(String[] args) {compare(10,20);}public static void compare(int a,int b){System.out.println(a == b);System.out.println("int");}public static void compare(short c,short d){System.out.println(c == d);System.out.println("short");}public static void compare(byte e,byte f){System.out.println(e == f);System.out.println("byte");}public static void compare(long g,long h){System.out.println(g == h);System.out.println("long");}}
练习(方法):拷贝数组
package www.demol;
public class text111 {public static void main(String[] args) {/*定义一个方法copyofrange(int[]arr,int form,int to)将数组arr中从索引from(包括from)到索引to(不包括to)结束的元素复制到新数组中,将新数组返回*/int[] arr= {1,2,3,4,5,6,7,8,9};//定义原始数组int[] copyArr= copyofrange(arr,3,7);//调用方法拷贝数组for (int i = 0; i < copyArr.length; i++)//遍历数组copyArr{System.out.println(copyArr[i]+" ");}}public static int[] copyofrange(int[] arr,int from,int to){int[] newArr = new int[to - from];//定义新数组,直接拷贝int index = 0;//伪造索引for (int i = from; i < to; i++) {newArr[index]=arr[i];//数组名[索引]=数据值index++;}return newArr;//返回新数组}
}
引用数据类型
变量中存储的是地址值
引用:使用了其他空间中的数据
基本数据类型:数据值是存储在自己空间中,赋值给其他变量,赋的真实值
引用数据类型:数据值是存储在其他空间中,自己空间中存储的是地址值,赋值给其他变量,赋的地址值
int[] arr1 ={1,3,2};
int[] arr2 =arr1;
方法的值传递
传递基本数据类型时,传递的是真实的数据,形参的改变,不影响实际参数的值
package www.demol;
public class text111 {public static void main(String[] args) {int num = 100;System.out.println("before change:"+num);//100change(num);System.out.println("after change:"+num);//100}public static void change(int num){num = 200;}
}
传递引用数据类型时,传递的是地址值,形参的改变,影响实际参数的值
package www.demol;
public class text111 {public static void main(String[] args) {int [] arr={10,20,30};sout("调用change前:" + arr[1]);change(arr);sout("调用change后:" + arr[1];}public static void change(int []arr){arr[1] = 200;}
}
Java学习笔记(第6天)相关推荐
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
- java学习笔记16--I/O流和文件
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note16.html,转载请注明源地址. IO(Input Output)流 IO流用来处理 ...
- java学习笔记15--多线程编程基础2
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note15.html,转载请注明源地址. 线程的生命周期 1.线程的生命周期 线程从产生到消亡 ...
- java学习笔记14--多线程编程基础1
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note14.html,转载请注明源地址. 多线程编程基础 多进程 一个独立程序的每一次运行称为 ...
- java学习笔记11--集合总结
java学习笔记系列: java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 java学习笔记6--类的继承.Ob ...
最新文章
- CSS样式中伪类和伪类元素的区别(css中一个冒号和两个冒号的区别)
- Linux 上的高可用中间件
- 硬RAID可以为NVMe SSD数据可靠性保驾护航吗?
- vba执行linux命令,从VBA中的shell命令捕获输出值?
- 5gnr帧结构特点有哪些_真空离子束刻蚀设备的结构特点有哪些
- 前端学习(2786):完成推荐商品结构之头部标签栏
- jeecg自定义结果集t:dictSelect
- 【Elasticsearch】Elasticsearch查询参数batched_reduce_size的解释
- 鸿蒙一号指纹锁,【诉说实情】火车头战狼一号家用防盗门指纹锁怎么样?新手必看内情...
- JavaScript模块化开发(一)基础知识
- 《Node.js实战(双色)》作者之一——吴中骅访谈录
- UEFI 文件类型 .efi (二)
- ubuntu linux qq闪退
- 移动支付走入线下商家
- ASP.NET MVC 实现 IOC基础上添加AOP实现时候遇到的坑
- 第二届全球区块链峰会随记
- python手游自动化测试流程_基于Python+appium的ios自动化测试demo(更新中)
- 手写实现一个HashMap
- const char*, char const*, char*const的区别
- hdfs - balancer学习
热门文章
- Camtasia Studio CamStudio如何导出为手机视频
- 自创小说《彩虹雨》连载(三)
- 软件项目管理 第12讲 软件项目跟踪
- 【四 zedboard】 VGA显示彩条
- 【概率论与数理统计02】那些年,正态分布、指数分布、伽马分布、卡方分布之间的发生的那些事儿(下)
- YouTube如何生成双语字幕?
- jQuery框架开发一个最简单的幻灯效果
- 初识EMC元器件(二)——TVS管选型及应用
- 优秀开源产品推荐:Tpflow工作流引擎
- linux下cc命令,Linux cc 命令 command not found cc 命令详解 cc 命令未找到 cc 命令安装 - CommandNotFound ⚡️ 坑否...