【JAVA基础】基础差怎么学习JAVA? 亲测学习JAVA第一天

第一章

JAVA语言概述

一、基础语法

变量分类
在这里插入图片描述

引用数据类型,赋值的是变量所保存的数据的地址值

1.基本数据类型之间的运算规则:

byte、char、short->int->long->float->double

String运算
  • 和8种基本数据类型做运算,只能是连接:+
  • 整型+char型:结果为整型,做运算 (char ,short,byte做运算结果为int型)
char c='a';
int num=10;
String str="hello";
 //字符数组+整型=整型 
 System.out.println(c+num+str);  //c加10=107,拼接hello
 System.out.println((c+num)+str);//107hello
 
 // string拼接string
 System.out.println(c+(num+str)); //a10hello
 System.out.println(c+str+num); //ahello10
 System.out.println(str+num+c); //hello10a

byte b=5;
short s=3;
short t=s+b; // no! 结果为int型
2.补码->原码

减一求反(除去符号位1)加负号

二进制的整数有如下三种形式:

  • 原码:直接将一个数值换成二进制数。最高位是符号位
  • 负数的反码:是对原码按位取反,只是最高位(符号位)确定为1。
  • 负数的补码:其反码加1。

#开发工具

JDK=JRE+开发工具集

JR E=JVM+JAVA SE标准类库

3.位运算:

<< 左移一位,相等于*2

(||)右移一位,相当于 /2

P83 位运算——>项目一 127-131

for循环 外层循环控制行数 内层循环控制列数

4.流程控制

break

continue

流程控制结构的使用+算法逻辑

标题1.return

return 结束整个方法,不管return处于多少个循环中、

2.break

break跳出离此关键字最近的一层循环

class  xunhuan{
    public static void main(String[] args) {
        for(int i=1;i<=4;i++){
            for (int j=1;j<=10;j++){
                if(j%4==0){
                   break;
                }
                System.out.print(j);
            }
            System.out.println();
        }
    }
}

3.continue

continue是结束这一次循环,执行上一个循环

循环语句:

  1. 初始化部分
  2. 循环条件部分
  3. 循环体部分
  4. 迭代部分

二、运算符

  • 算术

  • 赋值

  • 比较

  • 逻辑

  • 位运算符

  • 三元运算符

三、数组

1.数组的命名规则

动态数组:类型 [ ]数组名=new 类型**[长度]**

静态数组:数组名=new 类型**[数组长度]**

2.数组的特点:序列 类型

错误 值类型错误

3.数组的分类:

一维数组

二维数组

​ Person p=new Person();

栈(stack):main方法里,局部变量(形参) Person p 栈内存

堆(heap):(地址)new对象(属性)、数组 new Person();使用new开辟堆内存

方法区: 类的信息加载、常量池、静态域

return的作用:

1.在循环中判断条件时使用。帮助当你的需要的条件满足时跳出或中止循环

2.在方法里,当你定义一个方法,需要它返回一个值给你的时候,在方法最后,将处理的值返回到你需要的地方。

3.一维数组举例p146

  1. 数组元素的赋值

  2. 数组元素中的最大值最小值、平均值总数

  3. 数组的复制、反转、查找(二分法查找,线性查找)

  4. 排序算法

1.赋值

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-TA8tAt7o-1650185449138)(C:\Users\Lucky\AppData\Roaming\Typora\typora-user-images\image-20211231155245624.png)]

package com.atguigu.exer;

public class ArrayDemo1 {
	public static void main(String[] args)
	{
		int[] array1,array2;
		array1=new int[] {2,3,5,7,11,13,17,19};
		for(int i=0;i<=array1.length;i++) {
		System.out.print(array1[i]+"\t");
		}
	array2 = array1;
	for(int i=0;i<array2.length;i++) {
		if(i%2==0) {
			array2[i]=i;
		 }
	}
	System.out.println();
	for(int i=0;i<=array1.length;i++) {
		System.out.print(array1[i]+"\t");
        }
	}
}
//数组的赋值
array2-=new int[array1.length];
for(i=o;i<array2.length;i++) {
array2[i]=array[1];

2.反转

//     三个变量转换
public static void main(String[] args){
		String[] array =new String[] {"aa","bb","cc","dd"};
	}
	{
		for (int i=0,j=array.length-1;i<j;i++,j--) {    //记得减一
			String temp=array[i];      					//三个变量转换
			array[i]=array[j];
			array[j]=temp;
		}
	}

3.线性查找

//线性查找
 // 1.二维数组  2.从后往前遍历  3.找到目标值退出
    public static void main(String[] args){
	String[] array =new String[] {"aa","bb","cc","dd"}; 
	String dest="bb";
	boolean IsFlag=true; //标志为真,如果找到为false
	for (int i=0;i<array.length;i++) {
		if(dest.equals(array[i])) {
			System.out.print("找到了指定位置"+i);
			IsFlag=false;   
  //isFlag是一个bool类型的值(只有false和true两种状态。‘可以理解为int型的0和1’),作为之后判断输出x为奇数或偶数的标志。
			break;
		}
	}
	if(isFlag) {
		System.out.print("没有找到");
	} 
  }
}

4.二分法查找 数组必须有序

int index=arrays.binarysearch(arr3,key);

//二分法查找
//从mid开始,确定左边/右边,再确定中间
public static void erfen(String[] args) {
    int[] arr2=new int[]{-98,-34,1,5,10,45,210};
    int dest=250;
    int begin=0;            //首索引
    int end=arr2.length-1;  //尾索引
    boolean isFlag=true;

    while (begin<end){
        int mid=begin+(begin+end)>>1; //中间索引
        if(dest==arr2[mid]){
            System.out.println("索引为"+mid);
            isFlag=false;    //进入改变值
            break;
        }
        else if(arr2[mid]>dest){  //中间值>目标值 =>左侧有序
            end=mid-1;
        }
        else {   //arr2[mid]<test
            begin=mid+1;
        }
    }
    
    if(isFlag){    
        System.out.println("没有找到哦");
    }
}

5.排序

  1. 时间复杂度

  2. 空间复杂度

  3. 稳定性:排序后次序保持不变则为稳定

交换排序:
冒泡排序、快速排序
1.冒泡排序:

从头开始,相邻比较 O(n*n)

class paixu{
    //冒泡排序 从小到大排序
    public static void main(String[] args) {
        int[] arr = new int[]{43, 32, 12, 22, 45, 65, 67};
        for (int i =0;i<arr.length-1;i++) {         //外层循环 长度减一
            for (int j=0;j<arr.length-1-i;j++) {    //内存循环从左到右  j-i个长
                if (arr[j]>arr[j + 1]) {
                    int temp = arr[j];
                    arr[j] = arr[j + 1];
                    arr[j + 1] = temp;    //交换
                    }
                }
            }
        System.out.println(Arrays.toString(arr));
        }
}
2.快速排序 O(nlog2n)

在这里插入图片描述

念叨叨:

本学习内容来源于【B站尚硅谷】,个人学习笔记。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值