JAVA 基础概念
10-标识符
定义:给类,方法,变量等起的名字。
小驼峰命名法:方法、变量
规范一:标识符是一个单词的时候,全部小写
规范二:标识符由多个单词组成的时候,第一个单词首字母小写,其它单词首字母大写
大驼峰命名法:类名
规范一:标识符是一个单词的时候,首字母大写
规范二:标识符由多个单词组成的时候,每个单词的首字母大写。
11-键盘录入(scanner)
导包-创建对象-接收数据
导包- import java.utill.Scanner;
创建对象-Scanner sc =new Scanner(System.in); 只有sc是变量名可以变
接收数据-int i =sc.nextInt(); 只有i是变量名可以变
12.IDEA
项目-模块-包-类
psvm sout
运算符
1.算术运算符(加\减\乘\除\取模)
整数除整数得数是整数
小数参与运算结果可能不精确
2.隐式转换和强制转换
隐式转换(小变大) 小byte-short-int-long-float-double大
规则:取值范围小的和取值范围大的运算,小的先提升成大的,在进行运算
byte short char三种类型的数据在运算的时候,会提升成int,然后再运算
强制转换(大变小)
格式:目标数据类型 变量名=(目标数据类型) 被强转的数据;
3.字符串相加---拼接
4.字符相加(Ascll码)
字符+字符
字符+数字
5.自增自减运算符++;--;
6.赋值运算符
= ;+=;-=;*=;/=;%=;
a+=b a=a+b
7.关系运算符
== != > >= < <=
8.四种逻辑运算符
&与 两边都为真结果才为真
|或 两边都为假结果才为假
!非
^异或 相同取false,不同为true
9.短路逻辑运算符(&& ||)
先看第一个,再看第二个(效率低),短路运算符---提高效率
10.三元运算符(判断并根据判断的内容得到不同的结果)
关系表达式? 表达式1:表达式2;
true-输出表达式1
false-输出表达式2
11.运算符的优先级
12.原码、反码、补码
判断和循环(逻辑控制语句)
//顺序结构、分支结构、循环结构
一、顺序结构
二、分支结构
1.if语句---用于判断
第一种格式:
if(关系表达式){ 语句体; }
第二种格式:
if(关系表达式){ 语句体1;}
else{语句体2;}
第三种格式:
if(关系表达式){语句体1;}
else if(关系表达式){语句体2;}
else{语句体3;}
2.switch语句
格式:
switch(表达式){
case 值1:语句体1;
break;
case 值2:语句体2;
break;
……
default:
语句体;
break;
}
其他知识点:
defauit的位置和省略
case穿透
switch新颖性
三、循环语句
//for 、while 、do while
(1)for循环
格式:
for(int i=1;i<+10;i++){
system.out.printin("helloworld");
}
(2)while循环
格式:
while(条件判断语句){
循环体语句;
条件控制语句;
}
四、练习
数组
01.数组的概述和静态初始化
变量一次只能存一个数,数组一次可以存储同种类型的多个数(考虑隐式转换)
1.定义:
格式一:数据类型 [ ] 数组名
例:int [ ] array
格式二:数据类型 数组名 [ ]
例:int array [ ]
2.数组的静态初始化
初始化:内存中,为数组容器开辟空间,并将数据存入容器中的过程。
完整格式:数据类型 [ ] 数组名=new 数据类型 [ ] {元素1,元素2……};
简写格式:数据类型 [ ] 数组名={元素1,元素2……};
创建完毕之后数组的长度就固定了。
02.数组的地址值和元素访问
地址值
数组元素的访问
格式:数组名 [索引];
计算机从0开始,不是从1开始(01234)
//如何获取数组中的数
格式:数组名[索引]
//把数据存储到数组中
格式:数组名[索引]=具体的数/变量
arr[1]=200;
03.数组的遍历
将数组中所有的内容取出来,取出来之后可以(打印、求和、判断……)
//开始条件:0
//结束条件(最大索引):数组的长度-1
for(int i=0;i<5;i++){system.out.print()arr[i];}
在java当中,关于数组的一个长度属性:length
调用方式:数组名.length
例子:system.out.printin(arr.length)
idea快捷:arr(数组名).for.i
03.数组动态初始化
动态初始化:初始化时只指定数组的长度,由系统为数组分配初始值。
格式:数据类型[] 数组名=new 数据类型[数组长度];
string[]arr=new string [50];
arr[0]="zhangsan";
arr[1]="lisi";
数组默认初始化值的规律:
整数类型:默认初始化0
小数类型:默认初始化0.0
字符类型:
boolean:false
引用数据类型:默认初始化值 null
数组常见操作
(1)求最值
//定义数组
int [] arr={33,5,22,44,55};
//定义一个max认为是最大的,临时认为第一个数是最大的
int max=arr[0];
//循环获取数组中的元素,并和max进行比较
for(int i=0;i<arr.length;i++){
if(max<arr[i]){max=arr[i];
}
}
//循环结束后,max记录的最大值
system.out.printin(max);
max初始化的值一定是数组中的数
(2)求和并统计数据
int[] arr=new int[10];
//把随机数存到数组中
Random r=new random();
for(int i=0;i<arr.length;i++){
int number =r.nextInt(bound:100)+1;
arr[i]=number;
}
//求和
int sum=0;
for(int j=0;j<arr.length;j++){
sum+=arr[j];
}
system.out.printin("数组的和为"+sum);
//求平均数
int avg=sum/arr.length;
system.out.printin(avg)
3.交换数据
//实现首尾交换
int[]arr={1,2,3,4,5};
for(int i=0,j=arrlrngth-1;i<j;i++,j--){
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
4.打乱数组中的数据
int[]arr={1,2,3,4,5};
Random r=new Random;
for(int i=0;i<arr.length;i++){
int number=r.nextint(arr.length)
int temp=arr[i];
arr[number]=arr[i];
arr[number]=temp;
}
for(int i=0;i<arr.length;i++){
system.out.printin(arr[i]);
}
04.数组的内存图
栈、堆、方法区、本地方法栈、寄存器
方法
01.什么是方法
方法是程序中最小的执行单元
相同代码进行打包,减少代码的重复性
02.方法的打包和调用
最简单的方法的定义和调用
格式:public static void 方法名(){
方法体(就是打包起来的代码);
}
调用:方法名()
代码执行过程:看到方法进入方法,方法完毕回到调用处继续程序
public static void main(string[] args){
getSum();
}
public static void getSum(){
int a=10;
int b=20;
int sum=a+b;
system.out.printin(sum);
}
带参数的方法定义和调用
public static void main(string[] args){
getSum(10,20);
}
public static void getSum(int num1,int ){
int sum=num1+num2
system.out.printin(sum);
}
注意:参数类型和参数个数要统一!!!
形参和实参
形参:方法定义中的参数
实参:方法调用中的参数
方法定义技巧
我要干什么?方法体—语句
我干这件事需要什么才能完成?形参
带返回值方法的定义和调用
方法的返回值其实就是方法运行的最终结果
如果在调用处要根据方法的结果,去编写另外一段代码逻辑
为了在调用处拿到方法产生的结果,就需要定义带有返回值的方法
定义的时候:
public static 返回值类型 方法名(参数){
方法体;
return 返回值;
}
调用:
(1)直接调用:方法名(实参);
(2)赋值调用:整数类型 变量名 =方法名(实参);
(3)输出调用:system.out.printin(方法名(实参));
注意事项
方法不调用就不执行
方法与方法之间是平级关系,不能互相嵌套
方法的编写顺序和执行顺序无关
方法返回值类型为void,表示该方法没有返回值,没有返回值的方法可以省略return语句不写。如果要编写return,后面不能跟具体数据。
03.方法的重载
在同一类(class)中定义了多个同名的方法,这些同名的方法具有同等的功能。
每个方法具有不同的参数类型或参数个数,这些同名的方法就构成了重载关系。
同一类中方法名相同,参数不同的方法。与返回值无关。
JAVA虚拟机会通过参数的不同来区分同名的方法
04.方法的内存
栈-先进后出
面向对象
拿(设计)东西过来做对应的事情
01.类和对象
类:是对象共同特征的描述。
对象:是真实存在的具体东西
JAVA中必须先设计类才能获得对象
public class 类名{ }
例:public class phone{
//属性(成员变量)
String brand;
double price;
//行为(方法)
public void call(){
}
public void play(){
}
}
如何获得类的对象
类名 对象名=new 类名();
Phone p=new Phone();
如何使用对象
访问属性:对象名.成员变量
访问行为:对象名.方法名()
用来描述一类事物的类专业叫做JAVAbean类,是不写main方法的。
在以前编写main方法的类叫做测试类。
可以在测试类中创建JAVA
bean类的对象,并进行赋值调用。
02.封装
如何正确设计对象的属性和方法
对象代表什么,就带封装对应的数据,并提供数据对应的行为。
案例:人关门
门自己关的,人的行为造成的
有什么事,找对象,调方法
private-权限修饰符
public class girlFriend{
private string name;
private int age;
private string gender;}
//针对于每一个私有化的成员变量,都要提供get和set方法
//set方法:赋值 get方法:获取
//给成员name进行赋值,没有返回值
public void setName(string n){
name=n;
}
//作用:对外提供name属性,有返回值
public getName(string n){
return name;
}
public void setAge(int a){
if(a>=18&&a<=50){age=a;}
}
pubilc return getAge{
return age;
}
//行为
public void sleep(){
system.out.printin("睡觉")
}
//测试
GirlFriend gf1=new GrilFriend();
//赋值
gf1.setName("123");
gf1.setAge(18);
string name=gf1.getName();
int age=gf1.getAge();
03.this关键字
成员变量:方法里面的变量
局部变量:方法外面的变量
就近原则
system.out.printIn(age)-成员变量
system.out.prinIn(this.age)-局部变量
04.构造方法
创建对象的时候对成员进行初始化(赋值)
格式
public class Student{
修饰符 类名(参数){
方法体;
}
}
方法名与类名相同,大小也要一致。
没有返回值类型,连void的也都没有。
没有具体的返回值。