前言1、认识java
java特点安装如何开发java源程序:执行过程编写源代码注意点:转义字符 2、数据类型,变量,运算符
数据类型的分类:命名规则变量的使用:运算符:运算符优先级 3、流程语句
1)if(三种)2)switch3)while(两种)4)for(两种)break,continue、return 4、数组
1)一维数组
注意:容易错误的定义格式 1)二维数组
前言接下来开始整理JAVASE的内容,因为数组前面的内容和很多语言基本相似,所以就用一章内容进行简单梳理一下,主要从面向对象之后开始进行笔记整理
1、认识java java特点Java具有简单性、面向对象、 分布式 、 健壮性 、 安全性 、平台独立与可移植性、 多线程 、动态性等特点 。
jvm:JVM是Java Virtual Machine(Java虚拟机)的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
jdk:JDK是Java Development Kit的缩写,是Java的开发工具包。
jre:JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用Java程序的用户。
如何安装…
配置环境变量…
编写源代码—>编译器将源代码翻译成class文件—>运行class文件.
命令: javac 源文件名 . java
java_类名
用Dos命令行执行(在相应的文件夹里) javac HelloWorld.java //产生class文件 java HelloWorld //执行文件 格式必须是这样,其他的报错执行过程
源代码Java文件经过
编译 生成class文件(字节码文件),只有这种文件才能被JVM运行。 加载 把文件加载到内存,然后读取字节流中的数据,将其存储到JVM方法区中 执行 寻找main()方法,对象实例会被放到java堆产生Java栈,然后进栈出栈编写源代码注意点:
源文件中可以包含多个类,但是最多只能有一个public修饰的类,而且public修饰的类的名字与源文件名保持一致,主方法一定在public修饰的类中。如果没有public修饰的类,文件名就与任意一个类型相同即可。
转义字符 2、数据类型,变量,运算符 数据类型的分类:基本数据类型:三类八种
整数:byte short int long
小数:float double . //float 定义变量时,后面要加f或者F,因为有小数点默认为double类型
非数值:char boolean //boolean 的false和true都为小写,容易记成大写
引用数据类型:除去八种基本数据类型外其他全部是引用数据类型
命名规则包含数字,字母,,$符号,但是开头不能是数字,不能是java中的关键字,尽量做到见名知意。
变量或方法命名:第一个单词首字母是小写的,后面单词首字母大写,满足驼峰命名规则(也有人习惯单词间用下划线分开,所有字母小写)
常量:所有字母大写,单词间用下划线分开
类或接口命名:每个单词首字母大写的,帕斯卡命名规则
包命名:全部小写
关键字:字母全部是小写的, java已经使用过的一-些单词。
字面值:true false null
保留字:goto const
声明,赋值(若未赋值,会自动赋默认值),才能使用[局部变量]
特别的:
静态变量static:
被static修饰的成员变量叫做静态变量。静态变量具有以下两个特征: a.静态变量的数据被本类中所有实例对象所共享; b.如果该静态变量的访问权限高于private,则该静态变量可通过“类名.变量名”直接访问。
常量final:
被final修饰的变量为常量,也就是一旦定义,之后修改便会报错。
运算符:算术运算符:+、-、*、/、%、++、–
关系运算符>、<、>=、<=、==、!=
逻辑运算符: &&、||、!
位运算符:<<、>>、>>>、^、&、|、~
int a = 60; int b = 13; int c = 0; c = a & b; // &并 按二进制都为1时为1 System.out.println("a & b = " + c );//输出:a & b = 12 c = a | b; //|或 按二进制有一个为1则为为一 System.out.println("a | b = " + c );//输出:a | b = 61 c = a ^ b; //不同为1 System.out.println("a ^ b = " + c ); c = ~a; //和原来相反(要凑齐四个一组) System.out.println("~a = " + c ); c = a << 2; //整体左移两位 System.out.println("a << 2 = " + c ); c = a >> 2; //整体右移两位 System.out.println("a >> 2 = " + c ); c = a >>> 2; System.out.println("a >>> 2 = " + c );
补充
表示右移,如果该数为正,则高位补0,若为负数,则高位补1;
表示无符号右移,也叫逻辑右移,即若该数为正,则高位补0,而若该数为负数,则右移后高位同样补0。
表达式为:
result = exp1 >> exp2;
result = exp2 >>> exp2;
表示把数exp1向右移动exp2位。
例如:
res = 20 >> 2;
20的二进制为 0001 0100,右移2位后为 0000 0101,则结果就为 res = 5;
res = -20 >> 2;
-20的二进制为其正数的补码加1,即 1110 1100,右移2位后为 1111 1011,结果为 res = 211;
而对于>>>符号而言:
res = 20 >>> 2; 的结果与 >> 相同;
res = -20 >>> 2;
-20的结果为 res = 59;即 1110 1100,右移2位后为 0011 1011
补充:
<< 是与>>对应的左移运算符,表示将exp1向左移动exp2位,在低位补0。其实,向左移动n位,就相当于乘以2^n。
左移没有<<<运算符!
三目(元)运算符(条件运算符): ( ? :)
赋值运算符:=、+=、-=、*=、/=、%=、<<=、>>=、&=、^=、|=
instanceof 运算符:instanceof(判断一个变量或引用类型是否属于一个类型)
运算符优先级 3、流程语句 1)if(三种)1、if()
2、if()…else…
3、if()…else if()… else…
2)switchswitch (变量){ case 值: break; case 值: break; default: break; }
注意:
1、等值判断
2、break用法
3、default
3)while(两种)1、while(){
}
2、do{
}while()
4)for(两种)1、类似:for(int i=0;i<10;i++){},分号分开的内容可以省,但一定要在其他地方体现
2、类似:for(int a:b),b为可迭代类型,比如数组
break,continue、returnbreak:结束此循环语句
continue:结束本次循环,进行下一次循环
return:结束此方法体
4、数组数组的长度一旦定义就无法改变,如果实际需要改变,可以考虑动态数组的思想,在算法与数据结构专栏有详细讲解 算法与数据结构_第二章 线性结构+顺序存储
1)一维数组定义的几种类型:
1:最常用 数据类型[] 数组名 = new 数据类型[长度]; 例:int[] age = new int[3]; 2: 数据类型[] 数组名; 数组名 = new 数据类型[长度]; 3: 数据类型[] 数组名 = {值,值,值} //提供几个值,该数组的长度就为几
查看数组长度:数组名.length;注意没有括号,这里总是容易和带括号搞混
Java中String类定义的字符串对象,用length()求它的长度。若是数组求长度,均可使用他们自己的属性length。即:数组不加,字符串要加 注意:容易错误的定义格式
错误一: int[] age; age = {1,2,3}; 错误二: int[] age = new int[3]; age = {1,2,3};1)二维数组
定义格式:
1、int[][] a = new int[2][3];//常用 2、int[][] a = new int[2][];//常用 3、int[][] a = {{1},{1,2},{2,3,4}};
这里画个图理解一下
定义了一个二维数组,在栈中保存的是地址,在堆中开辟了一块内存,这块内存也是来保存地址的,也就是int[][] a = new int[5][],创建的第一块内存,里面全是null。然后再进行a[0] = new int[4],就创建了第二块内存,这块内存来保存值,a[0]这里保存的就是后来开辟的这块内存的地址。这个理解了,一维也就好理解了。 二维数组可以理解为还是一维的数组,只不过,这个一维数组里面保存的是一维数组。 所以二维数组的长度是多少? 当然是前面[]里面的值。这就是举例的5 所以定义格式二,一定要有前面一个维度的大小,说明这个数组的长度是2,每一个值又保存了一个数组。所以二维数组中,每一维的长度可以不同,这里不同于c/c++。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)