JAVA笔记(2)变量初始化,数组,包,继承,修饰符
变量初始化
未初始化的变量不能被使用。声明一个对象时要为他分配内存
Object obj=new Object();
int对象初始化时要为他指定内存。
int i = 10;
int[] a = new int [10];
对象组:
Object[] obj=Object[10];//创建对象指针组。指向地址
for(int i=0;i<10;i++)obj[i]=new Object //为对象指针组分配内存。
对象组内的变量在内存中不是连续的。
任何数组对象都有一个成员变量都有.length成员,存有数组的长度。
obj[i].length;
二位数组的声明和初始化
int[][] a=new int[2][3];//创建二维矩阵数组
for(int i=0;i<a.length;i++){
for(int j=0;j<a[i].length;j++)a[i][j]=9;
}int[][] a = new int a[2][];//1、可以是不同长度 2、数组生成时必须指定长度。
a[0]=new int [5];
a[1]=new int [6];
运算符
运算符:一元二元三元。算数关系逻辑。
a+b;
a-b;
a*b;
a/b;
a%b//和被除数符号位一致,和被除数符号位无关。
a++;
a--;//自增自减
算术运算的结果的类型不能低于int类型。低于Int类型的数据自动提升为int。
byte b=0;
byte b1=6;
byte b2=6;
b=b1+b2;//错误
int i=0;
i=b1+b2;//正确
b=(byte)(b1+b2);//正确
强制转化运算:砍掉多余的字节。
int i=1000;
byte b=(byte) i ;//i=-24
浮点数转化为整数:砍掉小数
x = x op y;
x op = y;byte x=0,y=1;
x=x+y;//编译错误提升类型为了int
x+=y; //不会出错。会进行强制数据类型转化。
小类型可以赋值给大类型,但是大类型给小类型赋值就会报错。
大小关系从小到大:byte short int long float double
byte[] i...;
int[] j...;
i=j;//报错
j=i;//报错
位移运算
>>//右移
<<//左移
>>>//无符号移位。符号位永远都补0
左移有可能改变符号位(溢出)。
int i=...;
i>>33;
i>>1;
结果相等。虚拟机会将33%32后对i进行移位
逻辑运算 优先级低于算术运算
与或非,位反运算。
i=~i;//每个比特位取反后加1
优先级
&>^>|
&& , || 只接受boolean类型的数据。
短路的运算符:
function_a() && function_b()
当function_a()为假,就不会解析function_b()可以理解为function_b()不会运行。
三元运算符
a?4:4.5
//整个表达式的类型由后面两个操作数最大的类型来确定。上面的表达式返回范围在{4.0,4.5}之中。
命名冲突
//可以定义包来解决命名冲突的问题。
package a;
a.Object;
//对类的名称进行了延长
包名冗余:多层包结构
import a,b,c.Student;
//在类声明之前在package之后
java,javax是java官方定义的包名前缀
声明包名时不能用java和javax开头
import java.util.*;
import java.io.*;
import java.net.*;
import java.sql.*;class A{java.util.date;
}
在源文件时声明包:
package a;
public class Helloworld{public static void main(string arg[]){System.out.println("hello world ");}
}
公开类保存为文件时,文件名必须和类名一致。
以上文件编译时必须加上javac -d选项。不加这个会丢失包的信息。结果就是找不到这个包
>javac Helloworld -d+文件夹名,缺省则存在当前目录。
>java a.Helloworld
文件夹的好处:1、存放同名文件,2、名称分类管理。
包的作用与之类似。
编译时编译器会将包的信息将转化为文件夹的层次结构。
path 变量:可执行程序的搜索目录。
所有包名小写。
javac xxx.java -d -classpath (-c)
//-classpath 用来导入类路径分隔符用分号(windows),ubuntu 苹果用冒号。
java文件在发布时用的是.jar文件。
用jar命令打包
继承
java只有公有继承,子类继承父类的一切特征。并且是单一继承
//默认java.lang.Object为所有类的基类。//java.lang为java的原包,自动导入。
访问权限
//访问权限 private public protect
//没有对应的修饰符为同包权限。
package a;
class student{private int age;//只能在类体中访问char[] TeacherName;
}
class teacher{//可以访问TeacherName;
}
保护权限:
public class teacher{protected float money;
}
//同包可访问,派生类可访问。
派生用extends关键字。
protected 只能用子类名来访问父类中的某个成员。
不能直接用父类的名来访问。
public class boss extends teacher{public static main(string arg[]){teacher t=new teacher();t.money++;//报错boss b=new boss();b.money ++;//正确}
}
同包权限:
class A{int i=new int;
}//只能在这个中访问
修饰符
final
final int i;
i=5;
//之后再不能对i赋值
final后跟初始值,可以用来修饰变量也可以用来修饰类,修饰符之间没有顺序要求
final class A{//A没有子类final void a(){//a不允许被覆盖}
}
static
class student{static int ClassNum;//与任何实例无关,有无对象存在ClassNum有一只存在。(类共享)//要通过类名来访问类的静态成员。相当于全局变量。
}
System.out=null;//错误
//System.out 是final不允许改值,可以通过类名访问,所以是static public
JAVA笔记(2)变量初始化,数组,包,继承,修饰符相关推荐
- 静态成员调用java,Java 反射 静态变量 静态方法 静态成员 调用 获取修饰符 判断是否为静态...
当使用Java反射机制操作类成员时,传入对象的参数改成传入null package com.zuozuo.test; import java.lang.reflect.Field; import ja ...
- Java中静态变量与静态方法的继承
看下面的代码: public class Demo {public static void main(String[] args) {// 子类SonB继承父类Father,子类可以获取父类的所有属性 ...
- JAVA基础-栈与堆,static、final修饰符、内部类和Java内存分配
JAVA基础-栈与堆,static.final修饰符.内部类和Java内存分配 发布时间: 2013/01/12 22:29 QQ空间 新浪微博 腾讯微博 人人网 豆瓣网 百度空间 百度搜藏 开心网 ...
- 面向对象4(匿名对象、内部类、包、修饰符、代码块)
1.匿名对象 指在创建对象的时候,只有创建语句,没将对象地址赋值给某个变量 new Person(); 1.1 特点 1.创建时,可直接使用,没有变量名 new Person().eat(); 2.匿 ...
- C++基础学习(02)--(数据类型,变量类型,变量作用域,常量,修饰符类型)
文章目录 目录 一. 数据类型 C++ 中的数据类型 typedef enumeration枚举类型 c++中变量类型 二.变量作用域 三.常量 四.修饰符类型 目录 一. 数据类型 C++ 中的数据 ...
- 《Java SE实战指南》10-01:特性修饰符概述
内容导航: 前言 1.定义 2.使用场景 前言 通过前面的学习,我们基本掌握了Java编程语言中项目结构.类结构和对象.词法结构,还学习了访问级别修饰符.数据类型.运算符.流程控制等基础知识,接下来, ...
- 读thinking in java笔记(四):初始化
随着计算革命的发展,"不安全"的编程方式已逐渐成为编程代价高昂的主因之一. 初始化和清理(cleanup)正是涉及安全的两个问题.许多C程序的错误都源于程序员忘记初 ...
- Java笔记017-类变量和类方法、理解main方法语法、代码块、单例设计模式、final关键字
目录 面向对象编程(高级部分) 类变量和类方法 类变量-提出问题 传统方法解决 问题分析: 类变量快速入门 类变量内存布局 什么是类变量 如何定义类变量定义语法: 如何访问类变量 定义语法: 类变量使 ...
- Java类中变量初始化顺序
下面代码显示了静态初始化代码块,非静态实例初始化代码块,构造函数 等在Java中从代码载入内存到代码执行过程的执行顺序: import static net.mindview.util.Print.* ...
最新文章
- CentOS 7安装fail2ban+Firewalld防止SSH爆破
- python算法与数据结构-选择排序算法
- 机器学习-回归之逻辑回归算法原理及实战
- mysql表的视图怎么建立_MySQL如何创建视图
- 云片短信php接口_php与阿里云短信接口接入
- VC++ 6.0(英文正版)安装及其编译注意事项
- keyevent 封装_adb shell input keyevent 控制按键输入的数值(收藏版)
- 验证输入是否满足条件
- 水晶报表基础入门——6.交叉报表设计技术
- 如何在Mac上自定义控制中心
- python好看的绘图_【Python教程】绘制漂亮的柱状图
- 面试必掌握的Mysql的11个问题
- JAVA集合容器源码解析
- 对于quartz定时任务设置结束时间
- [找规律] 三角形个数(牛客+找规律+思维+代码优化)
- 【转】Excel 使用技巧集锦——163种技巧
- GGSN与SGSN简介
- 解决虚拟机下光标闪烁问题
- PIM SM RP控制原理与实验
- sqlzoo-day7
热门文章
- 华为荣耀Linux笔记本评测,华为荣耀MagicBook Pro评测~~已使用半年!!!
- wamp3.0.6配置https + Nginx转发 + 满足微信小程序的接口调用域名
- 仿网易音乐听歌识曲-麦克风动画
- 高德地图模拟行车轨迹效果
- 是神话还是泡沫?“千元难求”片仔癀大股东首次减持,传递什么信号?
- 华为海思家族再添新成员:麒麟980规格亮相!!!
- uniapp自定义的tabbar切换页面时不加载onload、onshow问题
- 考研英语 小作文模板
- 邮箱自动回复设置(软件使用)
- 英雄联盟怎么解除小窗口_英雄联盟手游劫怎么出装-英雄联盟手游劫出装推荐...