标签:知识点 java int 数据类型 运算符 二维 数组 Java
目录
前言
接下来开始整理JAVASE的内容,因为数组前面的内容和很多语言基本相似,所以就用一章内容进行简单梳理一下,主要从面向对象之后开始进行笔记整理
1、认识java
java特点
Java具有简单性、面向对象、 分布式 、 健壮性 、 安全性 、平台独立与可移植性、 多线程 、动态性等特点 。
jvm:JVM是Java Virtual Machine(Java虚拟机)的缩写,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。
jdk:JDK是Java Development Kit的缩写,是Java的开发工具包。
jre:JRE是Java运行环境,并不是一个开发环境,所以没有包含任何开发工具(如编译器和调试器),只是针对于使用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; /* 60 = 0011 1100 */
int b = 13; /* 13 = 0000 1101 */
int c = 0;
c = a & b; /* 12 = 0000 1100 */ // &并 按二进制都为1时为1
System.out.println("a & b = " + c );//输出:a & b = 12
c = a | b; /* 61 = 0011 1101 */ //|或 按二进制有一个为1则为为一
System.out.println("a | b = " + c );//输出:a | b = 61
c = a ^ b; /* 49 = 0011 0001 */ //不同为1
System.out.println("a ^ b = " + c );
c = ~a; /*-61 = 1100 0011 */ //和原来相反(要凑齐四个一组)
System.out.println("~a = " + c );
c = a << 2; /* 240 = 1111 0000 */ //整体左移两位
System.out.println("a << 2 = " + c );
c = a >> 2; /* 15 = 1111 */ //整体右移两位
System.out.println("a >> 2 = " + c );
c = a >>> 2; /* 15 = 0000 1111 */
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)switch
switch (变量){
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、return
break:结束此循环语句
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++。
标签:知识点,java,int,数据类型,运算符,二维,数组,Java 来源: https://blog.csdn.net/Ningmengyouzhi/article/details/122537729
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。