JAVA学习笔记(基础知识)

学习参考书:JAVA从入门到精通(第五版)
持续更新中~~~

目录

Java语言的特性

JAVA语言基础

流程控制

字符串

数组

类和对象


Java语言的特性

面向对象:是JAVA语言的重要特性,语法中不能在类外定义单独的数据和函数
分布性:操作分布于数据分布
多线程
动态

JAVA语言基础

Java程序中的主方法main()方法必须声明为public static void ,main()是程序开始执行的位置。

Java语言严格区分大小写

Java语言规定标识符由任意顺序的字母、下划线、美元符号和数字组成,并且第一个字符不能是数字,且关键字不能当做标识符使用

常量:在程序运行过程中一直不会改变的两,常量只能被赋值一次    final 数据类型 常量名称(通常用大写字母表示)[=值]
           
当定义的final变量属于成员变量时,必须在定义时就设定它的初值,否则编译会出错

变量的有效范围:根据变量的有效范围,可以将变量分为局部变量成员变量
            成员变量:在类体中定义的变量,成员变量在整个类中都有效,成员变量又可以分为实例变量和静态变量
                              静态变量:成员变量的类型前面加上关键字static,其有效范围可以跨类,可以直接以“类名.静态变量”的方式在其他类中使用
                              实例变量:
            局部变量:在类的方法体中定义的变量,只能在当前定义的方法内使用,不能用于其他类的方法中
            局部变量可与成员变量的名字相同,此时成员变量将被隐藏,即这个成员变量在此方法中暂时失效
 

public class Val{
    static int times=3;
    public static void main(String[] args){
        int times=4;
        System.out.println(times);
    }
}

运算符 
     
逻辑运算符&会判断两个表达式;而&&先判断第一个,若第一个表达式为FALSE,则不去判断第二个表达式,直接输出结果节省计算次数。
     下表中优先级上行优先于下行
 

                        

数据类型转换:数据类型按精度从低到高的排列顺序为byte<short<int<long<float<double

代码注释规范://单行注释      /* */多行注释(可嵌套单行注释)   /** */文档注释

 

流程控制


      switch语句表达式的值必须是整型、字符型或者字符串类型,首先计算表达式的值,若该值与某个case后面的值相同,则执行该case语句后的若干语句,直到遇到break语句为止。若该case语句中没有break语句,则继续执行后面case语句中的若干语句,直到遇到break语句为止。
      若case后面的值均与表达式不符,则执行default后的语句,若不存在default,则switch不作任何处理。
      foreach
      定义:foreach又叫做增强for循环,相当于for循环的简化版,因此在一些较复杂的循环中不适用。
      结构:foreach(元素类型 元素名称:循环对象(数组、集合)){
                           循环语句    
                            }
      特点:foreach在循环次数未知或者计算起来较复杂的情况下效率比for循环高。
      foreach与for循环的明显差别在于foreach循环时循环对象(数组、集合)被锁定,不能对循环对象中的内容进行增删改操作。
      ————————————————
      关于foreach详情请参照原文链接:https://blog.csdn.net/qq_39995253/article/details/82790228

字符串

          判断字符串是否相等,“==”比较运算符比较的是两个字符串的地址是否相同,要比较其内容是否相同应使用equals()区分大小写和equalsIgnoreCase()忽略大小写
          字符串操作相关的函数
               获取字符串的长度   str.length()
               字符串查找    str.indexOf(String s)    str.lastIndexOf(String s)
               获取指定索引位置的字符 str.charAt(int index)
               获取子字符串 str.substring(int beginIndex,int endIndex)
               去除字符串中空格 str.trim()
               字符串替换 str.replace(char oldChar,char newChar)
               判断字符串的开始与结尾 str.startsWith(String prefix)   str.endsWith(String suffix)
               判断字符串是否相等  equals()  equalsIgnoreCase()
               字符串比较  str.compareTo(String otherstr)
               字母大小写转换  str.toLowerCase()     str.toUpperCase()  
               字符串分割  str.split(String sign分隔符, int limit分割次数)
               格式化字符串 str.format(Local l 语言环境, String format格式字符串, Object....args格式说明符引用的参数)  如:String s=String.format("%d",400/2)
               正则表达式
               
字符串生成器  StringBuilder builder=new StringBuilder() 可以减少因频繁改动字符串带来的系统开支   
                                       追加内容append(content)   插入insert(int offset位置,arg内容)    删除delete(int start,int end)

数组

           int m[]=new int[20]
           int a[][]=new int[3][4]        int myarr[][]={{12,0},{45,10}}
           对于二维数组,myarr[].length表示该数组的行数,myarr[i].length表示第i行的列数
   数组操作相关的函数
          import java.util.Arrays;
          
填充替换数组元素  Arrays.fill(int[] a ,int fromIndex包含 ,int toIndex不包含 ,int value)将int型数据分配给数组指定范围中的每个元素,若不标记起止位置则分配给数组的      每个元素
          对数组进行排序 Arrays.sort(arr)
          复制数组  Arrays.copyOf(arr, int newlength) 若新数组的长度大于原始数组,用0填充
                          Arrays.copyOfRange(arr, int fromIndex包含 ,int toIndex不包含)
          数组查询  Arrays.binarySearch(Object[] a, int fromIndex包含 ,int toIndex不包含, key)  在指定范围内检索key元素的位置,若无起止位置则全数组进行索引

类和对象

   面向对象程序设计有以下特点:
   1、封装性
        类是封装对象属性和行为的载体,可避免外部操作对内部数据的影响,提高程序的可维护性。
   2、继承性
        继承性主要利用特定对象之间的共有属性,一个类处于继承体系中,它既可以是其他类的父类,也可以是其他类的子类
   3、多态性
        将父类对象应用于子类的特征就是多态  抽象类和接口

  类:
     
在成员方法中可以调用其他成员方法和类成员变量
     权限修饰符     类的权限设定会约束类成员的权限设定

访问包位置

类修饰符

Private

Projected

Public

本类

可见

可见

可见

同包其他类或子类

不可见

可见

可见

其他包的类或子类

不可见

不可见

可见

局部变量
  局部变量在使用时必须进行赋值操作或被初始化,否则会出现编译错误

this关键字
  this关键字可以调用成员变量和成员方法,还可以作为方法的返回值,在定义Book类型的方法时,可以在方法体重使用return this这种形式将Book类的对象进行返回
  当局部变量或方法参数覆盖成员变量时,就要添加this关键字明确引用的是类成员还是局部变量或方法参数

类的构造方法
  在类中,除了成员方法还有一种特殊类型的方法,就是构造方法。构造方法是一种与类同名的方法,对象的创建就是通过构造方法完成的,每当类实例化一个对象是,类都会自动调用构造方法。
  构造方法的特点:构造方法没有返回值、构造方法的名称与本类名称相同
  在构造方法中可以给成员变量赋值,这样当实例化一个本类对象时,相应的成员变量也将被初始化
  如果类中没有明确定义的构造方法,编译器会自动创建一个不带参数的默认构造方法
  
  如下代码所示,this关键字也可以调用类中的构造方法,在无参数构造方法中可以使用this关键字调用有参数构造方法,但是用这种方式需要注意的是只可以在无参数构造方法中的第一句使用this关键字调用有参数构造方法。

public class AnyThting{
    public AnyThting(){
        this("this调用有参数构造方法");
        System.out.println("无参数构造方法");
    }
    
    public AnyThting(String name){
        System.out.println("有参数构造方法");
    }
}

静态变量、常量和方法
  静态数据与静态方法的作用通常是为了提供共享数据或方法,以static声明并实现,当需要使用时,直接以“类名.静态成员”的方式调用即可。
  静态成员同样遵循public、private、protected修饰符的约束
  规定:在静态方法中不可以使用This关键字、在静态方法中不可以直接调用非静态方法;
             在JAVA中规定不能将方法体内的局部变量声明为static
  如果在执行类时,希望先执行类的初始化动作,可以用static定义一个静态区域,如下代码所示,当这段代码被执行时首先执行static块中的程序,且只会执行一次
 

public class example{
    static{
        //some
    }
}

类的主方法
主方法是静态的,所以如果在主方法中直接调用其他方法,则方法必须也是静态的
主方法没有返回值
主方法的形参为数组,可以使用args.length获取参数个数

对象
  类名  对象名=new 类名()
  引用只是存放一个对象的内存地址
 

public class CreatObject {
	static int i=47;
	public CreatObject() {
		
	}
	public void PrintId() {
		System.out.println("调用PrintId方法");
		for(i=0;i<3;i++) {
			System.out.println(i+" ");
			if(i==2) {
				System.out.println("\n");
			}
		}	
	}
	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		CreatObject t1=new CreatObject();
		CreatObject t2=new CreatObject();
		t2.i=60;
		System.out.println("第一个实例对象调用变量i的结果"+t1.i++);
		t1.PrintId();
		System.out.println("第二个实例对象调用变量i的结果"+t2.i);
		t2.PrintId();
	}
}

 
使用静态成员变量,实例化对象共享一块内存而不是相互独立的

程序调试Tips:
    设置断点逐步查看程序运行情况,在运行过程中想要查看某个变量值的变化情况,可选中该变量通过shift+ctrl+i来查看变量值
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值