java学习-0

  1. Java简单介绍
  2. 第一个程序Hello World
  3. 基本数据类型
  4. 对象和类
  5. 数据声明
  6. 函数声明
  7. 参数传递

Java简单介绍

  1. Java的优点:简单、可移植性
  2. JDK (Java Development Kit) Java开发工具包
  3. JRE (Java Runtime Environment) Java运行环境
    只要具有JRE,就可以运行Java代码,而与操作系统的类别无关
  4. 安装完JDK后,在电脑“编辑系统环境变量”---“环境变量”选项下,系统变量新建 变量名 JAVA_HONE 变量值 D:\Program Files\java\jdk-10.0.1(这是我的JDK位置) 系统变量找到Path变量,编辑新建D:\Program Files\java\jdk-10.0.1\bin
    之后在cmd 中测试命令 Java 和 Javac ,有东西输出之后就可以用Javac在cmd里编译Java程序了(生成.class文件),用Java [option] [主类名]就可以运行程序了(java HelloWorld 而不是 java HelloWorld.class)。

第一个程序 Hello World

public class HelloWorld{
    public static void main(String[] args){
        System.out.println("Hello World!");
    }
}

注意Java区分大小写,参数中的String的S必须大写。

基本数据类型

char
boolean
byte, short, int, long, float, double

char(字符型)

首先补充编码的知识
ASCII码(美国信息交换标准代码,7-bits ASCII码) 七位码,共128个字符,它主要用于显示现代英语和其他西欧语言。
GB2312,是中国国家标准的简体中文字符集,双字节字符集。
GBK,GBK字符集主要扩展了繁体中文字的支持,双字节字符集。
GB18030,GB 18030标准采用单字节、双字节和四字节三种方式对字符编码。
单字节部分使用0×00至0×7F码(对应于ASCII码的相应码)。
双字节部分,首字节码从0×81至0×FE,尾字节码位分别是0×40至0×7E和0×80至0×FE。
四字节部分采用GB/T 11383未采用的0×30到0×39作为对双字节编码扩充的后缀,这样扩充的四字节编码,其范围为0×81308130到0×FE39FE39。其中第一、三个字节编码码位均为0×81至0×FE,第二、四个字节编码码位均为0×30至0×39。
按照程序员的称呼,GB2312、GBK到GB18030都属于双字节字符集(DBCS)。
Unicode(万国码、统一码、单一码),16位,也就是两个字节代表一个字符。
UTF-8是一种8位的unicode字符集,编码长度是可变的,并且是ASCII字符集的严格超集,也就是说ASCII中每个字符的编码在UTF-8中是完全一样的。UTF-8字符集中,一个字符可能是1个字节,2个字节,3个字节或者4个字节长。一般来说,欧洲的字母字符长度为1到2个字节,而亚洲的大部分字符则是3个字节,附加字符为4个字节长。

更多关于编码参考文章http://blog.sina.com.cn/s/blog_4b4409c30100vw9t.html

在Java中采用Unicode编码,所以
char a = 'a';char b = '中'一样都占两个字节(区别于C和C++)
char c = '\u21fa'表示转义字符,格式为\u加上4位16进制数

boolean(布尔型)

只有true 和 false 两个值,区别于C和C++。
在C和C++中,bool类型可以用数字赋值,非零即为真,零为假。但在Java中只有boolean flag = true;boolean flag = false;

byte, short, int, long, float, double(数值型)

|类型|存储要求|取值范围|备注|
|:-|:-|:-|
|byte|1字节|-128~127||
|short|2字节|-32768~32767||
|int|4字节|超过21亿||
|long|8字节|很大很大|需要在数值后加后缀L|
|float|4字节|大约为±3.402E+38|需要在数值后加后缀F,有效位6~7位|
|double|8字节|大约为±1.797E+308|需要在数值后加后缀D,有效位15位|
float和double类型表示的的数值是离散的,可能有一些小数就是无法表示,只能为近似值。不加F后缀的浮点数值默认为double类型。
float和double不能做移位运算。整形移位运算相当于除或乘2的移的位数的次幂。-1在计算机中存储形式为全一,无论移多少位都不变。

对象和类

对象(哎)是现实世界中的一个实体。
类是具有相同特征的对象的属性的集合。

类的声明

[修饰符1][修饰符2][修饰符...]class Student
{
    int i; //类内的变量可以不用定义时赋值,数值变量系统默认赋值为零;逻辑变量boolean默认为false
    static int j = 1;
    ...
    public void Func(float[] f)
    {
        ...
        int i = 0; //函数内的变量随手赋值是个好习惯,不赋值的话,在内存中是暂时没有这个变量的
        ...
    }
    public static void main(String[] args)
    {
        ...
    }
    ...
}

类实例化为对象

Student s1 = new Student();
Student s2;
s2 = s1;
//一个对象变量没有实际包含一个对象,而仅仅是引用一个对象。
//new操作符返回的也是一个引用,即这个对象的存储地址。
//上面代码中的s2 = s1;仅仅是把s1保存的引用复制一份给s2,并没有复制这个对象
//可以将一个对象变量赋值为null,表明这个对象变量目前没有引用任何的对象
//如果一个对象没有任何的对象变量引用它,那么这个对象就成为垃圾对象,会被系统自动清理
//例如上面代码,如果添加s1 = null;那么这个对象不是垃圾对象,因为还有s2引用(指向)它。

数据声明

没什么好说的。[变量类型] [变量名] = [初始值];
说一些命名的规则和习惯吧(提高代码可读性)。

a. 必须是字母开头的由字母、数字、下划线组成的序列,区分大小写。虽然在命名可以使用$,但是不要使用。
b. 类名使用 UpperCamelCase(大驼峰) 风格,即每个单词首字母都要大写。
c. 方法名、参数名、成员变量、局部变量都统一使用 lowerCamelCase(小驼峰) 风格,即从第二个单词开始首字母大写。如:studentName
d. 常量命名全部大写,单词间用下划线隔开,力求语义表达完整清楚,不要嫌名字长。
e. 杜绝完全不规范的缩写, 避免望文不知义。
...

函数声明

[修饰符1][修饰符2][修饰符..] [函数返回值] [函数名](参数1,参数2,参数..) {函数体}

参数传递

Java的函数参数传递只有一种方法:传值(call by value)
java 成员变量(成员变量就是方法外部,类的内部定义的变量)存储在堆中的对象里面;局部变量就是方法或语句块内部定义的变量,局部变量必须初始化,局部变量的数据存在于栈内存中,栈内存中的局部变量随着方法的结束而出栈。

例子:

public class Card
{
    int rank;
    public static void swap1(Card c1,Card c2)
    {
        Card temp = c1;
        c1 = c2;
        c2 = temp;
    }
    public static void swap2(Card c1,Card c2)
    {
        int temp = c1.rank;
        c1.rank = c2.rank;
        c2.rank = temp;
    }
    public static void main(String[] args)
    {
        Card c1 = new Card();
        c1.rank = 5;
        Card c2 = new Card();
        c2.rank = 6;
        swap1(c1,c2);
        swap2(c1,c2);
    }
}

结果是swap1并没有实现数值交换;swap2实现了数值的变换。
分析:在main函数中,首先生成两个对象存储在堆中,并有引用变量c1,c2分别指向两个对象。在调用swap1,main函数的栈空间里复制c1,c2传递给函数,在函数中一波操作猛如虎,两个复制品的指向对象互换,然后函数结束,两个复制品出栈,然而原c1和c2的指向并没有改变。在swap2里,改的直接是存储在堆里的对象的变量,指向没有变化,但是内部的数值已经交换了。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 205,236评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,867评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,715评论 0 340
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,899评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,895评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,733评论 1 283
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,085评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,722评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,025评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,696评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,816评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,447评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,057评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,009评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,254评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,204评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,561评论 2 343

推荐阅读更多精彩内容