只能以大小写字母、下划线、美元符号开头(大小写敏感)
Java强类型语言:所有变量必须先定义后使用
8种基本数据类型:
//整型 int num0=10;//最常用 byte num1=20; short num2=30; long num3=40L;//Long类型要在最后加个L //浮点型 float num4=50.1F//float 类型要在数字后加个F double num5=3.14159265358979; //字符 char name0='我';//只能单个字符 String name1="我们"//字符串String不是关键字,是类 //布尔值:是非 boolean flag=true; //boolean flag=flase;
引用类型:类,接口,数组(除了8基本数据类型其他都是引用类型)
最好完全避免使用浮点数(有限,离散,舍入误差,大约,接近但不等于)进行比较
强制类型转换(int/...),转义字符\n\t...
注意点:
变量:空间固定,内容不固定(就是个柜子,用来放东西)(本来存在,就是加了个标签,表示用来放特定的东西)
类变量:static,加这个的就是类变量,,从属于类
实例变量:类里面,方法外面,从属于对象(全局变量)
局部变量:必须声明和初始化值
final :修饰的,一般大写字母和下划线表示(修饰符不区分先后)
命名规范:
operator优先级()多用()更清楚
instanceof:判断一个对象是否是一个类的实例
包的本质就是文件夹,用来区别类名的命名空间
包语句的语法格式为:package pkg1【.pkg2【.pkg3...】】
为使用某一个包的成员,需要导入该包。用import可完成
import package1【.package2...】.(classname|*);
.*是通类符导入该包所有东西
一般用公司域名倒置做包名
javaDoc命令是用来生成自己API文档的
参数信息:
利用命令行生成文档:
javadoc -encoding UTF-8 -charset UTF-8 类名.java
IDEA生成javaDoc文档
工具类:java.util.Scanner
可以通过Scanner对象获取用户的输入
基本语法:Scanner s=new Scanner(System.in);
通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取之前一般需使用hasNext()与hasNextLine()判断是否还有输入的数据。
程序按着顺序依次执行(从上到下,从左到右)
if单选择结构、if双选择结构、if多选择结构、嵌套的if结构、switch多选择结构(不加break会有case穿透现象)
if(布尔表达式){ //如果布尔表达式的值为true }else{ //如果布尔表达式的值为false }
if(布尔表达式1){ //如果布尔表达式1的值为true执行代码 }else if(布尔表达式 2){ //如果布尔表达式2的值为true执行代码 }else if(布尔表达式 3){ //如果布尔表达式3的值为true执行代码 }else{ ////如果以上布尔表达式都不为true执行代码 }
switch(expression){ case value: //语句 break;//可选 case value: //语句 break;//可选 //任意数量的case语句 default://可选 //语句 }
while循环
while(布尔表达式){ //循环内容 }
do...while循环
do{ //代码语句 }while(布尔表达式);
for循环
for循环执行的次数是在执行前就确定的
for循环语句是支持迭代的一种通用结构,是最有效、最灵活的循环结构。
for(初始化;布尔表达式;更新){ //代码语句 } 100.for+回车自动生成循环(idea)
增强for循环
主要用于数组或集合的增强型for循环
for(声明语句:表达式) { //代码句子 }
声明语句:声明新的局部变量,该变量的类型必须和数组元素的类型匹配。其作用域限定在循环语句块,其值与此时数组元素的值相等。
表达式:表达式是要访问的数组名,或者是返回值为数组的方法。
public class D08 { public static void main(String[] args) { int[] number={10,20,30,40,50}; for(int x:number){ System.out.print(x+"\t"); } } /*for(int i=5;i<5;i++){ sout(number[i]); }*/ }
break:在任何循环语句的主体部分,break用于强行退出循环,不执行循环中剩余的语句。
continue:用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定
(不用看破环了局部性原则)goto:仍是Java的保留字,但不用有goto的影子(带标签的break和continue)
标签是指后面跟一个冒号的标识符,例如:label:
对Java来说唯一用到标签的地方是在循环语句之前。而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常指中断当前循环,但若随通标签使用,他们就会中断到存在标签的地方。
类.对象.方法()
System.out.println()
方法:是语句的集合,他们在一起执行一个功能。本意是功能块,就是实现某个功能的语句块的集合。我们设计方法的时候,最好保持方法的原子性,就是一个方法只完成一个功能,这样有利于后期的扩展。 方法包含一个方法头和一个方法体
修饰符 返回值类型 方法名(参数类型 参数名){ ... 方法体 ... return 返回值;//return 0;表示终止方法 }
方法调用:对象名.方法名(实参列表)
java支持两种调用方法的方式,根据方法是否返回值来选择。
当方法返回一个值的时候,方法调用通常被当作一个值。
int larger =max(30,40);
如果方法返回值是void,方法调用一定是一条语句
System.out.println("Hello hahaha");
java是值传递(值传递和引用传递的区别)
方法的重载:重载就是在一个类中,有相同的函数名称,但形参不同的参数。
重载的规则:
实现理论:方法名称相同时,编译器会根据调用方法的参数个数、参数类型等去逐个匹配,以选择对应的方法,如果匹配失败,则编译器报错。
重写:(Override)返回值类型和参数不变(在继承关系里面)
重载:(Overload)方法名相同,参数列表不同,返回值类型可以相同也可以不同 外壳(方法名,参数)发生了改变(在本类)
在方法声明中,在指定参数类型后加一个省略号(...)
一个方法中只能指定一个可变参数,它必须是方法的最后一个参数。任何普通的参数必须在它之前声明。
public static void main(String []args){ printMax(34,3,3,2,56.5); printMax(new double[]{1,2,3}); public static void printMax(double... numbers){ ... 方法体 ... } }
递归:自己调用自己
思想:利用递归可以用简单的程序来解决一些复杂的问题。它通常把一个大型的复杂问题层层转化为一个与原问题相似的规模较小的问题求解,递归策略只需少量的程序就可以描述出解题过程所需要的多次重复计算,大大减少了程序的代码量。递归的能力在于用有限的语句来定义对象的无限集合。
递归结构包括两个部分:
首先必须声明数组变量,才能在程序中使用数组。
dataType[] arrayRefVar;//首选方法 或 dataType arrayRefVar[];//效果相同,但不是首选方法
java语言使用new操作符来创建数组
dataType[] arrayRefVar =new dataType[arraySize;]
数组的元素是通过索引访问的,数组索引从0开始
获取数组长度:
arrays.length
栈存放的地址指向堆存放的值
int[] a={1,2,3}; Man[] mans={new Man(1,1),new Man(2,2)};
int[] a=new int[2]; a[0]=1; a[1]=2;
数组是引用类型,他的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化
下标的合法区间:[0,length-1]
数组的四个基本特点:
小结: