一:java概述:

1982年,SUN公司诞生于美国斯坦福大学校园,并于1986年上市,在NASDAQ(纳斯达克:是全美证券商协会自动报价系统)的标识为SUNW,2007年改为JAVA。

2009年4,美国数据软件巨头甲骨文公司(Oracle)宣布以74亿美元收购SUN公司,从此Java归属于甲骨文公司。

1999年SUN公司发布了基于Java的三个平台技术标准:J2SE,J2EE,J2ME。

2005年开始分别改名为:JavaSE,JavaEE,JavaME。

二:配置java环境:

JDK:Java Development Kit,java的开发和运行环境。
JRE:Java Runtime Environment,java程序所处的运行环境。
Java虚拟机(Java Virtual Machine),简称JVM,它是运行所有Java程序的虚拟计算机,好比是街机游戏的模拟器。JVM是Java程序的解释和执行器。
步骤:

  1. 安装JDK,去JDK的官网下载(不要下载最新版本,尽量使用比低版本低一个版本的JDK,以达到兼容绝大多数设备)。
  2. 配置PATH环境变量
  3. 安装IDE工具(Myeclipse/eclipse)

三:java语法基础:

1.java的命名规则

帕斯卡命名法: 首单词的首字母大写,后续所有单词首字母也大写。类、接口、枚举。
 驼峰命名法:   首单词的首字母小写,后续所有单词首字母大写。方法名、变量名。
 包名:         网址倒写,com.网址.工程.包名,所有字母小写。

2.常量:是在程序中的不会变化的数据。经常用关键字final定义。

3.变量:其实就是内存中的一个存储空间,用于存储常量数据。(可以重复使用使用)。

4.标识符:在写代码的时候为了增强代码的阅读性会自定义很多名字,比如:类名,方法名,变量名等。
标识符命名规则:

  1. 由字母、数字、下划线、$组成,不能以数字开头。
  2. 不得使用java中的关键字和保留字。
  3. 不用Java中以已经定义好的类名作为自己的类名。

5.数据类型

  基本数据类型:按值传递,传递复本,修改复本不会影响原数据。

  引用数据类型:按引用传递,传递的是指针,如果修改会影响原有数据。

  基本数据类型:Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

 

引用数据类型:除了8种基本数据类型,其他绝大多数都为引用数据类型,包括类、接口、数组。引用数据类型默认初始值都是null。

6.基本数据类型之间的转换

整型、实型(常量)、字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算。
数据类型转换必须满足如下规则:
1. 不能对boolean类型进行类型转换。
2. 不能把对象类型转换成不相关类的对象。
3. 在把容量大的类型转换为容量小的类型时必须使用强制类型转换。
4. 转换过程中可能导致溢出或损失精度。
5. 浮点数到整数的转换是通过舍弃小数得到,而不是四舍五入。

注意:在8大基本数据类型中,boolean不属于数值类型,不参与转换.

隐式转换:当把数据范围较小的数据赋给另一个数据范围较大的类型的时候,Java可以自动进行类型转型。

强制转换:当把数据范围较大的数据赋给另一个数据范围较小的类型的时候,此时Java不再能自动转换,需要在数据前边强制加上要转换的类型的名称。

6.Java的运算符

分为四类:
算数运算符、关系运算符、逻辑运算符、位运算符。
算数运算符(9个):+ , - , *  ,/, % , ++ , --(加,减,乘,除,取余,加1,减1)
关系运算符(6个):==,  !=  ,>,  >= , < , <= (等于,不等于,大于,大于等于,小于,小于等于)
逻辑运算符(6个):&&,  ||  ,! , ^,  & , |      (与,或,非,异或,逻辑与,逻辑或)
位运算符(6个):&  |  ~  ^  >>  <<                 (位与,位或,位非,位异或,右移,左移)

其中算术运算符和关系运算符比较简单,和我们在数学中的是一样的算法和优先级(先算乘除再算加减,有括号的先算括号里面的)。


逻辑运算符:

    &&  短路与  两边都为真才是true ,但如果左边为假,右边条件不再计算也不再关注
      ||     左右两边一个为真即为真
      !      非 也叫取反 ,右边为真结果为假,右边为假结果为真
      &     按位与    先将左右两边的表达式转化成二进制数后分别按每一位进行与操作,假假为假,真真为真,将与操作的结果的二进制数转化成十进制
      "++"和"--"用于数值变量之前,在赋值操作中,先对被”++“或”--“操作变量值先加1或者先减1,然后在进行其他的操作;
      "++"和”--“用于数值变量之后,在赋值操作中,先用被”++“或”--“的操作变量值进行其他的操作,然后在对其值加1或者减1。

位运算符:不常用,这里就不详述。

三元运算符  
  格式: 表达式?值1:值2    如果表达式为真,取值1,表达式为假,取值2。

7.Java 分支结构 - if...else/switch

  分支结构有两种:if和switch。

    其中if分为if...else 和 if...else if ...else结构。

    swich只有一种,即swcih..case

  1. if语法:条件为true或者false
  2. if(条件){
  3. 语句;
  4. }else
  5.   语句;
  6.  
  7. if..else if ....else 语法:
  8. if(条件){
  9.     语句;
  10.   }else if(条件){
  11.     语句;
  12.   }else
  13.     语句;
  14.   
  15.  
  16. swich语法:表达式为变量的判断值
  17. switch(整型表达式){
  18. case A:
  19. 表达式结果等于A时,执行此语句;
  20. break
  21. case B:
  22. 表达式结果等于B时,执行此语句;
  23. break
  24. default:
  25. 以上值都不满足时,执行此语句;
  26. break

8.Java 循环结构 - for, while 及 do...while

                     

    while循环                         do..while循环                    for循环

while循环和do..while循环大部分情况下用于不确定循环次数的死循环,但是do..while循环必须先执行一遍循环后再进行判断,然后再决定走不走循环,而while循环则是先判断后循环。

for循环用于限定次数的循环。因此绝大多数下使用for循环进行循环遍历。

  1.  
  2. while循环语句:
  3. while (条件 {
  4. 循环语句;
  5. }
  6.  
  7. do..while循环语句:
  8. do {
  9. 循环语句;
  10. } while (条件);
  11.  
  12. for循环语句:
  13. for (int i = 0; i < args.length; i++) {//初始值,循环次数,循环增加(减少)
  14. 循环语句;
  15. }

注意:嵌套循环时,输出图形的时候外层代表行,里层代表列。

  1. package com.jianglai.day02and03;
  2.  
  3. public class Demo07 {
  4.  
  5. public static void main(String[] args) {
  6.  
  7. /**
  8. * [图形题做题思路]
  9. * 外层循环控制行数,内层循环控制每行中元素的个数。
  10. *
  11. * ① 确定有几行, 这就是外层循环的次数
  12. * ② 确定每行中有几种元素, 这就是内层循环的个数
  13. * ③ 找出每行中每种元素,与行号之间的关系; 这就是每个小循环的循环次数。
  14. */
  15. /**
  16. *
  17. ***
  18. *****
  19. *******
  20. *********
  21.  
  22. 行号 空格 星号
  23. 1 4 1
  24. 2 3 3
  25. 3 2 5
  26. 4 1 7
  27. 5 0 9
  28. i 5-i 2*i-1
  29. */
  30. for (int i = 0; i <= 5; i++) {
  31.  
  32. for (int z = 0; z < 5-i; z++) {
  33. System.out.print(" ");
  34. }
  35.  
  36. for (int j = 1; j < i*2; j++) {
  37. System.out.print("*");
  38. }
  39. System.out.println();
  40. }
  41.  
  42. /**
  43. A
  44. ABA
  45. ABCBA
  46. ABCDCBA
  47. ABCDEDCBA
  48.  
  49. 行号 空格 递增 递减
  50. 1 4 1 0
  51. 2 3 2 1
  52. 3 2 3 2
  53. 4 1 4 3
  54. 5 0 5 4
  55. i 5-i i i-1
  56. */
  57.  
  58. for (int i = 1; i <= 5; i++) {
  59. for (int j = 0; j < 5-i; j++) {
  60. System.out.print(" ");
  61. }
  62.  
  63. char c= 'A';
  64.  
  65. for (int z = 1; z <= i; z++) {
  66. System.out.print(c);
  67. c++;
  68. }
  69.  
  70. for (int k = i-1; k > 0; k--) {
  71. c--;
  72. System.out.print((char)(c-1));
  73. }
  74.  
  75. System.out.println();
  76. }
  77.  
  78. }
  79.  
  80. }

斐波那契数列:

  1. int n = 1;
  2. int m = 1;
  3. int z = 0;
  4. System.out.print("斐波那契数列前20项:"+n+","+m+",");
  5. for (int i = 1; i <= 18; i++) {
  6. z = n+m;
  7. n = m ;
  8. m = z;
  9. System.out.print(z+",");
  10. }
  11. System.out.println();

九九乘法表:

  1. /**
  2. * 九九乘法表
  3. */
  4. for (int j = 1; j <= 9 ; j++) {
  5. for (int k = 1; k <= j; k++) {
  6. System.out.print(j+"*"+k+"="+j*k+"\t");
  7. }
  8. System.out.println();
  9. }

注意:break:结束当前循环,执行当前循环体后面的语句。continue:表示跳过此次循环,继续执行下一次循环。

9.Java 数组

数组是相同类型的变量按顺序组成的一种复合数据类型,称这些相同类型的变量为数组的元素或单元。
数组中的每一个数据称之为元素,数组中的元素存放的位置称为索引,索引从0开始,每一次都递增1。
 
数组的定义:
int[] a = new int[5];   //直接new出来数组,然后定义长度
int[] a = {1,2,3,4,5};  //直接定义数组,再加数据,由数据定长度。
int[] a = new int[] {1,2,3,4,5};  //new出来数组 ,再由数据定义数组长度
 
数组的初始化分为静态初始化和动态初始化:
静态初始化是在声明数组的同时进行赋值;   int[] a = {1,2,3,4,5}
动态初始化是在声明数组后在对其进行赋值。int[] a = new int[5];a[0]=0;  a[1]=1;a[2]=2;a[3]=3;a[4]=4;
 
数组的元素类型和数组的大小都是确定的,所以当处理数组元素时候,我们通常使用基本循环或者foreach循环。
 
  1. foreach循环 也称为 for循环的增强版
  2. JDK 1.5 引进了一种新的循环类型,被称为foreach循环或者加强型循环,它能在不使用下标的情况下遍历数组。但是它只能全部输出,不能按需求输出。
  3. 代码:
  4. int[] arr = {1,2,3,4,5};
  5. for (int i : arr) {
  6. System.out.println(i);
  7. }
基本类型和引用类型在内存中的保存
Java中数据类型分为两大类,基本类型和对象类型。相应的,变量也有两种类型:基本类型和引用类型。
基本类型的变量保存原始值,即它代表的值就是数值本身;
而引用类型的变量保存引用值,"引用值"指向内存空间的地址,代表了某个对象的引用,而不是对象本身,
对象本身存放在这个引用值所表示的地址的位置。

变量的基本类型和引用类型的区别
基本数据类型在声明时系统就给它分配空间,即给它分配堆内存的地址。
引用则不同,它声明时只给变量分配了引用空间,而不分配数据空间,也就是只在栈内存中存放了目标对象的首地址(数组或者对象的首地址),而首地址指向的是堆内存中第一个数值。
 
引用传递和值传递
基本数据类型的值传递:基本数据类型定义好值后就存放在堆内存中,将赋值完成的变量赋值给另一个变量,后面方法中的操作再去对值进行修改,不影响实际参数的值。
引用数据类型的值传递:实参的引用(是地址而不是参数的值)被传递给方法中相对应的形参,那么接收到的还是原始值的内存地址;在方法执行中,形参和实参内容相同,指向同一块内存地址,那么更改数值,所指向的第一个数也就会改变,也就是所定义的数组名或者变量名所在地址指向的数值也随之改变。
 
 

Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解的更多相关文章

  1. JAVA基础学习——1.1 环境搭建 之jdk安装,环境变量配置 (系统Win10,64bit)

    大学里虽然老师教过JAVA,但我没学.后来工作了,断断续续的也碰到了JAVA的项目,都是拉过来就干的节奏.也没有好好系统的学习一下. 从今天开始系统学习整理一下JAVA,以后再碰到JAVA项目的时候, ...

  2. JAVA基础学习——1.2 环境搭建 之eclipse安装及中文化

    安装好jdk,配置好环境变量以后,下面就可以进行安装eclipse了. 闲话少说,eclipse下载地址:http://www.eclipse.org/downloads/ 不大用关注checksum ...

  3. java基础学习总结——java环境变量配置(转)

    只为成功找方法,不为失败找借口! 永不放弃,一切皆有可能!!! java基础学习总结——java环境变量配置 前言 学习java的第一步就要搭建java的学习环境,首先是要安装 JDK,JDK安装好之 ...

  4. java基础学习总结——java环境变量配置

    前言 学习java的第一步就要搭建java的学习环境,首先是要安装JDK,JDK安装好之后,还需要在电脑上配置"JAVA_HOME”."path”."classpath& ...

  5. Java基础学习(一)---Java初识

    一.Java介绍 关于Java的诞生和发展网上比较多,在此就不再赘述了,可以参考http://i.cnblogs.com/EditArticles.aspx?postid=4050233. 1.1 J ...

  6. Android基础学习:Android环境搭建

    在3年前,自学过Android的一些基础知识,但是那个时候Linux等其他的知识结构比较薄弱,理解得不是很深刻,后来因项目变动的原因,没有再搞Android相关的东西了.时过境迁,还是因为项目变动,重 ...

  7. ES6 - 基础学习(1): 开发环境搭建

    现在Chrome浏览器已经很好的支持ES6了,但有些低版本的浏览器或其他浏览器还是不支持ES6的语法,因此实际项目开发或上线过程中就需要把ES6的语法转变成ES5的语法.项目开发过程中 Webpack ...

  8. java基础学习:java中的反射

    一.什么是java反射 什么是 java 的反射? 说到反射,写这篇文章时,我突然想到了人的"反省",反省是什么?吾一日三省吾身,一般就是反思自身,今天做了哪些对或错的事情. ja ...

  9. Java基础学习总结——Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换为字节序列的过程称为对象的序列化. 把字节序列恢复为对象的过程称为对象的反序列化. 对象的序列化主要有两种用途: 1) 把对象的字节序列永久地保存到硬盘上,通常存 ...

随机推荐

  1. (手冊)Animation 之 使用Animation View

    观看游戏物体上的动画(Viewing Animations on a GameObject) Animation View 是与 Hierarchy View.Scene View和Inspector ...

  2. node 内存消息队列

    var net = require('net') var clients = [] ,msgs = {} function unWrapMsg(data){ data = data.toString( ...

  3. silverlight wpf DataTemplate Command binding

    <Grid x:Name="LayoutRoot" Background="White"> <CommonControl:NoapDataGr ...

  4. 37、ifconfig命令

    很多windows很熟悉ipconfig命令行工具.它被用来获取网络接口配置信息并对此进行改动.Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config). 通常须 ...

  5. hdoj--5500--Reorder the Books(技巧)

    Reorder the Books Time Limit: 4000/2000 MS (Java/Others)    Memory Limit: 131072/131072 K (Java/Othe ...

  6. 乔治·霍兹(George Hotz):特斯拉、谷歌最可怕的对手!

    17岁破解iPhone,21岁攻陷索尼PS3:现在,他是埃隆·马斯克最可怕的对手.   黑客往事   许多年后,当乔治·霍兹(George Hotz)回首往事,一定会把2007年作为自己传奇人生的起点 ...

  7. Elasticsearch之四种查询类型和搜索原理(博主推荐)

    Elasticsearch Client发送搜索请求,某个索引库,一般默认是5个分片(shard). 它返回的时候,由各个分片汇总结果回来. 官网API https://www.elastic.co/ ...

  8. WPF 样式

    样式是属性值的集合,能被应用到一个元素,类似CSS,每个控件最多只能有一个样式,通过控件的Stype属性应用样式,如下代码,其中BigFontButtonStyle是用于检索资源的关键字,也可以通过代 ...

  9. 使用终端改变MAC默认截图存放地址

    使用终端改变MAC默认截图存放地址的过程主要分为两步: 第一步:输入如下命令,回车 defaults write com.apple.screencapture location 要存放到的位置的绝对 ...

  10. 2019Pycharm激活方法

    1.将“0.0.0.0 account.jetbrains.com”添加到hosts文件中 2.打开http://idea.lanyus.com/ 3.获取激活码,粘贴到第二个选项中 亲测可用.