01java入门语法02-流程控制语句、方法定义调用重载、数组、类、对象、封装、构造方法、scanner,random,arraylist,string,arrays,math类,static关键字

一、流程控制

顺序结构:单纯的的靠先后顺序进行编写。

二、判断语句

1.if(关系表达式){
语句体;

2.if(关系表达式){
语句体1;
}else{
语句体2;

3.if(判断条件1){
语句体1;
}else if(判段条件2){
语句体2;


}else if(判段条件n){
语句体2;
}else{
执行语句n+1;
}
4.if语句可以和三元运算互换使用。

if(a>b){
		c=a;
}else{
		c=b;
}
//可以改写成三元运算符形式
c=a>b?a:b;
三、选择语句

1.switch

switch(表达式){
		case 常量值1:
			语句体1;
			break;
		case 常量值2:
			语句体2;
			break;
	.....
	    default:
	    	语句体n+1;
	    	break;
}

最后,如果所有的case值都和表达式的值不匹配,就会执行default语句体部分,然后程序结束掉。
switch语句中,表达式的数据类型,可以是byte,short,int,char,enum(枚举),JDK7后可以接收字符串。
如果,条件在前面已经满足,但是没有遇到break语句,程序会一直往后走,不会再判断case,直接运行完整体switch。

package com.itt.li;

public class demoao {
    public static void main(String[] args) {
        int x=1;
        System.out.println(x);
        switch (x){
            case 1:
                System.out.println(21);
            case 2:
                System.out.println(31);
            case 3:
                System.out.println(41);
            case 4:
                System.out.println(51);
            case 5:
                System.out.println(61);
            default:
                System.out.println(767);
        }
    }
}
四、循环语句

1.for循环语句
for(初始化表达式;布尔表达式;步进表达式){
循环体;

2.while循环语句
初始化表达式;
while(布尔值表达式){
循环体;
步进表达式;

3.do…while
初始化表达式
do{
循环体;
步进表达式;
}while(布尔表达式);
无条件执行一次循环体,不建议使用。
4.for和while的区别
①控制条件语句所控制的那个变量,在for循环结束后,就不能再被访问到了,而while循环结束还可以继续使用,如果继续使用,就用while,否则用for。for循环结束后,该变量就从内存中消失,能够提高内存的使用效率。
②在已知循环次数的时候使用for,循环次数未知的时候推荐使用while。
5.break和continue
break:终止switch或者循环
continue:结束本次循环,继续下一次的循环。

五、扩展知识点

1.死循环
判断条件永远为true。
2.嵌套循环
总共循环的次数=外循环次数*内循环次数。

六、方法

1.方法的定义与调用

public class Method{
		public static void main(String[] args){
		int sum=getSum(5,6);
		System.out.println(sum);
	}
    public static int getSum(int a,int b){
			return a+b;
	}
}

2.定义方法的注意事项
①定义位置,类中方法外面。
②返回值类型,必须要和return语句返回的类型相同,否则编译失败。
③不能在return后面写代码,return意味着方法结束,所有后面的代码永远不会执行,属于无效代码。
3.调用方法的三种形式
①直接调用:直接写方法名
②赋值调用:在方法前面定义变量,接收方法返回值。
③输出语句调用:在输出语句中调用方法。
System.out.println(方法名())
注:不能用输出语句调用void类型的方法,因为方法执行后没有结果,也就打印不出任何内容。
4.方法重载
指在同一个类中,允许存在一个以上的同名方法,只要它们的参数列表不同即可,与修饰符和返回值类型无关。
参数列表:个数不同,数据类型不同,顺序不同。
重载方法调用:JVM通过方法的参数列表,调用不同的方法。

七、数组

1.概念:存储数据长度固定的容器,保证多个数据的数据类型要一致。

2.定义:
①数组存储的数据类型[ ] 数组名字=new 数组存储的数据类型[长度];
例:int[] arr =new int[3];
注:数组的长度,表示数组容器中可以存储多少个元素,数组有定长特性,长度一旦指定,不可更改。
②数据类型[] 数组名=new 数据类型[ ]{元素1,元素2,元素3…};
例:int[] arr=new int[]{1,2,3,4,5};
③数据类型[] 数组名={元素1,元素2,元素3…};
例:int[] arr={1,2,3,4,5};
必须是同一类型。

3.数组的访问
①索引:每一个存储到数组的元素,都会自动拥有一个编号,从0开始。
②数组的长度属性:数组名.length。属性length的执行结果是数组的长度,int类型。
数组的最大索引值为:数组名.length-1。
③索引访问数组中的元素
数组名[索引]=数值,为数组中的元素赋值。
变量=数组名[索引],获取出数组中的元素。

4.数组原理内存图

区域名称作用
寄存器给CPU使用,和我们开发无关。
本地方法栈JVM在使用操作系统功能的时候使用,和我们开发无关。
方法区存储可以运行的class文件。
堆内存存储对象或者数组,new来创建的,都存在堆内存。
方法栈方法运行时使用的内存,比如main方法运行,进入方法栈中执行。

5.数组在内存中的存储
直接打印数组名称,显示的是数组地址。

6.两个数组变量指向一个数组
int[] arr2=arr;

7.数组的常见操作
①数组的越界
②数组的空指针异常
③数组的遍历

public static void main(String[] args){
	int[] arr={1,2,3,4,5};
	for(int i=0;i<arr.length;i++){
		System.out.println(arr[i]);
	}
}

④数组获取最大值

public static void main(String[] args){
	int[] arr={1,2,3,4,5};
	int max=arr[0];
	for(int i=0;i<arr.length;i++){
		if(arr[i]>max){
			max=arr[i];
		}
	}
	System.out.println(max);
}

⑤数组反转:数组颠倒顺序。

public static void main(String[] args){
	int[] arr={1,2,3,4,5};
	for(int min=0,max=arr.length;min<max;min++,max--){
		int temp=arr[min];
		arr[max]=arr[min];
		arr[max]=temp;
		}
	for(int i=0;i<arr.length;i++){
		System.out.println(arr[i]);
	}
}

8.数组作为方法参数和返回值
①数组作为方法参数传递,传递的参数是数组内存地址。
②数组作为方法返回值,返回的是数组的内存地址。
③方法的参数为基本类型时,传递的是数据值,方法的参数为引用类型时,传递的是地址值。
9.二维数组int[][]
10.Arrarys工具类
11.排序算法:冒泡排序、选择排序、插入排序、快速排序、归并排序、希尔排序、堆排序、桶排序
在西部开源有视频

八、类与对象

1.面向过程:强调步骤。
面向对象:强调对象,这里的对象就是洗衣机。
面向对象的语言中,包含三大基本特征,即封装、继承和多态。
2.类
是一组相关属性和行为的集合,可以看成一类事物的模板,使用事物的属性特征和行为特征来描述该类事物。类是对一类事物的描述,是抽象的。
例:小猫
属性:名字,年龄,颜色
行为:走,跑,叫

3.对象:是一类事物的具体体现,必然具备该类事物的属性和行为。
例:一只小猫
属性:tom,5kg,yellow
行为:喵喵叫

4.类和对象的关系
类是对一类事物的描述,是抽象的。对象是一类事物的实例,是具体的。类是对象的模板,对象是类的实体。
例:手机设计图和一部手机

5.类的定义
public class ClassName{
//成员变量:和以前定义变量几乎是一样的,位置在类中,方法外。
//成员方法:定义方法几乎一样,但要把static去掉。
}

6.对象的使用
①创建对象:
类名 对象名 =new 类名();
②使用对象访问类中的成员:
对象名.成员变量;
对象名.成员方法();

7.成员变量的默认值

数据类型默认值
整数(byte,short,int,long)0
浮点数(float,double)0.0
字符(char)‘\u0000’
布尔(boolean)false
数组,类,接口null
其中数组,类,接口为引用类型。
九、封装

1.概念:适当的封装可以让代码更容易理解维护,也增强了代码的安全性。将属性隐藏起来,若要访问某个属性,提供公共方法对其进行访问。

2.步骤:使用private关键字来修饰成员变量。对需要访问的成员变量,提供一对getXxx方法、setXxx方法。

3.private的含义
一个权限修饰符,代表最小权限,可以修饰成员变量和成员方法。被private修饰后的成员变量和成员方法,只在本类中才能访问。
private 数据类型 变量名;

4.封装优化——this关键字
this代表所在类的当前对象的引用(地址值),即对象自己的引用。方法被哪个对象调用,方法中的this就代表那个对象,即谁在调用,this就代表谁。
格式:this.成员变量名;
方法只有一个变量名时,默认也是使用this修饰,可以省略不写。

5.封装优化——构造方法
修饰符 构造方法名(参数列表){
//方法体

构造方法的写法,方法名与它所在的类名相同。它没有返回值,所以不需要返回值类型,甚至不需要void。

public class Student{
	private String name;
	prinvate int age;
	public Student(){}//无参数构造方法
	//有参数构造方法
	public Student(String name,int age){
		this.name=name;
		this.age=age;
	}
}

注:
①如果你自己不提供构造方法,系统会给你无参数构造方法。
②如果你提供了构造方法,系统将不再提供无参数构造方法。
③构造方法是可以重载的,既可以定义参数,也可以不定义参数。

6.标准代码——JavaBean是Java语言编写的规范。符合JavaBean的类。

十、API(应用程序编程接口)

Java API是程序员的字典。

十一、Scanner类

1.用途:可以让用户使用键盘输入数据

Scanner sc =new Scanner(System.in);
int i=sc.nextInt();

2.引用类型使用步骤
①导包,使用import关键字导包,在类的所有代码之前导包。java.lang包下的所有类无需导入。
import 包名.类名;
②创建对象
使用该类的构造方法,创建一个该类的对象。
数据类型 变量名=new 数据类型(参数列表);
例 :Scanner sc=new Scanner(System.in);
③调用方法
调用该类成员方法。
变量名.方法名();
int i=sc.nextInt();
④匿名对象(没有变量名 的对象)
创建对象时,只有创建对象的语句,却没有把对象地址值赋值给某个变量。
new 类名(参数列表);
例:new Scanner(System.in);
创建匿名对象直接调用方法,没有变量名
new Scanner(System.in).nextInt;
一个匿名对象只能用一次。

十二、Random类

可以使用户得到一个随机数。

//1.导包
import java.util.Random;
public class Demo01_Random{
	public static void main(String[] args){
        Random r=new Random();
        for(inti=0;i<3;i++){
			int number=r.nextInt(10);//实际是0~9
			System.out.println("number"+number);
		}
	}
}
//如果要取1~n,[1,n]整体加一
十三、ArrayList类

1.对象数组
数组的长度是固定的,无法适应数据变化的需求。容器java.util.ArrayList集合类,可以更便捷的存储和操作对象数据。
2.ArrayList类实际上就是大小可变的数组实现。可以不断的添加元素,大小也自动增长。对于ArrayList来说,有一个尖括号代表泛型。泛型也就是装在集合当中所有的元素,全都是统一的什么类型。泛型只能是引用类型,不能是基本类型。

ArrayList<String> list =new ArrayList<>();//创建泛型
list.add("迪丽热巴")

3.使用步骤:
①导包
java.util.ArrayList
表示一种指定的数据类型
例:ArrayList list =new ArrayList();
其实E可以为空。
②查看成员方法
String s1=“曹操”;
list.add(s1);
③常用方法和遍历
对于元素的操作,基本体现——增删查。
public boolean add(E e):将指定的元素添加到此集合的尾部。
public E remove(int index):移除此集合中指定位置上的元素,返回被删除的元素。
public E get(int index):返回此集合中指定位置上的元素,返回获取的元素。
public int size():返回此集合中的元素数。遍历集合时,可以控制索引范围,防止越界。
4.存储基本数据类型

基本数据类型基本类型包装类
byteByte
shortShort
intInteger
longLong
floatFloat
doubleDouble
charCharacter
booleanBoolean
例:ArrayList list =new ArrayList();
5.对象添加到集合
6.打印集合方法
7.获取集合方法
十四、String类

1.java.lang.String类代表字符串。
字符串不变,字符串的值在创建后不能被改变。但是可以被共享。不需要导入包。"abc"等效于char[] data={‘a’,‘b’,‘c’};
2.三种构造方法
public String():
public String(char[] array):
public String(byte[] array):
3.使用步骤:
①无参构造
String str=new String();
②通过字符数组构造
char chars[]={‘a’,‘b’,‘c’};
String str2=new String(chars);
③通过字节数组构造
byte bytes[]={97,98,99};
String str3=new String(bytes);
④获取功能的方法
public int length():返回此字符串的长度。

public String concat(String str):将指定的字符串连接到该字符串的末尾。

public char charAt(int index):返回指定索引处的char值。

public int indexOf(String str):返回指定子字符串第一次出现在该字符串内的索引。

public String substring(int beginIndex):返回一个字符串,从beginIndex开始截取字符串到字符串结尾.

public String Substring (int beginIndex,int endIndex):返回一个子字符串,从beginIndex到endIndex截取字符串。含beginIndex,不含endIndex,则从指定位置开始直 到末尾处结束。
⑤转换功能的方法
public char[] toCharArray():将此字符串转换为新的字符数组。

public byte[] getBytes():使用平台的默认字符集将该String编码转换为新的字节数组。

public String replace (CharSequence target,CharSequence replacement):将与target匹配的字符串使用replacement字符串替换。

⑥分割功能的方法
public String[] split(String regex):将此字符串按照给定的regex(规则)拆分成为字符串数组。split方法的参数其实是一个正则表达式,特殊情况:如果按照英文句点“.”进行切分,必须写“//.”(两个反斜杠)。

String str1="aaa,bbb,ccc";
String[] array1=str1.split(regex:“\\.”);
System.out.println(array3.length);
for(int i=0;i<array3.length;i++){
		System.out.println(array[3]);
}

String类注意:1.对于引用类型来说,==进行的是地址值的比较。双引号直接写的字串在常量池当中,new的不在池当中。

public static void main(String[] args){
   String str1="abc";
   String str2="abc";
   char[] charArray = {"a","b","c"};
   String str3= new String(charArray);
   System.out.println(str1==str2);
   System.out.println(str1==str3);
   System.out.println(str2==str3);
}

在这里插入图片描述2.如果确实需要字符串的内容比较 ,可以使用两个方法:public boolean equals(Object obj):参数可以是任何对象,只有一个参数是一个字符串并且内容相同的才会给true,否则返回Flase。任何对象都能用Object进行接收。equals方法具有对称性,也就是a.equals(b)和b.equals(a)效果一样。如果比较双方一个常量一个变量,推荐把常量字符串写在前面。推荐:“abc”.equals(str1)
3.

十五、static关键字

1.概述:关于这个关键字的使用,可以用来修饰成员变量和成员方法,被修饰的成员是属于类的,而不是单单是属于某个对象的。也就是说,既然属于类,就可以不靠创建对象来调用了。一旦使用static修饰成员方法,那么这就成为了静态方法。静态方法不属于对象,而是属于类的。如果没有关键字static,那么必须首先创建对象,然后通过对象才能使用它,如果有了static关键字,那么不需要创建对象,直接就能通过类名称来使用它。无论是成员变量,还是成员方法,如果有了static都推荐使用类名称进行调用,静态变量:类名称.静态变量。静态方法:类名称.静态方法()。

Student one new Student(name:"黄蓉",age:16);
one.room="101教室";
System.out.println("姓名:"+one.getName()
		+"年龄:"+one.getAge()+"教室"+one.room+"学			 号"+one.getId);
		Student two new Student(name:"郭靖",age:16);
two.room="101教室";
System.out.println("姓名:"+two.getName()
		+"年龄:"+two.getAge()+"教室"+two.room+"学			 号"+two .getId);

2.当static修饰成员变量时,该变量称为类变量。该类的每一个对象都共享着同一个类变量的值。任何对象都可以更改该类变量的值,但也可以在不创建该类的对象情况下对类变量进行操作。
static int sid;
3.静态方法
类方法:使用static关键字修饰的成员方法,习惯称为静态方法。 特点:第一次用到本类时,静态代码块执行唯一的一次。静态内容总是优先于非静态,所以静态代码块比构造方法先执行。 用途:用来一次性地对静态成员变量进行赋值。
例:public static void showNum(){
System.out.println(“num:”+numberOfStudent);
}
注意事项:
①静态方法可以直接访问类变量和静态方法。
②静态方法不能直接访问普通成员变量或成员方法。反之,成员方法可以直接访问类变量或静态方法。
③静态方法中,不能使用this关键字。
静态方法只能访问静态成员,this代表当前对象,通过谁调用的方法,谁就是当前对象。
4.调用格式
被static修饰的成员可以并且建议通过类名直接访问。根据类名称访问静态成员变量的时候全程和对象就没关系,只和类有关系。
格式:

//访问变量
类名.类变量名;
//调用静态方法
类名.静态方法名(参数);

5.静态代码块
定义在成员位置,使用static修饰的代码块{}。
static关键字,可以修饰变量、方法和代码块。在使用的过程中,其主要目的还是想在不创建对象的情况下,去调用方法。

七、Arrays类
1.导包
java.util.Arrays此类包含用来操作数组的各种方法,比如排序和搜索。所有的方法均为静态方法。
2.操作数组的方法
public static String toString(int[] a):返回指定数组内容的字符串表示形式。([元素1,元素2,元素3])
public static void sort(int[] a):对指定的int型数组按数字升序进行排序。

String str ="dfhsrjdgjt4545578fdxbxgfn";
char[] chars =str.toCharArray();
Arrays.sort(chars); //对字符数组进行升序排序
//倒序排序
for(int i=chars.lenght-1;i>=0;i--){
	System.out.println(arrays[i]);
}

如果是数值,sort默认按照升序从小到大,如果是字符串,sort默认按照字母升序。如果是自定义的类型,那么这个自定义的类需要有Comparable或者Comparator接口的支持 。
八、Math类
1.基本介绍
java.lang.Math类包含用于执行基本数学运算的方法,如初等指数、对数、平方根和三角函数。所有方法均为静态方法,并不会创建对象,调用起来非常简单。
2.基本运算的方法
public static double abs(double a):返回double值的绝对值。
public static double ceil(double a):返回大于等于参数的最小的整数。向上取整
public static double floor(double a):返回小于参数最大的整数。向下取整
public static long round(double a):返回最接近参数的long。(相当于四舍五入方法)

System.out.println(Math.ads(322.33));
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值