1. 数组
  2. 运算符
  3. 访问权限
  4. 修饰符

数组

1. 数组的声明:

int[] a;

2. 数组的创建

使用new运算符数组的创建int[] a = new int[100] 数组的长度不要求是常量:new int[n]会创建一个长度为n的数组

3. 数组的初始化

可以使用for循环进行赋值,或者直接int[] a = {1, 2, 3}进行赋值;数组创建时,数字数组所有元素初始化为0,Boolean数组所有元素初始化为false,对象数组则初始化为null值。

4. 数组长度

每一个数组都有成员属性length,使用a.length获得数组a的长度

5. 数组的遍历输出

a. 传统for循环

for(int i = 0; i < a.length; i++)
System.out.print(a[i] + " ");

b. for each循环

for(int element : a)
System.out.print(element + " ");
//对于在for循环语句中需要使用元素下标的程序来说不合适

c. 利用Arrays类的toString方法

System.out.println(Arrays.toString(a));
//a为数值型的数组或Boolean数组

6. 数组拷贝

int[] b = a;  //b和a引用同一个数组
b[1] = 7; //此时访问a[1]也是7

如果希望把一个数组的所有值拷贝到一个新的数组,使用Arrays类的copyOf方法

int[] b = Arrays.copyOf(a, a.length);

第二个参数表示新数组的长度,比原数组长,则多余的元素被赋值为0或者false或者null,比原数组短,则只复制前面的对应长度的元素。

方法Arrays.copyOfRange(type[] a, int start, int end)

type为int, short, byte, long, double, float, Boolean 类型

7. 数组排序

Arrays.sort(a);  //使用优化的快速排序

8. 多维数组

多维数组创建

int[][] a = new int[2][3]; //正确
int[][] b = new int[2][]; //正确, 第二维的长度可以动态申请,可以不同
int[][] c = new int[][3]; //错误

多维数组遍历

int[][] b = new int[2][];
for (int i = 0; i < b.length; i++) {
b[i] = new int[i + 1];
for (int j = 0; j < b[i].length; j++)
b[i][j] = i + j;
}
//第一种方式
for(int i = 0; i < a.length; i++)
for(int j = 0; j < a[i].length)
System.out.print(a[i][j] + " ");
//第二种方式
for (int[] row : b)
for (int value : row)
System.out.print(value + " ");
//第三种方式
System.out.println(Arrays.deepToString(b));

多维数组的每一行是可以通过引用进行交换的。


运算符

除法

float a = 12.3f;
int b = 5;
a = a / 0; //得到Infinity或者NaN
b = b / 0; //除零异常
System.out.println(a);

取模

int a = 5;
int b = -5;
a = a % 3;
b = b % 3;
System.out.println(a + "," + b); //2,-2
a = a % -3;
b = b % -3;
System.out.print(a + "," + b); //2,-2
/*求模运算的结果与左操作数符号相同,与右操作数符号无关*/

算术运算的结果不低于int型

byte a = 3;
byte b = 2;
b = a + b; //错误,a+b返回int型,int不能赋值给byte
b = (byte)(a + b); //正确,强制转换
b += a; //正确,b += a等价于b = (byte)(b + a)
int c = 7;
c = c + 5.2; //错误
c += 5.2; //正确

虚箭头表示可能有精度损失的转换,实箭头表示无信息丢失的转换。

基本数据类型的数组之间不能相互赋值,因为java中数组是类。

移位运算

<<左移,低位补0,移位中可能会出现符号变换

>>右移,高位补符号位

>>>无符号右移,高位补0

int a = 5;
// a >> 33等价于a >> 1,移的位数和数值类型的位数取模
byte b = 5;
// b >> 33等价于b >> 1,在b >> 33操作中,b自动提升为int型

~位反运算,每一位取反

位逻辑运算

位逻辑运算优先级 & ^ |

三目运算符?:的第二第三操作数必须是可以赋值的


一个类可以使用所属包中所有的类,以及其他包中的公有类。

访问其他包中公有类的两种方式:在每个类前添加完整的包名;使用import语句(放在源文件的顶部,package语句的后面)。

package语句对整个源文件有效,即同一个源文件里的所有类都属于这个包。


访问权限

//public
//private
//protected
//没有指定则为同包可访问

修饰符

static 静态修饰符

final 常量修饰符,也可以表示一个类不允许继承

public class A{
int i;
static int j; public static void main(String[] args){
i = 3; //错误,i只有在new了一个对象后才会存在
j = 7; //正确,j是静态的,不需要创建对象就存在
A a = new A();
a.i = 3; //正确
A.i = 3; //错误
A.j = 4; //正确,j是所有的A类对象所共有的,所以可以通过类名来访问
a.j = 4; //正确
}
}

Java学习-1的更多相关文章

  1. 0037 Java学习笔记-多线程-同步代码块、同步方法、同步锁

    什么是同步 在上一篇0036 Java学习笔记-多线程-创建线程的三种方式示例代码中,实现Runnable创建多条线程,输出中的结果中会有错误,比如一张票卖了两次,有的票没卖的情况,因为线程对象被多条 ...

  2. 0035 Java学习笔记-注解

    什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annot ...

  3. 分享篇——我的Java学习路线

    虽然之前我是开发出身,但是我学习的语言是Objective-c,这个语言使用起来范围比较窄,对于自动化学习来说也是无用武之地,所以我自己学习了Java,对于一个有开发经验的人来说学习一门新语言相对来说 ...

  4. Java学习笔记(04)

    Java学习笔记(04) 如有不对或不足的地方,请给出建议,谢谢! 一.对象 面向对象的核心:找合适的对象做合适的事情 面向对象的编程思想:尽可能的用计算机语言来描述现实生活中的事物 面向对象:侧重于 ...

  5. Java学习心得之 HttpClient的GET和POST请求

    作者:枫雪庭 出处:http://www.cnblogs.com/FengXueTing-px/ 欢迎转载 Java学习心得之 HttpClient的GET和POST请求 1. 前言2. GET请求3 ...

  6. 0032 Java学习笔记-类加载机制-初步

    JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹 ...

  7. 0030 Java学习笔记-面向对象-垃圾回收、(强、软、弱、虚)引用

    垃圾回收特点 垃圾:程序运行过程中,会为对象.数组等分配内存,运行过程中或结束后,这些对象可能就没用了,没有变量再指向它们,这时候,它们就成了垃圾,等着垃圾回收程序的回收再利用 Java的垃圾回收机制 ...

  8. 0028 Java学习笔记-面向对象-Lambda表达式

    匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ ...

  9. 0025 Java学习笔记-面向对象-final修饰符、不可变类

    final关键字可以用于何处 修饰类:该类不可被继承 修饰变量:该变量一经初始化就不能被重新赋值,即使该值跟初始化的值相同或者指向同一个对象,也不可以 类变量: 实例变量: 形参: 注意可以修饰形参 ...

  10. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

随机推荐

  1. 【Kafka源码】日志处理

    目前来说,kafka的日志中记录的内容比较多,具体的存储内容见这篇博客,写的比较好.可以看到,存储的内容还是比较多的,当存储文件比较大的时候,我们应该如何处理这些日志?下面我们通过kafka启动过程的 ...

  2. angularjs ui-grid cellTemplate checkbox ng-checked

    {     name: '@Localizer["ActiveInd"]',     field: 'ActiveInd',     enableSorting: false,   ...

  3. as3中xml文件的加载和读取

    ---恢复内容开始--- as代码如下: xml如下: 总结: 用URLReuqest对象加载xml的url 创建一个URLLoader对象,将1中的URLRequest指定给他 给URLLoader ...

  4. Visual Studio for Mac 安装无响应或者无法连接网络等解决方法

    1.无法连接到网络 2.点击安装和更新无响 这两种情况造成的原因都是由于被墙的原因,第一种情况有部分可以通过fq解决,第二种情况是我遇到过的 反正我全局也失败 这里给出一个我自己用过的解决方案 查看控 ...

  5. DWF Toolkit on Microsoft Windows

    If you are statically linking on Windows, you need these preprocessor defines: DWFTK_STATIC DWFTK_BU ...

  6. JD上市前内情:李彦宏雷军柳传志拷问刘强东

    这篇文章是京东上市前夕,在某个会议上刘强东与柳传志.李彦宏.雷军等大佬们的闭门交流实录,由于当时京东正值上市敏感期,文章没有被发出来,现在京东上市了,我想,大家可以看看几位商界大佬对刘强东的“犀利拷问 ...

  7. Java学习--java中的集合框架、Collection接口、list接口

    与数组相比:1.数组的长度固定,而集合的长度可变2.数组只能通过下表访问元素,类型固定,而有的集合可以通过任意类型查找所映射的具体对象 java集合框架:collection(list序列,queue ...

  8. html全局属性(收藏)

    HTML 属性赋予元素意义和语境. 下面的全局属性可用于任何 HTML 元素. 参考链接:http://www.w3school.com.cn/tags/html_ref_standardattrib ...

  9. poj 2417 Discrete Logging ---高次同余第一种类型。babystep_gaint_step

    Discrete Logging Time Limit: 5000MS   Memory Limit: 65536K Total Submissions: 2831   Accepted: 1391 ...

  10. J2EE企业级应用架构

    一.企业级应用架构解析 应用特点 多环境多系统的交互 海量数据.高并发[用户访问量].高TPS[每秒吞吐量] 安全等级高 自动化集群管理 架构原则 CAP原则(一致性[数据变动要同步].可用性[随着数 ...