Full Download Java Programming (MindTap Course List), 10th Edition Joyce Farrell PDF
Full Download Java Programming (MindTap Course List), 10th Edition Joyce Farrell PDF
Full Download Java Programming (MindTap Course List), 10th Edition Joyce Farrell PDF
https://ebookmass.com/product/java-programming-
mindtap-course-list-10th-edition-joyce-farrell/
OR CLICK BUTTON
DOWLOAD NOW
https://ebookmass.com/product/java-programming-9th-edition-joyce-
farrell/
https://ebookmass.com/product/programming-logic-design-
comprehensive-9th-edition-joyce-farrell/
https://ebookmass.com/product/programming-logic-and-design-
comprehensive-9th-edition-joyce-farrell/
https://ebookmass.com/product/physics-for-scientists-and-
engineers-mindtap-course-list-10th-edition-serway/
Business Law: Text & Exercises (MindTap Course List)
10th Edition Roger Leroy Miller
https://ebookmass.com/product/business-law-text-exercises-
mindtap-course-list-10th-edition-roger-leroy-miller/
https://ebookmass.com/product/c-programming-from-problem-
analysis-to-program-design-mindtap-course-list-8th-edition-ebook-
pdf/
https://ebookmass.com/product/your-career-how-to-make-it-happen-
mindtap-course-list-10th-edition-lisa-owens/
https://ebookmass.com/product/interpersonal-conflict-10th-
edition-joyce-l-hocker/
https://ebookmass.com/product/understanding-human-behavior-a-
guide-for-health-care-professionals-mindtap-course-list-10th-
edition-alyson-honeycutt/
Java
Programming
Tenth Edition
Joyce Farrell
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
This is an electronic version of the print textbook. Due to electronic rights restrictions,
some third party content may be suppressed. Editorial review has deemed that any suppressed
content does not materially affect the overall learning experience. The publisher reserves the right
to remove content from this title at any time if subsequent rights restrictions require it. For
valuable information on pricing, previous editions, changes to current editions, and alternate
formats, please visit www.cengage.com/highered to search by ISBN#, author, title, or keyword for
materials in your areas of interest.
Important Notice: Media content referenced within the product description or the product
text may not be available in the eBook version.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
JavaTM Programming, Tenth Edition © 2023, © 2019, © 2016 Cengage Learning, Inc. WCN: 02-300
Joyce Farrell ALL RIGHTS RESERVED. No part of this work covered by the copyright herein
may be reproduced or distributed in any form or by any means, except as
SVP, Higher Education Product Management: Erin
permitted by U.S. copyright law, without the prior written permission of the
Joyner
copyright owner.
VP, Product Management, Learning Experiences: Unless otherwise noted, all content is Copyright © Cengage Learning, Inc.
Thais Alencar
Unless otherwise noted, all screenshots are courtesy of Microsoft Corporation.
Product Director: Mark Santee
Microsoft is a registered trademark of Microsoft Corporation in the U.S.
Associate Product Manager: Tran Pham and/or other countries.
The names of all products mentioned herein are used for identification
Product Assistant: Ethan Wheel
purposes only and may be trademarks or registered trademarks of their
Learning Designer: Mary Convertino respective owners. Cengage Learning disclaims any affiliation, association,
connection with, sponsorship, or endorsement by such owners.
Senior Content Manager: Maria Garguilo
Associate Digital Delivery Quality Partner: David For product information and technology assistance, contact us at
O’Connor Cengage Customer & Sales Support, 1-800-354-9706
or support.cengage.com.
Technical Editor: John Freitas
For permission to use material from this text or product, submit all
Developmental Editor: Dan Seiter
requests online at www.copyright.com.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
BRIEF CONTENTS
PREFACEXI
GLOSSARY 625
INDEX 641
iii
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
CONTENTS
PREFACEXI Key Terms 32
Review Questions 33
CHAPTER 1 Programming Exercises 34
Debugging Exercises 36
CREATING JAVA PROGRAMS 1
Game Zone 36
1.1 Learning Programming Terminology 1 Case Problems 37
1.2 Comparing Procedural and Object-
Oriented Programming Concepts 4
CHAPTER 2
Procedural Programming 4
Object-Oriented Programming 5 USING DATA 39
Understanding Classes, Objects, and Encapsulation 6
2.1 Declaring and Using Constants
Understanding Inheritance and Polymorphism 7
and Variables 39
1.3 Features of the Java Programming Declaring Variables 40
Language8
Declaring Named Constants 42
1.4 Analyzing a Java Application That The Scope of Variables and Constants 43
Produces Console Output 10
Concatenating Strings to Variables and
Understanding the Statement That Produces the Constants 43
Output10
Pitfall: Forgetting That a Variable Holds One
Understanding the First Class 12 Value at a Time 45
Understanding the main() Method 14
2.2 Learning About Integer Data
Indent Style 15
Types47
Saving a Java Class 16
2.3 Using the boolean Data Type 51
1.5 Compiling a Java Class and
Correcting Syntax Errors 18 2.4 Learning About Floating-Point
Compiling a Java Class 18 Data Types 52
Correcting Syntax Errors 19 2.5 Using the char Data Type 53
1.6 Running a Java Application and 2.6 Using the Scanner Class to
Correcting Logic Errors 23 Accept Keyboard Input 57
Running a Java Application 23 Pitfall: Using nextLine() Following One of the
Modifying a Compiled Java Class 23 Other Scanner Input Methods 59
Correcting Logic Errors 24
2.7 Using the JOptionPane Class to
1.7 Adding Comments to a Java Class 25 Accept GUI Input 64
1.8 Creating a Java Application That Using Input Dialog Boxes 64
Produces GUI Output 27 Using Confirm Dialog Boxes 66
1.9 Finding Help 29 2.8 Performing Arithmetic Using
Variables and Constants 68
Don’t Do It 30 Associativity and Precedence 69
Summary31 Writing Arithmetic Statements Efficiently 69
iv
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents v
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
vi Contents
CHAPTER 5 CHAPTER 6
MAKING DECISIONS 161 LOOPING201
5.1 Planning Decision-Making Logic 161 6.1 Learning About the Loop
5.2 The if and if…else Statements 163 Structure201
The if Statement 163 6.2 Creating while Loops 202
Pitfall: Misplacing a Semicolon in an if Statement 164 Writing a Definite while Loop 202
Pitfall: Using the Assignment Operator Instead Pitfall: Failing to Alter the Loop Control Variable
of the Equivalency Operator 165 Within the Loop Body 204
Pitfall: Attempting to Compare Objects Using Pitfall: Unintentionally Creating a Loop with
the Relational Operators 165 an Empty Body 204
The if…else Statement 166 Altering a Definite Loop’s Control Variable 206
Writing an Indefinite while Loop 206
5.3 Using Multiple Statements in
if and if…else Clauses 168 Validating Data 208
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents vii
7.5 Learning About the StringBuilder 8.9 Using the Arrays Class 307
and StringBuffer Classes 253 8.10 Creating Enumerations 311
CHAPTER 8 CHAPTER 9
ARRAYS267 INHERITANCE AND INTERFACES 329
8.1 Declaring an Array 267 9.1 Learning About the Concept of
8.2 Initializing an Array 271 Inheritance329
Inheritance Terminology 331
8.3 Using Variable Subscripts with an
Array273 9.2 Extending Classes 332
Using the Enhanced for Loop 275 9.3 Overriding Superclass Methods 336
Using Part of an Array 275 Using the @Override Annotation 337
8.4 Declaring and Using Arrays 9.4 Calling Constructors During
of Objects 277 Inheritance339
Using the Enhanced for Loop with Objects 279 Using Superclass Constructors That Require
Manipulating Arrays of Strings 279 Arguments 340
8.5 Searching an Array and Using 9.5 Accessing Superclass Methods 344
Parallel Arrays 284 Comparing this and super 345
Using Parallel Arrays 284
9.6 Employing Information Hiding 346
Searching an Array for a Range Match 286
9.7 Methods You Cannot Override 348
8.6 Passing Arrays to and Returning
Arrays from Methods 289 A Subclass Cannot Override static Methods
in Its Superclass 348
Returning an Array from a Method 291
A Subclass Cannot Override final Methods
8.7 Sorting Array Elements 292 in Its Superclass 350
Using the Bubble Sort Algorithm 293 A Subclass Cannot Override Methods in a final
Improving Bubble Sort Efficiency 295 Superclass 351
Sorting Arrays of Objects 295 9.8 Creating and Using Abstract
Using the Insertion Sort Algorithm 296 Classes352
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
viii Contents
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Contents ix
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
x Contents
14.9 U
sing the JCheckBox, APPENDIX C
ButtonGroup, and JComboBox
Classes572 FORMATTING OUTPUT 595
The JCheckBox Class 572
The ButtonGroup Class 574 APPENDIX D
The JComboBox Class 575
GENERATING RANDOM
Don’t Do It 580 NUMBERS 603
Summary 581
Key Terms 581 APPENDIX E
Review Questions 582
JAVADOC 607
Programming Exercises 584
Debugging Exercises 585
Game Zone 585
APPENDIX F
Case Problems 586 USING JAVAFX AND SCENE
BUILDER613
APPENDIX A
GLOSSARY 625
WORKING WITH THE INDEX 641
JAVA PLATFORM 587
APPENDIX B
DATA REPRESENTATION 591
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
PREFACE
Java Programming, Tenth Edition provides the beginning programmer with a guide to developing applications
using the Java programming language. Java is popular among professional programmers because it is object-
oriented, making complex problems easier to solve than in some other languages. Java is used for desktop
computing, mobile computing, game development, Web development, and numerical computing.
This course assumes that you have little or no programming experience. It provides a solid background in
good object-oriented programming techniques and introduces terminology using clear, familiar language. The
programming examples are business examples; they do not assume a mathematical background beyond high
school business math. In addition, the examples illustrate only one or two major points; they do not contain so
many features that you become lost following irrelevant and extraneous details. Complete, working programs
appear frequently in each chapter; these examples help students make the transition from the theoretical
to the practical. The code presented in each chapter also can be downloaded from the Cengage website, so
students easily can run the programs and experiment with changes to them.
The student using Java Programming, Tenth Edition builds applications from the bottom up rather than
starting with existing objects. This facilitates a deeper understanding of the concepts used in object-oriented
programming and engenders appreciation for the existing objects students use as their knowledge of the
language advances. When students complete this course, they will know how to modify and create simple Java
programs, and they will have the tools to create more complex examples. They also will have a fundamental
knowledge of object-oriented programming, which will serve them well in advanced Java courses or in studying
other object-oriented languages such as C++, C#, and Visual Basic.
Chapters 5 and 6 explore input and repetition structures, which are the backbone of programming logic and
essential to creating useful programs in any language. You learn the special considerations of string and array
manipulation in Chapters 7 and 8.
Chapters 9 and 10 thoroughly cover inheritance, interfaces, and exception handling. Inheritance is the object-
oriented concept that allows you to develop new objects quickly by adapting the features of existing objects,
interfaces define common methods that must be implemented in all classes that use them, and exception
handling is the object-oriented approach to handling errors. All of these are important concepts in object-
oriented design. Chapter 11 provides information about handling files so you can store and retrieve program
output.
Chapter 12 explains recursion, and Chapter 13 covers Java collections and generics. Both are important
programming concepts, and Java provides excellent ways to implement and learn about them. Chapter 14
introduces GUI Swing components, which are used to create visually pleasing, user-friendly, interactive
applications.
xi
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
xii Preface
❯❯Java help: Instructions on searching for Java help have been updated to avoid using specific URLs because new
Java versions are now being released twice a year.
❯❯Text blocks: Chapter 2 introduces text blocks—a new feature since Java 13.
❯❯Methods: Methods are covered thoroughly in Chapter 3, including topics such as overloading methods and
avoiding ambiguity. In previous editions, the material was split between chapters.
❯❯Classes and objects: Classes and objects are covered thoroughly in Chapter 4. In previous editions, the material
was split between chapters.
❯❯The switch expression: Chapter 5 includes the switch expression, which became a new feature in Java 14.
❯❯Arrays: Chapter 8 covers beginning and advanced array concepts. In previous editions, this content was split
between chapters.
❯❯Inheritance and interfaces: Chapter 9 covers inheritance and interfaces. In previous editions, this content was
split between chapters.
❯❯The record keyword: Chapter 9 also introduces the record keyword, which allows simple classes to be
developed more quickly because a constructor and methods to get and set fields are created automatically
based on field definitions.
❯❯Recursion: Chapter 12 is a new chapter on recursion. The chapter presents techniques to use to solve
mathematical problems, manipulate strings, and create visual patterns using recursion.
❯❯Collections and generics: Chapter 13 is a new chapter on collections and generics. The chapter covers the
Collection and List interfaces, the ArrayList and LinkedList classes, Iterators, and generic
classes and methods.
❯❯Objectives: Each chapter begins with a list of objectives so you know the topics that will be presented in the
chapter. In addition to providing a quick reference to topics covered, this feature provides a useful study aid.
❯❯You Do It: In each chapter, step-by-step exercises help students create multiple working programs that
emphasize the logic a programmer uses in choosing statements to include. These sections provide a means for
students to achieve success on their own—even those in online or distance learning classes.
❯❯Notes: These highlighted tips provide additional information—for example, an alternative method of performing
a procedure, another term for a concept, background information about a technique, or a common error to
avoid.
❯❯Emphasis on student research: The student frequently is advised to use the Web to investigate Java classes,
methods, and techniques. Computer languages evolve, and programming professionals must understand how to
find the latest language improvements.
❯❯Figures: Each chapter contains many figures. Code figures are most frequently 25 lines or fewer, illustrating one
concept at a time. Frequent screenshots show exactly how program output appears. Callouts appear where
needed to emphasize a point.
❯❯Color: The code figures in each chapter contain all Java keywords in blue. This helps students identify keywords
more easily, distinguishing them from programmer-selected names.
❯❯Files: More than 200 student files can be downloaded from the Cengage website. Most files contain the code
presented in the figures in each chapter; students can run the code for themselves, view the output, and make
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface xiii
changes to the code to observe the effects. Other files include debugging exercises that help students improve
their programming skills.
❯❯Two Truths & a Lie: A short quiz reviews almost every chapter section, with answers provided. This quiz
contains three statements based on the preceding section of text—two statements are true, and one is false.
Over the years, students have requested answers to problems, but we have hesitated to distribute them in case
instructors want to use problems as assignments or test questions. These true-false quizzes provide students
with immediate feedback as they read, without “giving away” answers to the multiple-choice questions and
programming exercises.
❯❯Don’t Do It: This section at the end of each chapter summarizes common mistakes and pitfalls that plague new
programmers while learning the current topic.
❯❯Summary: Following each chapter is a summary that recaps the programming concepts and techniques covered
in the chapter. This feature provides a concise means for students to check their understanding of the main
points in each chapter.
❯❯Key Terms: Each chapter includes a list of newly introduced vocabulary, shown in alphabetical order. The list of
key terms provides a short review of the major concepts in the chapter.
❯❯Review Questions: Each chapter includes 20 multiple-choice questions that serve as a review of chapter topics.
❯❯Programming Exercises: Multiple programming exercises are included with each chapter. These challenge
students to create complete Java programs that solve real-world problems.
❯❯Debugging Exercises: Four debugging exercises are included with each chapter. These are programs that
contain logic or syntax errors that the student must correct. Besides providing practice in deciphering error
messages and thinking about correct logic, these exercises provide examples of complete and useful Java
programs after the errors are repaired.
❯❯Game Zone: Each chapter provides one or more exercises in which students can create interactive games
using the programming techniques learned up to that point; 50 game programs are suggested in the course.
The games are fun to create and play; writing them motivates students to master the necessary programming
techniques. Students might exchange completed game programs with each other, suggesting improvements and
discovering alternate ways to accomplish tasks.
❯❯Cases: Each chapter contains two running case problems. These cases represent projects that continue to
grow throughout a semester using concepts learned in each new chapter. Two cases allow instructors to assign
different cases in alternate semesters or to divide students in a class into two case teams.
❯❯Glossary: A glossary contains definitions for all key terms in the course.
❯❯Appendices: This edition includes useful appendices on working with the Java platform, data representation,
formatting output, generating random numbers, creating Javadoc comments, and JavaFX.
❯❯Quality: Every program example, exercise, and game solution was tested by the author and then tested again by
a quality assurance team.
All MindTap activities and assignments are tied to defined unit learning objectives. MindTap provides the analytics and
reporting so you can easily see where the class stands in terms of progress, engagement, and completion rates. Use
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
xiv Preface
the content and learning path as is or pick and choose how our materials will wrap around yours. You control what
the students see and when they see it. Learn more at http://www.cengage.com/mindtap/.
In addition to the readings, the Java Programming, Tenth Edition MindTap includes the following:
❯❯Gradeable assessments and activities: All assessments and activities from the readings will be available as
gradeable assignments within MindTap, including Review Questions, Game Zone, Case Problems, and Two
Truths & a Lie.
❯❯Videos: Each unit is accompanied by videos that help to explain important unit concepts and provide demos on
how students can apply those concepts.
❯❯Coding Snippets: These short, ungraded coding activities are embedded in the MindTap Reader and provide
students an opportunity to practice new programming concepts “in the moment.” The coding Snippets help
transition the students from conceptual understanding to application of Java code.
❯❯Coding labs: These assignments provide real-world application and encourage students to practice new coding
skills in a complete online IDE. Guided feedback provides personalized and immediate feedback to students as
they proceed through their coding assignments so that they can understand and correct errors in their code.
❯❯Interactive study aids: Flashcards and PowerPoint lectures help users review main concepts from the units.
❯❯Instructor’s Manual: The Instructor’s Manual includes additional instructional material to assist in class
preparation, including sections such as Chapter Objectives, Complete List of Chapter Activities and
Assessments, Key Terms, What’s New In This Chapter, Chapter Outline, Discussion Questions, Suggested Usage
for Lab Activities, Additional Activities and Assignments, and Additional Resources. A sample syllabus also is
available.
❯❯PowerPoint presentations: The PowerPoint slides can be used to guide classroom presentations, to make
available to students for chapter review, or to print as classroom handouts.
❯❯Solution and Answer Guide: Solutions to all end-of-chapter assignments are provided along with feedback.
❯❯Solutions: Solutions to all programming exercises are available. If an input file is needed to run a programming
exercise, it is included with the solution file.
❯❯Test bank: Cengage Testing Powered by Cognero is a flexible, online system that allows you to:
■■ Author, edit, and manage test bank content from multiple Cengage solutions.
■■ Create multiple test versions in an instant.
■■ Deliver tests from your LMS, your classroom, or wherever you want.
❯❯Educator’s Guide: The Educator’s Guide contains a detailed outline of the corresponding MindTap course.
❯❯Transition Guide: The Transition Guide outlines information on what has changed from the Ninth Edition.
❯❯Data files: Data files necessary to complete some of the steps and projects in the course are available. The Data
Files folder includes Java files that are provided for every program that appears in a figure in the text.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface xv
Acknowledgments
I would like to thank all of the people who helped to make this project a reality, including Tran Pham, Associate Product
Manager; Mary Convertino, Learning Designer; Maria Garguilo, Senior Content Manager; Dan Seiter, Developmental
Editor, and John Freitas, Quality Assurance Tester. I am lucky to work with these professionals who are dedicated to
producing high-quality instructional materials.
I am also grateful to the reviewers who provided comments and encouragement during this course’s development,
including Dr. Ross Foultz, Coastal Carolina University; and Dr. Carl M. Rebman, Jr., University of San Diego. Also, thank
you to Charles W. Lively III, Ph.D. – Academic Faculty, Georgia Institute of Technology, who provided the appendix on
JavaFX.
Thanks, too, to my husband, Geoff, for his constant support, advice, and encouragement. Finally, this project is
dedicated to Norman Williams Peterson, who has brought a smile to my face every time I have seen him.
Joyce Farrell
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
xvi Preface
Features
This text focuses on helping students become better programmers and understand Java program development through
a variety of key features. In addition to Chapter Objectives, Summaries, and Key Terms, these useful features will help
students regardless of their learning styles.
You Do It
These notes provide additional information—for example, a common error to watch out for or
Note background information on a topic.
These quizzes appear after almost every chapter section, with answers provided. Each quiz contains three
statements based on the preceding section of text—two statements are true and one is false.
Answers give immediate feedback without “giving away” answers to the multiple-choice questions and
programming problems later in the chapter. Students also have the option to take these quizzes in MindTap.
Don’t Do It Icon
The Don’t Do It icon illustrates how NOT to do something—for example, having a dead code path in a program. These
icons provide a visual jolt to the student, emphasizing that particular practices are NOT to be emulated and making
students more likely to recognize problems in existing code.
import java.util.Scanner;
public class GetUserInfo2 Don’t Do It
{
public static void main(String[] args) If you accept numeric
{ input prior to string input,
String name; the string input is ignored
int age; unless you take special
Scanner inputDevice = new Scanner(System.in); action.
System.out.print("Please enter your age >> ");
age = inputDevice.nextInt();
System.out.print("Please enter your name >> ");
name = inputDevice.nextLine();
System.out.println("Your name is " + name +
" and you are " + age + " years old.");
}
}
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Preface xvii
Don’t Do It
These sections at the end of each chapter list advice for avoiding common programming errors.
Assessment
Review Questions
Review Questions test student comprehension of the major ideas and techniques presented. Twenty questions follow
each chapter.
Programming Exercises
Programming Exercises provide opportunities to practice concepts. These exercises allow students to explore each
major programming concept presented in the chapter. Additional coding labs and snippets are available in MindTap.
Debugging Exercises
Debugging Exercises are included with each chapter because examining programs critically and closely is a crucial
programming skill. Students and instructors can download these exercises at www.cengage.com.
Game Zone
Game Zone exercises are included at the end of each chapter. Students can create games as an additional entertaining
way to understand key programming concepts.
Case Problems
Case Problems provide opportunities to build more detailed programs that continue to incorporate increasing
functionality throughout the course.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Chapter 1
Creating Java
Programs
Learning Objectives
When you complete this chapter, you will be able to:
❯❯Programs are software. A computer program (or simply, program) is a set of instructions that you write
to tell a computer what to do.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
2 Chapter 1 Creating Java Programs
❯❯A program that performs a task for a user (such as calculating and producing paychecks, word processing, or
playing a game) is application software. Programs that are application software are called applications, or apps
for short.
❯❯A program that manages the computer itself (such as Windows or Linux) is system software.
The logic behind any computer program, whether it is an application or system program, determines the exact order of
instructions needed to produce desired results. Much of this course describes how to develop the logic for application
software.
❯❯A high-level programming language such as Java, Visual Basic, C++, or C# allows you to use English-like, easy-
to-remember terms such as read, write, and add.
❯❯A low-level programming language corresponds closely to a computer’s circuitry and is not as easily read or
understood. Because they correspond to circuitry, low-level languages must be customized for every type of
machine on which a program runs.
All computer programs, even high-level language programs, ultimately are converted to the lowest-level language,
which is machine language. Machine language, or machine code, is the most basic set of instructions that a computer
can execute. Each type of processor (the internal hardware that handles computer instructions) has its own set of
machine language instructions. Programmers often describe machine language using 1s and 0s to represent the on-
and-off circuitry of computer systems.
The system that uses only 1s and 0s is the binary numbering system. Appendix B describes the binary
Note system in detail. Later in this chapter, you will learn that bytecode is the name for the binary code created
when Java programs are converted to machine language.
Every programming language has its own syntax, or rules about how language elements are combined correctly to
produce usable statements. For example, depending on the specific high-level language, you might use the verb print
or write to produce output. All languages have a specific, limited vocabulary (the language’s keywords) and a specific
set of rules for using that vocabulary. When you are learning a computer programming language, such as Java, C++, or
Visual Basic, you are learning the vocabulary and syntax for that language.
Using a programming language, programmers write a series of program statements, which are similar to English
sentences. The statements carry out the program’s tasks. Program statements are also known as commands because
they are orders to the computer, such as Output this word or Add these two numbers.
After the program statements are written in a high-level programming language, a computer program called a compiler
or interpreter translates the statements into machine language. A compiler translates an entire program before carrying
out any statements, or executing them, whereas an interpreter translates one program statement at a time, executing
a statement as soon as it is translated.
Whether you use a compiler or interpreter often depends on the programming language you use.
Note For example, C++ is a compiled language, and Visual Basic is an interpreted language. Each type of
translator has its supporters; programs written in compiled languages execute more quickly, whereas
programs written in interpreted languages can be easier to develop and debug. Java uses the best of
both technologies: a compiler to translate your programming statements and an interpreter to read the
compiled code line by line when the program executes (also called at run time).
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.1 Learning Programming Terminology 3
Compilers and interpreters issue one or more error messages each time they encounter an invalid program statement—
that is, a statement containing a syntax error, or misuse of the language. Examples of syntax errors include misspelling
a keyword or omitting a word that a statement requires. When a syntax error is detected, the programmer can correct
the error and attempt another translation. Repairing all syntax errors is the first part of the process of debugging a
program—freeing the program of all flaws or errors, also known as bugs. Figure 1-1 illustrates the steps a programmer
takes while developing an executable program. You will learn more about debugging Java programs later in this chapter.
Debugging process
Use translating software (a compiler or
interpreter) that translates programming
language statements to machine language
Debugging process
Can all statements No Examine list of
be successfully
syntax errors
translated?
Yes
Examine
program output
No
As Figure 1-1 shows, you might write a program that compiles successfully (that is, it contains no syntax errors), but
it still might not be a correct program because it might contain one or more logic errors. A logic error is a bug that
allows a program to run, but that causes it to operate incorrectly. Correct logic requires that all the right commands
be issued in the appropriate order. Examples of logic errors include multiplying two values when you meant to divide
them or producing output prior to obtaining the appropriate input. When you develop a program of any significant
size, you should plan its logic before you write any program statements.
Correcting logic errors is much more difficult than correcting syntax errors. Syntax errors are discovered by the
language translator when you compile a program, but a program can be free of syntax errors and execute while still
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
4 Chapter 1 Creating Java Programs
retaining logic errors. Sometimes you can find logic errors by carefully examining the structure of your program (when
a group of programmers do this together, it is called a structured walkthrough), but sometimes you can identify logic
errors only when you examine a program’s output. For example, if you know an employee’s paycheck should contain
the value $4,000, but when you examine a payroll program’s output you see that it holds $40, then a logic error has
occurred. Perhaps an incorrect calculation was performed, or maybe the hours-worked value was output by mistake
instead of the net pay value. When output is incorrect, the programmer must carefully examine all the statements
within the program, revise or move the offending statements, and translate and test the program again.
Just because a program produces correct output does not mean it is free from logic errors. For example,
Note suppose that a program should multiply two values entered by the user, that the user enters two 2s, and
that the output is 4. The program might actually be adding the values by mistake. The programmer would
discover the logic error only by entering different values, such as 5 and 7, and examining the result.
Programmers call some logic errors semantic errors. For example, if you misspell a programming
Note language word, you commit a syntax error, but if you use a correct word in the wrong context, you
commit a semantic error.
In each “Two Truths & a Lie” section, two of the numbered statements are true, and one is false. Identify the false
statement and explain why it is false.
1. Unlike a low-level programming language, a high-level programming language allows you to use
a vocabulary of reasonable terms instead of the sequences of on-and-off switches that perform the
corresponding tasks.
2. A syntax error occurs when you violate the rules of a language; locating and repairing all syntax errors is
part of the process of debugging a program.
3. Logic errors are fairly easy to find because the software that translates a program finds all the logic errors for you.
The false statement is #3. A language translator finds syntax errors, but logic errors can still exist in a program that
is free of syntax errors.
1.2 C
omparing Procedural and Object-Oriented
Programming Concepts
All computer programmers must deal with syntax errors and logical errors in much the same way, but they might take
different approaches to the entire programming process. Procedural programming and object-oriented programming
describe two different approaches to writing computer programs.
Procedural Programming
Procedural programming is a style of programming in which operations are executed one after another in sequence.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.2 Comparing Procedural and Object-Oriented Programming Concepts 5
The typical procedural program defines and uses named computer memory locations; each of these named locations
that can hold data is called a variable. For example, data might be read from an input device and stored in a location
the programmer has named rateOfPay. The variable value might be used in an arithmetic statement, used as the
basis for a decision, sent to an output device, or have other operations performed with it. The data stored in a variable
can change, or vary, during a program’s execution.
For convenience, the individual operations used in a computer program are often grouped into logical units called
procedures. For example, a series of four or five comparisons and calculations that together determine a person’s
federal withholding tax value might be grouped as a procedure named calculateFederalWithholding(). (As a
convention, this course will show parentheses following every procedure name.) As a procedural program executes
its statements, it can sometimes pause to call a procedure. When a program calls a procedure, the current logic is
temporarily suspended so that the procedure’s commands can execute. A single procedural program might contain any
number of procedure calls. Procedures are also called modules, methods, functions, and subroutines. Users of different
programming languages tend to use different terms. As you will learn later in this chapter, Java programmers most
frequently use the term method.
Object-Oriented Programming
Object-oriented programming is an extension of procedural programming in which you take a slightly different approach
to writing computer programs. Writing object-oriented programs involves the following:
Originally, object-oriented programming was used most frequently for two major types of applications:
❯❯Computer simulations, which attempt to mimic real-world activities so that their processes can be improved or
so that users can better understand how the real-world processes operate
❯❯Graphical user interfaces (GUIs), pronounced gooeys, which allow users to interact with a program in a graphical
environment
Thinking about objects in these two types of applications makes sense. For example, a city might want to develop a
program that simulates traffic patterns and controls traffic signals to help prevent tie-ups. Programmers would create
classes for objects such as cars and pedestrians that contain their own data and rules for behavior. For example, each
car has a speed and a method for changing that speed. The specific instances of cars could be set in motion to create
a simulation of a real city at rush hour.
Creating a GUI environment for users is also a natural use for object orientation. It is easy to think of the components
a user manipulates on a computer screen, such as buttons and scroll bars, as similar to real-world objects. Each
GUI object contains data—for example, a button on a screen has a specific size and color. Each object also contains
behaviors—for example, each button can be clicked and reacts in a specific way when clicked. Some people consider
the term object-oriented programming to be synonymous with GUI programming, but object-oriented programming
means more. Although many GUI programs are object oriented, not all object-oriented programs use GUI objects.
Modern businesses use object-oriented design techniques when developing all sorts of business applications, whether
they are GUI applications or not. Early in this course, you will learn object-oriented techniques that are appropriate
for any program type; in the last chapters, you will apply what you have learned about those techniques specifically
to GUI applications.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
6 Chapter 1 Creating Java Programs
❯❯Inheritance
❯❯Polymorphism
An object is a specific, concrete instance of a class. Creating an instance is called instantiation. You can create objects
from classes that you write and from classes written by other programmers, including Java’s creators. The values
contained in an object’s properties often differentiate instances of the same class from one another. For example, the
class Automobile describes what Automobile objects are like. Some properties of the Automobile class are
make, model, year, and color. Each Automobile object possesses the same attributes, but not necessarily the same
values for those attributes. One Automobile might be a 2014 white Honda Civic, and another might be a 2021 red
Chevrolet Camaro. Similarly, your dog has the properties of all Dogs, including a breed, name, age, and whether the
dog’s shots are current. The values of the properties of an object are referred to as the object’s state. In other words,
you can think of objects as roughly equivalent to nouns (words that describe a person, place, or thing), and of their
attributes as similar to adjectives that describe the nouns.
When you understand an object’s class, you understand the characteristics of the object. If your friend purchases an
Automobile, you know it has a model name, and if your friend gets a Dog, you know the dog has a breed. Knowing
what attributes exist for classes allows you to ask appropriate questions about the states or values of those attributes.
For example, you might ask how many miles the car gets per gallon, but you would not ask whether the car has had
shots. Similarly, in a GUI operating environment, you expect each component to have specific, consistent attributes and
methods, such as a window having a title bar and a close button, because each component gains these properties as a
member of the general class of GUI components. Figure 1-2 shows the relationship of some Dog objects to the Dog class.
By convention, programmers using Java begin their class names with an uppercase letter. Thus, the class
Note that defines the attributes and methods of an automobile probably would be named Automobile, and
the class for dogs probably would be named Dog. This convention, however, is not required to produce a
workable program.
Besides defining properties, classes define methods their objects can use. A method is a self-contained block of
program code that carries out some action, similar to a procedure in a procedural program. An Automobile, for
example, might have methods for moving forward, moving backward, and determining the status of its gas tank.
Similarly, a Dog might have methods for walking, eating, and determining its name, and a program’s GUI components
might have methods for maximizing and minimizing them as well as determining their size. In other words, if objects
are similar to nouns, then methods are similar to verbs.
In object-oriented classes, attributes and methods are encapsulated into objects. Encapsulation refers to two closely
related object-oriented notions:
❯❯Encapsulation is the enclosure of data and methods within an object. Encapsulation allows you to treat all of an
object’s methods and data as a single entity. Just as an actual dog contains all of its attributes and abilities, so
would a program’s Dog object.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.2 Comparing Procedural and Object-Oriented Programming Concepts 7
Figure 1-2 Dog class definition and some objects created from it
istock.com/GlobalP
istock.com/GlobalP
istock.com/olaser
Every Dog that is
created will have a:
Name
Age
❯❯Encapsulation also refers to the concealment of an object’s data and methods from outside sources. Concealing
data is sometimes called information hiding, and concealing how methods work is implementation hiding; you
will learn more about both terms as you learn more about classes and objects. Encapsulation lets you hide
specific object attributes and methods from outside sources and provides the security that keeps data and
methods safe from inadvertent changes.
If an object’s methods are well written, the user can be unaware of the low-level details of how the methods are
executed, and the user must simply understand the interface or interaction between the method and the object. For
example, if you can fill your Automobile with gasoline, it is because you understand the interface between the gas
pump nozzle and the vehicle’s gas tank opening. You don’t need to understand how the pump works mechanically
or where the gas tank is located inside your vehicle. If you can read your speedometer, it does not matter how the
displayed value is calculated. As a matter of fact, if someone produces a superior, more accurate speed-determining
device and inserts it in your Automobile, you don’t have to know or care how it operates, as long as your interface
remains the same. The same principles apply to well-constructed classes used in object-oriented programs—programs
that use classes only need to work with interfaces.
Inheritance helps you understand real-world objects. For example, the first time you encounter a convertible, you
already understand how the ignition, brakes, door locks, and other systems work because you realize that a convert-
ible is a type of automobile. Therefore, you need to be concerned only with the attributes and methods that are “new”
with a convertible. The advantages in programming are the same—you can build new classes based on existing classes
and concentrate on the specialized features you are adding.
A final important concept in object-oriented terminology (that does not exist in procedural programming terminology)
is polymorphism. Literally, polymorphism means many forms—it describes the feature of languages that allows the
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
8 Chapter 1 Creating Java Programs
same word or symbol to be interpreted correctly in different situations based on the context. For example, although the
classes Automobile, Sailboat, and Airplane all inherit from Vehicle, methods such as turn() and stop()
work differently for instances of those classes. The advantages of polymorphism will become more apparent when you
begin to create GUI applications containing features such as windows, buttons, and menu bars. In a GUI application,
it is convenient to remember one method name, such as setColor() or setHeight(), and have it work correctly
no matter what type of object you are modifying.
When you see a plus sign (+) between two numbers, you understand they are being added. When you
Note see it carved in a tree between two names, you understand that the names are linked romantically.
Because the symbol has diverse meanings based on context, it is polymorphic. Later in this course, you
will learn more about inheritance and polymorphism and how they are implemented in Java. Using Java,
you can write either procedural or object-oriented programs. In this course, you will learn about how to
do both.
Two Truths & a Lie Comparing Procedural and Object-Oriented Programming Concepts
1. An instance of a class is a created object that possesses the attributes and methods described in the class
definition.
3. Polymorphism is the ability to create classes that share the attributes and methods of existing classes, but
with more specific features.
The false statement is #3. Inheritance is the ability to create classes that share the attributes and methods of
existing classes, but with more specific features; polymorphism describes the ability to use one term to cause
multiple actions.
Java can be run on a wide variety of computers and devices because it does not execute instructions on a computer
directly. Instead, Java runs on a hypothetical computer known as the Java Virtual Machine (JVM). When programmers
call the JVM hypothetical, they mean it is not a physical entity created from hardware, but is composed only of
software.
Figure 1-3 shows the Java environment. Programming statements written in a high-level programming language
are source code. When you write a Java program, you first construct the source code using a plain text editor
such as Notepad, or you can use a development environment such as Eclipse, NetBeans, or JDeveloper.
A development environment is a set of tools that help you write programs by providing such features as
displaying a language’s keywords in color.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.3 Features of the Java Programming Language 9
Source code is
stored on a disk in
a file with a name
ending in .java
Java Compiler
Compiler creates
bytecode that
is stored on a
disk in a file with
a name ending in
Java Virtual Machine .class
Java Interpreter
When you write a Java program, the following steps take place:
❯❯The Java source code statements you write are saved in a file.
❯❯The Java compiler converts the source code into a binary program of bytecode.
❯❯A program called the Java interpreter then checks the bytecode and communicates with the operating system,
executing the bytecode instructions line by line within the JVM.
Because the Java program is isolated from the operating system, it is also insulated from the particular hardware on
which it is run. Because of this insulation, the JVM provides security against intruders accessing your computer’s
hardware through the operating system. Therefore, Java is more secure than other languages. Another advantage
provided by the JVM means less work for programmers—when using other programming languages, software vendors
usually have to produce multiple versions of the same product (a Windows version, Macintosh version, UNIX version,
Linux version, and so on) so all users can run the program. With Java, one program version runs on all these platforms.
“Write once, run anywhere” (WORA) is the slogan developed by Sun Microsystems to describe the ability of one Java
program version to work correctly on multiple platforms.
Java also is simpler to use than many other object-oriented languages. Java is modeled after C++. Although neither
language is easy to read or understand on first exposure, Java does eliminate some of the most difficult-to-understand
features in C++, such as pointers and multiple inheritance.
❯❯Windowed applications, which create a GUI with elements such as menus, toolbars, and dialog boxes
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
10 Chapter 1 Creating Java Programs
Console applications are the easier applications to create; you start using them in the next section. You will create
your first simple GUI application later in this chapter.
1. Java was developed to be architecturally neutral, which means that anyone can build an application without
extensive study.
2. After you write a Java program, the compiler converts the source code into a binary program of bytecode.
3. You can create both console applications and windowed applications using Java.
The false statement is #1. Java was developed to be architecturally neutral, which means that you can use Java to
write a program that will run on any platform.
1.4 A
nalyzing a Java Application That Produces
Console Output
At first glance, even the simplest Java application involves a fair amount of confusing syntax. Consider the application
in Figure 1-4. This program is written on seven lines, and its only task is to display First Java application on the screen.
In program code in figures in this course, Java keywords as well as true, false, and null are blue, and
Note all other program elements are black. A complete list of Java keywords is shown later in this chapter.
The code for every complete program shown in this course is available in a set of student files you can
Note download so that you can execute the programs on your own computer.
Like all Java statements, this one ends with a semicolon. Most Java programming statements can be spread across as many
lines as you choose, as long as you place line breaks in appropriate places. For example, in the program in Figure 1-4, you
could place a line break immediately before or after the opening parenthesis, or immediately before or after the closing
parenthesis. However, you usually want to place a short statement on a single line.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.4 Analyzing a Java Application That Produces Console Output 11
The text First Java application is a literal string of characters—a series of characters that will appear in output exactly as
entered. Any literal string in Java is written between double quotation marks. In Java, a literal string cannot be broken
and placed on multiple lines. Figure 1-5 labels this string and the other parts of the statement.
The string within quotation marks, "First Java application", appears within parentheses because the string
is an argument to a method, and arguments to methods always appear within parentheses following the method name.
Arguments are pieces of information that are sent into a method. The act of sending arguments to a method is called
passing arguments to the method.
As an analogy, consider placing a catalog order with a company that sells sporting goods. Processing a catalog order
is a method that consists of a set of standard procedures—recording the order, checking the availability of the item,
pulling the item from the warehouse, and so on. Each catalog order also requires a set of data items, such as which
item number you are ordering and the quantity of the item desired; these data items can be considered the arguments
to the order-processing method. If you order two of item 5432 from a catalog, you expect different results than if you
order 1,000 of item 9008. Likewise, if you pass the argument "Happy Holidays" to a Java display method, you expect
different results than if you pass the argument "First Java application".
Within the statement System.out.println("First Java application");, the method to which you are
passing "First Java application" is named println(). The Java methods println() and print() both
produce output, with a small difference:
❯❯With println(), after the output is displayed, the insertion point moves to the following line so that
subsequent output appears on a new line.
❯❯With print(), the insertion point does not advance to a new line, so subsequent output appears at
the end of the current line.
When you call a method, you always use parentheses following the method name. In this course, you will learn about
many methods that require arguments between their parentheses, and many others for which you leave the paren-
theses empty. The println() method can be used with no arguments when you want to output a blank line. Later
in this chapter, you will learn about a method named showMessageDialog() that requires two arguments. Other
methods require more.
Within the statement System.out.println("First Java application");, out is an object that is a property
of the System class; out refers to the standard output device for a system, normally the monitor. The out object
itself is an instance of the PrintStream class, which contains several methods, including println(). Technically,
you could create the out object and write the instructions within the println() method yourself, but it would be
time consuming, and the creators of Java assumed you would want to frequently display output on a screen. Therefore,
the System and PrintStream classes, the out object, and the println() and print() methods were created as
conveniences for the programmer.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
12 Chapter 1 Creating Java Programs
The dots (periods) in System.out.println() are used to separate the names of the components in the statement.
You will use this format repeatedly in your Java programs. Java is case sensitive; the class named System is a
completely different class from one named system, SYSTEM, or even sYsTeM, and out is a different object from one
named Out or OUT. You must pay close attention to using correct uppercase and lowercase values when you write
Java programs.
So, the statement that displays the string "First Java application" contains the following:
The statement that displays the string cannot stand alone; it is embedded within a class, as shown in Figure 1-4.
❯❯A Java identifier must begin with a letter of the English alphabet, a non-English letter (such as a or p), an
underscore, or a dollar sign. A class name cannot begin with a digit.
❯❯A Java identifier can contain only letters, digits, underscores, or dollar signs.
❯❯A Java identifier cannot be a reserved keyword, such as public or class. (See Figure 1-6 for a list of reserved
keywords.)
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.4 Analyzing a Java Application That Produces Console Output 13
❯❯A Java identifier cannot be one of the following values: true, false, or null. These are not keywords (they
are primitive values), but they are reserved and cannot be used.
❯❯The following are not keywords, but their use is restricted in some contexts: permits, record, sealed, var,
and yield. It is better not to use these words as identifiers.
Java is based on Unicode, which is an international system of character representation. The term letter
Note indicates English-language letters as well as characters from Arabic, Greek, and other alphabets. You can
learn more about Unicode in Appendix B.
The first entry in Figure 1-6, the underscore, was added as a keyword in Java 9. The keyword non-sealed
Note was added in Java 15. The keyword non-sealed is unconventional, as no other keywords use a hyphen.
Although const and goto are reserved as keywords, they are not used in Java programs, and they have
Note no function. Both words are used in other languages and were reserved in case developers of future
versions of Java wanted to implement them.
It is a Java standard, although not a requirement, to begin class identifiers with an uppercase letter and employ other
uppercase letters as needed to improve readability. (By contrast, method identifiers, like println(), conventionally
begin with a lowercase letter.) The style that joins words in which each word begins with an uppercase letter is
called Pascal casing, or sometimes upper camel casing. You should follow established conventions for Java so your
programs will be easy for other programmers to interpret and follow. This course uses established Java programming
conventions.
Table 1-1 lists some valid and conventional class names that you could use when writing programs in Java. Table 1-2
provides some examples of class names that could be used in Java (if you use these class names, the class will compile)
but that are unconventional and not recommended. Table 1-3 provides some class name examples that are illegal.
Table 1-2 Legal but unconventional and nonrecommended class names in Java
Class Name Description
Undergradstudent New words are not indicated with initial uppercase letters, making this identifier difficult to read
Inventory_Item An underscore is not commonly used to indicate new words
BUDGET2024 Using all uppercase letters for class identifiers is not conventional
budget2024 Conventionally, class names do not begin with a lowercase letter
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
14 Chapter 1 Creating Java Programs
Figure 1-7 shows the parts of the First class shell in its first, second, and last lines—its header, and its opening and
closing curly braces. The class header contains the keyword class, which identifies First as a class. The keyword
public is an access specifier. An access specifier defines the circumstances under which a class can be accessed
and the other classes that have the right to use a class. Public access is the most liberal type of access; you will learn
about public access and other types of access when you learn more about methods.
After the class header, you enclose the contents of a class within curly braces ({ and }); any data items and methods
between the curly braces make up the class body. A class body can be composed of any number of data items and
methods. In Figure 1-7 (and again in Figure 1-8), the class First contains four lines between the curly braces; these
will be described in the next section.
This line is
public class First
the class
header. {
public static void main(String[] args)
Everything {
between the System.out.println("First Java application");
curly braces is }
the class body. }
String is a class. Any The square brackets mean the args is the identifier of the array of
arguments to this method argument to this method is an Strings that is the argument to
must be String objects. array of Strings. You will this method.
learn about arrays later in this
course.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.4 Analyzing a Java Application That Produces Console Output 15
A method header is the first line in a method; it contains information about how other methods can interact with it.
In Figure 1-8, the method header is public static void main(String[] args). The meaning and purpose
of each of the terms used in the method header will become clearer as you complete this course; a brief explanation
will suffice for now.
❯❯The keyword public is an access specifier, just as it is when you use it to define the First class.
❯❯The keyword static means that a method is accessible and usable even though no objects of the class
exist.
❯❯The keyword void indicates that the main() method does not return any value when it is called. This doesn’t
mean that main() doesn’t produce output—in fact, this method does. It only means that the main() method
does not send any value back to any other method that might use it. You will learn more about return values
when you study methods in more detail.
❯❯The name of the method is main(). As is the convention with Java methods, its identifier begins with
a lowercase letter. Not all classes have a main() method; in fact, many do not. All Java applications,
however, must include a class containing a public method named main(), and most Java applications
have additional classes and methods. When you execute a Java application, the JVM always executes the
main() method first.
❯❯In the method header, the contents between the parentheses, String[] args, represent the type of
argument that can be passed to the main() method, just as the string "First Java application"
is an argument passed to the println() method. The String class is a Java class that can be used to
hold character strings. According to Java convention, it begins with an uppercase letter, like other classes.
The brackets following String mean that the argument is a list of Strings. You will learn more about the
String class and lists later in this course. The identifier args is used to hold any String objects that
might be sent to the main() method. The main() method could do something with those arguments,
such as display them, but in Figures 1-4, 1-7, and 1-8, the main() method does not actually use the args
identifier. Nevertheless, you must place an identifier within the main() method’s parentheses. The
identifier does not need to be named args—it could be any legal Java identifier—but the name args is
traditional.
In this course, you won’t pass any arguments to a program’s main() method, but when you run a
Note program, you could. Even though you pass no arguments, the main() method must contain String[]
and a legal identifier (such as args) within its parentheses.
The simple application originally shown in Figure 1-4 has many Figure 1-9 Shell code
pieces to remember. However, for now, you can use the Java code
shown in Figure 1-9 as a shell, in which you replace AnyClassName public class AnyClassName
{
with a class name you choose and the line /******/ with any public static void main(String[] args)
statements that you want to execute. {
/******/
}
}
Indent Style
In general, whitespace is optional in Java. Whitespace is any com-
bination of nonprinting characters. You use whitespace to organize your program code and make it easier to read.
You can insert whitespace between words or lines in your program code by typing spaces, tabs, or blank lines
because the compiler ignores these extra spaces. However, you cannot use whitespace within an identifier or
keyword, or surrounding the dots in any class-object-method combination.
For every opening curly brace ({) in a Java program, there must be a corresponding closing curly brace (}), but the
placement of the opening and closing curly braces is not important to the compiler. For example, the following class
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
16 Chapter 1 Creating Java Programs
executes in exactly the same way as the one shown in Figure 1-4. The only difference is the layout of the braces—the
line breaks occur after the opening braces instead of before them.
public class First{
public static void main(String[] args){
System.out.println("First Java application");
}
}
The indent style shown in the preceding example, in which opening braces do not stand alone on separate
lines, is known as the K & R style and is named for Kernighan and Ritchie, who wrote the first book about the
C programming language. The indent style shown in Figures 1-4, 1-7, and 1-8, in which curly braces are aligned
and each occupies its own line, is called the Allman style and is named for Eric Allman, a programmer who
popularized the style. The Allman style is used throughout this course. However, Java programmers use a variety
of indent styles, and all can produce workable Java programs. When you write your own code, you should develop
a consistent style. In school, your instructor might have a preferred style, and when you get a job as a Java
programmer, your organization most likely will have a preferred style. With many development environments,
indentations are made for you automatically as you type.
Most programmers indent a method’s statements a few spaces more than its curly braces. Some programmers indent
two spaces, some three, and some four. Some programmers use the Tab key to create indentations, but others are
opposed to this practice because the Tab key can indicate different indentation sizes on different systems. Some pro-
grammers don’t care whether tabs or spaces are used, as long as they are not mixed in the same program. The Java
compiler does not care how you indent. Again, the most important rule is to develop a consistent style of which your
organization approves.
Two Truths & a Lie Analyzing a Java Application That Produces Console Output
1. In the method header public static void main(String[] args), the word public is an access specifier.
2. In the method header public static void main(String[] args), the word static means that a
method is accessible and usable, even though no objects of the class exist.
3. In the method header public static void main(String[] args), the word void means that the
main() method is an empty method.
The false statement is #3. In the method header public static void main(String[] args), the word void
means that the main() method does not return any value when it is called.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.4 Analyzing a Java Application That Produces Console Output 17
Now that you understand the basics of an application written in Java, you are ready to enter your own Java
application into a text editor. It is a tradition among programmers that the first program you write in any language
produces “Hello, world!” as its output. You will create such a program now. You can use any text editor, such as
Notepad or TextPad, or a development environment, such as Eclipse.
It is best to use the simplest available text editor when writing Java programs. Multifeatured word-
Note processing programs save documents as much larger files because of all the built-in features, such as font
styles and margin settings, which the Java compiler cannot interpret. Additionally, one school of thought
is that you should use a simple text editor such as Notepad because it does not provide features such as
automatically completing statements for you or color-coding language features, thus forcing you to better
learn all the nuances of the language.
3. Press Enter once, type { (opening curly brace), press Enter again, and type } (closing curly brace). You will add
the main() method between these curly braces. Although it is not required, the convention used in this course
is to place each curly brace on its own line and to align opening and closing curly brace pairs with each other.
Using this format makes your code easier to read.
4. As shown in Figure 1-10, add the main() method header between the curly braces, and then type a set of
curly braces for main().
5. Next, add the statement within the main() method that will produce the output Hello, world!. Use Figure 1-11
as a guide for adding the println() statement to the main() method.
6. Save the application as Hello.java. The class name and filename must match exactly, and you must use the .java
extension.
Figure 1-10 The main() method shell Figure 1-11 Complete Hello class
for the Hello class
public class Hello
public class Hello {
{ public static void main(String[] args)
public static void main(String[] args) {
{ System.out.println("Hello, world!");
} }
} }
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
18 Chapter 1 Creating Java Programs
1.5 C
ompiling a Java Class and Correcting
Syntax Errors
After you write and save an application, two steps must occur before you can view the application’s output.
1. You must compile the class you wrote (called the source code) into bytecode.
2. You must use the Java interpreter to translate the bytecode into executable statements.
❯❯You receive no messages, which means that the application compiled successfully.
When compiling, if the source code file is not in the current path, you can type a full path with the
Note filename. For example:
javac c:\java\MyClasses\Chapter.01\First.java
In a DOS environment, you can change directories using the cd command. For example, to change from
Note the current directory to a subdirectory named MyClasses, you type cd MyClasses and press Enter.
Within any directory, you can back up to the root directory by typing cd\ and pressing Enter.
If you receive an error message that the command is not recognized, it might mean one of the following:
❯❯You are not within the correct subfolder or subdirectory on your command line.
❯❯Java was not installed properly, or the class or classpath variable was not set correctly.
(See Appendix A for information about installation, class, and classpath.)
If you receive a programming language error message, it means the source code has one or more syntax errors. Recall
that a syntax error is a programming error that occurs when you introduce typing errors into your program or use
the programming language incorrectly. For example, if your class name is first (with a lowercase f ) in the source
code but you saved the file as First.java (with an uppercase F ), you will receive an error message when you compile
the application. The error message will be similar to class first is public, should be declared in a file named first.java
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
1.5 Compiling a Java Class and Correcting Syntax Errors 19
because first and First are not the same in a case-sensitive language. If this error occurs, you must reopen the text file
that contains the source code, make the necessary corrections, and then save the file and attempt to compile it again.
If you receive no error messages after compiling the code in a file named First.java, the application compiled successfully.
In that case, a file named First.class is created and saved in the same folder as the text file that holds the source code.
After a successful compile, you can execute the program (run the class file) on any computer that has a Java language
interpreter. You will learn how to execute a program in the next section.
The FirstWithMissingSemicolon class shown in Figure 1-12 contains an error—the semicolon is missing at the
end of the println() statement. (Of course, this class has been helpfully named to alert you to the error.) When you
compile this class, an error message similar to the one shown in Figure 1-13 is displayed.
The first line of the error message in Figure 1-13 displays the name of the file in which the error was found
(FirstWithMissingSemicolon.java), the line number in which it was found (5), and the nature of the error (’;’ expected).
The next line of the error message displays the statement that contains the error, including a caret that points to the
exact location where the error was first discovered. As you will see when you write and compile Java programs, the
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
20 Chapter 1 Creating Java Programs
place where an error is discovered is not necessarily where the error was made. For example, sometimes an error is
not discovered until the line that follows the line that contains the error. Fairly frequently, it takes a little detective
work to interpret an error message and determine its cause.
Finally, the message generated in Figure 1-13 includes a count of the number of errors found—in this case, there is just
one error. This error is an example of a compile-time error, or one in which the compiler detects a violation of language
syntax rules and is unable to translate the source code to machine code.
When you compile a class, the compiler reports as many errors as it can find so that you can fix as many errors as
possible. Sometimes, one error in syntax causes multiple error messages that normally would not be errors if the
first syntax error did not exist, so fixing one error might eliminate multiple error messages. Sometimes, when you fix
a compile-time error and recompile a program, new error messages are generated. That’s because when you fix the
first error, the compiler can proceed beyond that point and possibly discover new errors. Of course, no programmer
intends to type a program containing syntax errors, but when you do, the compiler finds them all for you.
Two Truths & a Lie Compiling a Java Class and Correcting Syntax Errors
1. After you write and save an application, you can compile the bytecode to create source code.
2. When you compile a class, you create a new file with the same name as the original file but with a .class
extension.
The false statement is #1. After you write and save an application, you can compile the source code to create
bytecode.
You are ready to compile the Hello class that you created in the previous “You Do It” section.
1. If it is not still open on your screen, open the Hello.java file that you saved in the previous “You Do It” section.
2. If you are using a development environment, you can compile a program by clicking the Compile button.
Otherwise, you can compile a program from the command prompt. Go to the command-line prompt for the
drive and folder or subdirectory in which you saved Hello.java. At the command line, type the following:
javac Hello.java
After a few moments, you should return to the command prompt. If you see error messages instead, reread the
previous section to discover whether you can determine the source of the error.
If the error message indicates that the command was not recognized, make sure that you spelled the javac
command correctly, including using the correct case. Also, make sure you are using the correct directory or folder
where the Hello.java file is stored.
Copyright 2023 Cengage Learning. All Rights Reserved. May not be copied, scanned, or duplicated, in whole or in part. Due to electronic rights, some third party content may be suppressed from the eBook and/or eChapter(s).
Editorial review has deemed that any suppressed content does not materially affect the overall learning experience. Cengage Learning reserves the right to remove additional content at any time if subsequent rights restrictions require it.
Another random document with
no related content on Scribd:
As soon as I had taken my seat, my attention was attracted by an old
negro near me, whom I supposed for some time to be suffering
under some nervous complaint; he trembled, his teeth chattered, and
his face, at intervals, was convulsed. He soon began to respond
aloud to the sentiments of the preacher, in such words as these: “Oh,
yes!” “That’s it, that’s it!” “Yes, yes—glory—yes!” and similar
expressions could be heard from all parts of the house whenever the
speaker’s voice was unusually solemn, or his language and manner
eloquent or excited.
Sometimes the outcries and responses were not confined to
ejaculations of this kind, but shouts, and groans, terrific shrieks, and
indescribable expressions of ecstacy—of pleasure or agony—and
even stamping, jumping, and clapping of hands were added. The
tumult often resembled that of an excited political meeting; and I was
once surprised to find my own muscles all stretched, as if ready for a
struggle—my face glowing, and my feet stamping—having been
infected unconsciously, as men often are, with instinctive bodily
sympathy with the excitement of the crowd. So wholly unintellectual
was the basis of this excitement, however, that I could not, when my
mind retroverted to itself, find any connection or meaning in the
phrases of the speaker that remained in my memory; and I have no
doubt it was his “action” rather than his sentiments, that had given
rise to the excitement of the congregation.
I took notes as well as I could of a single passage of the sermon.
The preacher having said that among the games of the arena, were
“raaslin” (wrestling) and boxing, and described how a combatant,
determined to win the prize, would come boldly up to his adversary
and stand square before him, looking him straight in the eyes, and
while he guarded himself with one hand, would give him a “lick” with
the other, continued in these words: “Then would he stop, and turn
away his face, and let the adversary hit back? No, my brethren, no,
no! he’d follow up his advantage, and give him another lick; and if he
fell back, he’d keep close after him, and not stop!—and not faint!—
not be content with merely driving him back!—but he’d persevere!
(yes, glory!) and hit him again! (that’s it, hit him again! hit him again!
oh, glory! hi! hi! glory!) drive him into the corner! and never, never
stop till he had him down! (glory, glory, glory!) and he had got his foot
on his neck, and the crown of wild olive leaves was placed upon his
head by the lord of the games. (Ha! ha! glory to the Lord! etc.) It was
the custom of the Olympian games, my brethren, for the victor to be
crowned with a crown of wild olive leaves; but sometimes, after all, it
wouldn’t be awarded right, because the lord of the games was a
poor, frail, erroneous man, and maybe he couldn’t see right, or
maybe he wasn’t an honest man, and would have his favourites
among the combatants, and if his favourite was beaten, he would not
allow it, but would declare that he was the victor, and the crown
would descend on his head (glory!) But there ain’t no danger of that
with our fight with the world, for our Lord is throned in justice. (Glory!
—oh, yes! yes!—sweet Lord! sweet Lord!) He seeth in secret, and he
knoweth all things, and there’s no chance for a mistake, and if we
only will just persevere and conquer, and conquer and persevere
(yes, sir! oh, Lord, yes!) and persevere—not for a year, or for two
year, or ten year; nor for seventy year, perhaps; but if we persevere
—(yes! yes!)—if we persevere—(oh! Lord! help us!)—if we
persevere unto the end—(oh! oh! glory! glory! glory!)—until he calls
us home! (Frantic shouting.) Henceforth there is laid up for us a
crown of immortal glory—(Ha! ha! HA!)—not a crown of wild olive
leaves that begin to droop as soon as they touch our brow, (oh! oh!
oh!) but a crown of immortal glory! That fadeth not away! Never
begins to droop! But is immortal in the heavens!” (Tremendous
uproar, many of the congregation on their feet, and uttering cries and
shrieks impossible to be expressed in letters.) The shabby
gentleman by my side, who had been asleep, suddenly awakened,
dropped his stick, and shouted with all his might, “Glory to the Lord!”
The body of the house was filled by the audience; there were
galleries, but few persons were in them; on one side, two or three
boys, and on the other, on the seat nearest the pulpit, about a dozen
women.
The preacher was drawing his sermon to a close, and offering some
sensible and pertinent advice, soberly and calmly, and the
congregation was attentive and comparatively quiet, when a small
old woman, perfectly black, among those in the gallery, suddenly
rose, and began dancing and clapping her hands; at first with a slow
and measured movement, and then with increasing rapidity, at the
same time beginning to shout “ha! ha!” The women about her arose
also, and tried to hold her, as there appeared great danger that she
would fall out of the gallery, and those below left their pews that she
might not fall upon them.
The preacher continued his remarks—much the best part of his
sermon—but it was plain that they were wasted; every one was
looking at the dancing woman in the gallery, and many were
shouting and laughing aloud (in joyful sympathy, I suppose). His eye
flashed as he glanced anxiously from the woman to the people, and
then stopping in the middle of a sentence, a sad smile came over his
face; he closed the book and bowed his head upon his hands to the
desk. A voice in the congregation struck into a tune, and the whole
congregation rose and joined in a roaring song. The woman was still
shouting and dancing, her head thrown back and rolling from one
side to the other. Gradually her shout became indistinct, she threw
her arms wildly about instead of clapping her hands, fell back into
the arms of her companions, then threw herself forward and
embraced those before her, then tossed herself from side to side,
gasping, and finally sunk to the floor, where she remained at the end
of the song, kicking, as if acting a death struggle.
Another man now rose in the pulpit, and gave out a hymn, naming
number and page, and holding a book before him, though I thought
he did not read from it, and I did not see another book in the house.
Having recited seven verses, and repeated the number and page of
the hymn, he closed the book and commenced to address the
congregation. He was a tall, full-blooded negro, very black, and with
a disgusting expression of sensuality, cunning, and vanity in his
countenance, and a pompous, patronizing manner—a striking
contrast, in all respects, to the prepossessing, quiet, and modest
young preacher who had preceded him. He was dressed in the
loosest form of the fashionable sack overcoat, which he threw off
presently, showing a white vest, gaudy cravat, and a tight cut-away
coat, linked together at the breast with jet buttons. He commenced
by proposing to further elucidate the meaning of the apostle’s words;
they had an important bearing, he said, which his brother had not
had time to bring out adequately before the congregation. At first he
leaned carelessly on the pulpit cushion, laughing cunningly, and
spoke in a low, deep, hoarse, indistinct, and confidential tone; but
soon he struck a higher key, drawling his sentences like a street
salesman, occasionally breaking out into a yell with all the strength
of extraordinarily powerful lungs, at the same time taking a striking
attitude and gesturing in an extraordinary manner. This would create
a frightful excitement in the people, and be responded to with the
loudest and most terrific shouts. I can compare them to nothing else
human I ever heard. Sometimes he would turn from the audience
and assume a personal opponent to be standing by his side in the
pulpit. Then, after battling for a few minutes in an awful and majestic
manner with this man of Belial, whom he addressed constantly as
“sir!” he would turn again to the admiring congregation, and in a
familiar, gratulatory, and conversational tone explain the difficulty into
which he had got him, and then again suddenly turn back upon him,
and in a boxing attitude give another knock-down reply to his
heretical propositions.
His language was in a great part unintelligible to me, but the
congregation seemed to enjoy it highly, and encouraged and
assisted him in his combat with “Sir” Knight of his imagination most
tumultuously; and I soon found that this poor gentleman, over whom
he rode his high horse so fiercely, was one of those “who take unto
themselves the name of Baptist,” and that the name of his own
charger was “Perseverance-of-the-Saints.”
The only intelligible argument that I could discover, was presented
under the following circumstances. Having made his supposed
adversary assert that “if a man would only just believe, and let him
bury him under de water, he would be saved,”—he caught up the big
pulpit Bible, and using it as a catapult, pretended to hurl from it the
reply—“Except ye persevere and fight de good fight unto de end, ye
shall be damned!” “That’s it, that’s it!” shouted the delighted
audience. “Yes! you shall be damned! Ah! you’ve got it now, have ye!
Pooh!—Wha’s de use o’ his tellin’ us dat ar?” he continued, turning
to the congregation with a laugh; “wha’s de use on’t, when we know
dat a month arter he’s buried ’em under de water—whar do we find
’em? Ha? ah ha! Whar? In de grog-shop! (ha! ha! ha! ha!) Yes we
do, don’t we? (Yes! yes!) In de rum-hole! (Ha! ha! ha! Yes! yes! oh
Lord!) and we know de spirit of rum and de Spirit of God hasn’t got
no ‘finities. (Yah! ha! ha! yes! yes! dat’s it! dat’s it! oh, my Jesus! Oh!
oh! glory! glory!) Sut’nly, sah! You may launch out upon de ocean a
drop of oil way up to Virginny, and we’ll launch annudder one heah to
Lusiana, and when dey meets—no matter how far dey been gone—
dey’ll unite! Why, sah? Because dey’s got de ‘finities, sah! But de
spirit of rum haint got nary sort o’ ‘finity with de Spirit,” etc.
Three of the congregation threw themselves into hysterics during this
harangue, though none were so violent as that of the woman in the
gallery. The man I had noticed first from his strange convulsive
motions, was shaking as if in a violent ague, and frequently snatched
the sleeve of his coat in his teeth as if he would rend it. The speaker
at length returned to the hymn, repeated the number and page and
the first two lines. These were sung, and he repeated the next, and
so on, as in the Scotch Presbyterian service. The congregation sang;
I think every one joined, even the children, and the collective sound
was wonderful. The voices of one or two women rose above the rest,
and one of these soon began to introduce variations, which
consisted mainly of shouts of Oh! oh! at a piercing height. Many of
the singers kept time with their feet, balancing themselves on each
alternately, and swinging their bodies accordingly. The reading of the
lines would be accompanied also by shouts, as during the previous
discourse.
When the preacher had concluded reading the last two lines, as the
singing again proceeded, he raised his own voice above all, turned
around, clapped his hands, and commenced to dance, and laughed
aloud—first with his back, and then with his face to the audience.
The singing ceased, but he continued his movements, leaping, with
increasing agility, from one side of the pulpit to the other. The people
below laughed and shouted, and the two other preachers who were
shut in the pulpit with the dancer, tried hard to keep out of his way,
and threw forward their arms or shoulders, to fend off his powerful
buffets as he surged about between them. Swinging out his arms at
random, with a blow of his fist he knocked the great Bible spinning
off the desk, to the great danger of the children below; then threw
himself back, jamming the old man, who was trying to restrain him,
against the wall.
At the next heave, he pitched headforemost into the young preacher,
driving him through the door and falling with him half down the stairs,
and after bouncing about a few moments, jerking his arms and legs
violently, like a supple jack, in every direction, and all the time driving
his breath with all the noise possible between his set teeth, and
trying to foam at the mouth and act an epileptic fit, there he lay as if
dead, the young preacher, with the same sad smile, and something
of shame on his face, sitting on the stair holding his head on his
shoulder, and grasping one of his hands, while his feet were
extended up into the pulpit.
The third man in the pulpit, a short, aged negro, with a smiling face,
and a pleasing manner, took the Bible, which was handed up to him
by one of the congregation, laid it upon the desk, and, leaning over
it, told the people, in a gentle, conversational tone, that the “love
feast” would be held at four o’clock; gave some instructions about
the tickets of admission, and severely reproved those, who were in
the habit of coming late, and insisted upon being let in after the
doors were locked. He then announced that the doxology would be
sung, which accordingly followed, another woman going into
hysterics at the close. The prostrate man rose, and released the
young preacher, who pronounced the Apostles’ blessing, and the
congregation slowly passed out, chatting and saluting one another
politely as they went, and bearing not the slightest mark of the
previous excitement.
I came to Mr. R.’s plantation by a steamboat, late at night. As the
boat approached the shore, near his house, her big bell having been
rung some ten minutes previously, a negro came out with a lantern
to meet her. The boat’s bow was run boldly against the bank; I
leaped ashore, the clerk threw out a newspaper and a package,
saying to the negro, “That’s for your master, and that’s for so-and-so,
tell your master, and ask him to give it to him.” The boat bounded off
at once, by her own elasticity, the starboard wheel was backed for a
turn or two, and the next minute the great edifice was driving up the
stream again—not a rope having been lifted, nor any other
movement having been made on board, except by the pilot and
engineer.
“Do you belong to Mr. R.?” I asked the negro. “Yes, sir; is you going
to our house, master?” “Yes.” “I’ll show you the way, then, sir;” and
he conducted me in, leaving the parcels the clerk had thrown out,
where they had fallen, on the bank.
A negro woman prepared a bed for me, waited at the door till I had
put out my light, and then returned to tuck in the musquito-bar tightly
about the bed. This was merely from custom, as there were no
musquitoes at that season. In the morning the same woman
awakened me, opened the curtains, and asked me to take the
money which she had found in the pockets of my clothing, while she
took it out to be brushed.
Mr. R. is a Southerner by birth, but was educated at the North,
where, also, and in foreign countries, he has spent a large part of his
life. He is a man of more than usual precision of mind, energetic and
humane; and while his negroes seemed to be better disciplined than
any others I had seen, they evidently regarded him with affection,
respect, and pride.
He had been ill for some weeks previous to my visit, and when he
walked out with me, on the second day, it was the first time since the
commencement of his illness that his field-hands had seen him.
The first negroes we met were half a dozen women, who were going
up to the nursery to suckle their children—the overseer’s bell having
been just rung (at eleven o’clock), to call them in from work for that
purpose. Mr. R. said that he allowed them two hours to be with their
children while nursing at noon, and to leave work an hour earlier at
night than the other field-hands. The women all stopped as we met
them, and asked, with much animation:
“Oh, master! how is ou?”
“Well, I’m getting up. How are you, girls?”
“Oh, we’s well, sir.”
“The children all well?”
“Yes, master, all but Sukey’s, sir.”
“Sukey’s? What, isn’t that well yet?”
“No, master.”
“But it’s getting well, is it not?”
“Yes, master.”
Soon after we met a boy, driving a cart. He pulled up as he came
against us, and, taking off his hat, asked, “How is ‘ou, master?”
“I’m getting well, you see. If I don’t get about, and look after you, I’m
afraid we shan’t have much of a crop. I don’t know what you niggers
will do for Christmas money.”
“Ha!—look heah, massa!—you jus’ go right straight on de ways you’s
goin’; see suthin’ make you laugh, ha! ha!” (meaning the work that
had been done while he was ill, and the good promise of a crop).
The plantation contained about nine hundred acres of tillage land,
and a large tract of “swamp,” or woodland, was attached to it. The
tillage land was inclosed all in one field by a strong cypress post and
rail fence, and was drained by two canals, five feet deep, running
about twenty feet apart, and parallel—the earth from both being
thrown together, so as to make a high, dry road between them,
straight through the middle of the plantation.
Fronting upon the river, and but six or eight rods from the public
road, which everywhere runs close along the shore inside the levee,
was the mansion of the proprietor: an old Creole house, the lower
story of brick and the second of wood, with a broad gallery, shaded
by the extended roof, running all around it; the roof steep, and
shedding water on four sides, with ornaments of turned wood where
lines met, and broken by several small dormer windows. The gallery
was supported by round brick columns, and arches. The parlours,
library, and sleeping rooms of the white family were all on the second
floor. Between the house and the street was a yard, planted formally
with orange-trees and other evergreens. A little on one side of the
house stood a large two-story, square dove-cot, which is a universal
appendage of a sugar-planter’s house. In the rear of the house was
another large yard, in which, irregularly placed, were houses for the
family servants, a kitchen, stable, carriage-house, smoke-house, etc.
Behind this rear-yard there was a vegetable garden, of an acre or
more, in the charge of a negro gardener; a line of fig-trees were
planted along the fence, but all the ground inclosed was intended to
be cropped with vegetables for the family, and for the supply of “the
people.” I was pleased to notice, however, that the negro-gardener
had, of his own accord, planted some violets and other flowering
plants. From a corner of the court a road ran to the sugar-works and
the negro settlement, which were five or six hundred yards from the
house.
The negro houses were exactly like those I have described on the
Georgia Rice Plantation, except that they were provided with broad
galleries in front. They were as neat and well-made externally as the
cottages usually provided by large manufacturing companies in New
England, to be rented to their workmen. The clothing furnished the
negroes, and the rations of bacon and meal, were the same as on
other good plantations. During the grinding season extra rations of
flour were served, and hot coffee was kept constantly in the sugar-
house, and the hands on duty were allowed to drink it almost ad
libitum. They were also allowed to drink freely of the hot sirop, of
which they were extremely fond. A generous allowance of sirop, or
molasses, was also given out to them, with their other rations, every
week during the winter and early summer. In extremely hot weather it
was thought to be unfavourable to health, and was discontinued.
Rations of tobacco were also served. At Christmas, a sum of money,
equal to one dollar for each hogshead of sugar made on the
plantation, was divided among the negroes. The last year this had
amounted to over two dollars a head. It was usually given to the
heads of families. If any had been particularly careless or lazy, it was
remembered at this Christmas dole. Of course, the effect of this
arrangement, small as was the amount received by each person,
was to give the labourers a direct interest in the economical direction
of their labour: the advantage of it was said to be evident.
Mr. R. had purchased the plantation but three years before, and had
afterwards somewhat increased its area by buying out several poor
people, who had owned small farms adjoining. He had greatly
extended and improved the drainage, and had nearly doubled the
force of negroes employed upon it, adding to the number that he
purchased with the land, nearly as many more whom he had
inherited, and whom he transferred to it from an old cotton plantation
that he had formerly lived upon.
He had considerably more than doubled the stock of mules and
oxen; had built entirely new cabins for all the negroes, and new
sugar-works and stables. His whole capital, he said, when he first
bought the plantation, would not have paid half the price of it and of
the cost of stocking it as he had done. Most men when they buy a
plantation, he informed me, go very heavily in debt; frequently the
purchase is made three quarters on credit.
“Buying a plantation,” were his words, “whether a sugar or cotton
plantation, in this country, is usually essentially a gambling operation.
The capital invested in a sugar plantation of the size of mine ought
not to be less than $150,000. The purchaser pays down what he
can, and usually gives security for the payment of the balance in six
annual instalments, with interest (10 per cent. per annum) from the
date of the purchase. Success in sugar, as well as cotton planting, is
dependent on so many circumstances, that it is as much trusting to
luck as betting on a throw of dice. If his first crop proves a bad one,
he must borrow money of the Jews in New Orleans to pay his first
note; they will sell him this on the best terms they can—often at not
less than 25 per cent. per annum. If three or four bad crops follow
one another, he is ruined. But this is seldom the case, and he lives
on, one year gaining a little on his debts, but almost as often
enlarging them. Three or four years ago there was hardly a planter in
Louisiana or Mississippi who was not in very embarrassed
circumstances, nearly every one having his crops pledged to his
creditors long before they were secured. The good prices and good
crops of the last few years have set them all on their legs again; and
this year all the jewellers’ shops, and stores of rich furniture and dry
goods, in New Orleans, were cleared out by the middle of the
season, and everybody feels strong and cheerful. I have myself been
particularly fortunate; I have made three good crops in succession.
Last year I made six hundred and fifty hogsheads of sugar, and
twelve hundred barrels of molasses. The molasses alone brought
me a sum sufficient to pay all my plantation expenses; and the sugar
yields me a clear profit of twenty-five per cent. on my whole
investment. If I make another crop this year as good as that, I shall
be able to discount my outstanding notes, and shall be clear of debt
at the end of four years, instead of six, which was all I had hoped
for.”
On another plantation, which I have since visited, which had a slave
population of over two hundred—counted as one hundred field-
hands—the sugar works cost $40,000, and seven hundred barrels of
sugar were made last year. On this plantation there is a steam-
pump, which drains the rear of the plantation over a levee, when the
back-water from the swamp would otherwise prevent perfect
drainage.
Mr. R. modestly credited his extraordinary success to “luck;” but I
was satisfied, upon examining his improvements, and considering
the reasons, which he readily gave for every operation which he
showed, or described to me, that intelligence, study, and enterprise
had seldom better claims to reward. Adjoining his plantation there
was another of nearly twice the size, on which an equal number of
negroes and only half the number of cattle were employed; and the
proprietor, I was told, had had rather bad luck: he had, in fact, made
but little more than half as much sugar as Mr. R. I inquired of the
latter if there was any advantage in his soil over that of his
neighbour’s. “I think not,” he replied; “my best cane was made on a
piece of land adjoining his, which, before I bought it, was thought
unfit for cultivation. The great advantage I had over him last year,
mainly arose from my having secured a more complete drainage of
all my land.”
The soil of the greater part of the plantation was a fine, dark, sandy
loam; some of it, at the greatest distance from the river, was lighter in
colour, and more clayey; and in one part, where there was a very
slight depression of the surface over about fifty acres, there was a
dark, stiffish soil. It was this to which Mr. R. alluded as having
produced his best cane. It had been considered too low, wet,
tenacious, and unfertile to be worthy of cultivation by the former
owner, and was covered with bushes and weeds when he took it.
The improvement had been effected entirely by draining and fall-
ploughing. In fall-ploughing, as a remedy for tenacity of soil, this
gentleman’s experience had given him great faith. At various points,
on my tour, I found most conflicting opinions upon this point, many
(among them the President of a State Agricultural Society) having
invariably observed pernicious effects result from it.
The sugar-cane is a perennial-rooted plant, and the stalk does not
attain its full size, under favourable circumstances, in less growing
time than twelve months; and seed does not usually form upon it
until the thirteenth or fourteenth month. This function (termed
arrowing) it only performs in a very hot and steadily hot climate,
somewhat rarely even in the West Indies. The plant is, at all stages,
extremely susceptible to cold, a moderate frost not only suspending
its growth, but disorganizing it so that the chemical qualities of its
sap are changed, and it is rendered valueless for sugar making.
As frosts of considerable severity are common in all parts of
Louisiana, during three months of the year, of course the sugar-cane
is there never permitted to attain its full growth. To so much greater
perfection does it arrive in the West Indies, that the cane produced
on one acre will yield from 3,000 to 6,000 lbs. of sugar, while in
Louisiana 1,000 is considered the average obtained. “I could make
sugar in the climate of Cuba,” said a Louisiana planter to me, “for
half the price that, under the most favourable circumstances, it must
cost here.” In addition to the natural uncongeniality of the climate,
the ground on which it grows in Louisiana, being lower than the
surface of the river, is much of the time made cold by the infiltration
of moisture. It is, therefore, only by reason of the extreme fertility of
this alluvial deposit, assisted by a careful method of cultivation, that
the cane is forced to a state of maturity which enables it to yield an
amount of sugar which, with the assistance of a governmental
protection against foreign competition, will be remunerative to the
planter.
I must confess that there seems to me room for grave doubt if the
capital, labour, and especially the human life, which have been and
which continue to be spent in converting the swamps of Louisiana
into sugar plantations, and in defending them against the annual
assaults of the river, and the fever and the cholera, could not have
been better employed somewhere else. It is claimed as a great
advantage of Slavery, as well as of Protection, that what has been
done for this purpose never would have been done without it. If it
would not, the obvious reason is, that the wages, or prospect of profit
would not have been sufficient to induce free men to undergo the
inconveniences and the danger incident to the enterprise. There is
now great wealth in Louisiana; but I question if greater wealth would
not have been obtained by the same expenditure of human labour,
and happiness, and life, in very many other directions.
Planting commences immediately after the sugar-manufacturing
season is concluded—usually in January. New or fallow land is
prepared by ploughing the whole surface: on this plantation the
plough used was made in Kentucky, and was of a very good model,
ploughing seven to nine inches deep, with a single pair of mules.
The ground being then harrowed, drills are opened with a double
mould-board plough, seven feet apart. Cuttings of cane for seed are
to be planted in them. These are reserved from the crop in the
autumn, when some of the best cane on the plantation is selected for
this purpose, while still standing.[38] This is cut off at the roots, and
laid up in heaps or stacks, in such a manner that the leaves and tops
protect the stalks from frost. The heaps are called mattresses; they
are two or three feet high, and as many yards across. At the planting
season they are opened, and the cane comes out moist and green,
and sweet, with the buds or eyes, which protrude at the joints,
swelling. The immature top parts of the stalk are cut off, and they are
loaded into carts, and carried to the ground prepared for planting.
The carts used are large, with high side-boards, and are drawn by
three mules—one large one being in the shafts, and two lighter ones
abreast, before her. The drivers are boys, who use the whip a great
deal, and drive rapidly.
In the field I found the labourers working in three divisions—the first,
consisting of light hands, brought the cane by arms-full from the cart,
and laid it by the side of the furrows; the second planted it, and the
third covered it. Planting is done by laying the cuttings at the bottom
of the furrow, in such a way that there shall be three always together,
with the eyes of each a little removed from those of the others—that
is, all “breaking joints.” They are thinly covered with earth, drawn
over them with hoes. The other tools were so well selected on this
plantation, that I expressed surprise at the clumsiness of the hoes,
particularly as the soil was light, and entirely free from stones. “Such
hoes as you use at the North would not last a negro a day,” said the
planter.
Cane will grow for several years from the roots of the old plants, and,
when it is allowed to do so, a very considerable part of the expense
is avoided; but the vigour of the plant is less when growing from this
source than when starting from cuttings, and the crop, when thus
obtained, is annually less and less productive, until, after a number
of years, depending upon the rigour of the seasons, fresh shoots
cease to spring from the stubble. This sprouting of cane from the
stools of the last crop is termed “ratooning.” In the West India
plantations the cane is frequently allowed to ratoon for eight
successive crops. In Louisiana it is usual to plant once in three
years, trusting to the ratooning for two crops only, and this was the
practice on Mr. R.’s plantation. The cost of sugar growing would be
very greatly increased if the crop needed planting every year; for all
the cane grown upon an acre will not furnish seed for more than four
acres—consequently one-twelfth of the whole of each crop has to be
reserved for the planting of the following crop, even when two-thirds
of this is to be of ratoon cane.
Planting is finished in a favourable season—early in March. Tillage is
commenced immediately afterwards, by ploughing from the rows of
young cane, and subsequently continued very much after the usual
plans of tillage for potatoes, when planted in drills, with us. By or
before the first of July, the crop is all well earthed up, the rows of
cane growing from the crest of a rounded bed, seven feet wide, with
deep water-furrows between each. The cane is at this time five or six
feet high; and that growing from each bed forms arches with that of
the next, so as to completely shade the ground. The furrows
between the beds are carefully cleaned out; so that in the most
drenching torrents of rain, the water is rapidly carried off into the
drains, and thence to the swamp; and the crop then requires no
further labour upon it until frost is apprehended, or the season for
grinding arrives.
The nearly three months’ interval, commencing at the intensest heat
of summer, corresponds in the allotment of labour to the period of
winter in Northern agriculture, because the winter itself, on the
sugar-plantations, is the planting-season. The negroes are employed
in cutting and carting wood for boiling the cane-juice, in making
necessary repairs or additions to the sugar-house, and otherwise
preparing for the grinding-season.
The grinding-season is the harvest of the sugar-planter; it
commences in October, and continues for two or three months,
during which time, the greatest possible activity and the utmost
labour of which the hands are capable, are required to secure the
product of the previous labour of the year. Mr. R. assured me that
during the last grinding-season nearly every man, woman, and child
on his plantation, including the overseer and himself, were on duty
fully eighteen hours a day. From the moment grinding first
commences, until the end of the season, it is never discontinued: the
fires under the boiler never go out, and the negroes only rest for six
hours in the twenty-four, by relays—three-quarters of them being
constantly at work.
Notwithstanding the severity of the labour required of them at this
time, Mr. R. said that his negroes were as glad as he was himself to
have the time for grinding arrive, and they worked with greater
cheerfulness than at any other season. How can those persons who
are always so ready to maintain that the slaves work less than free
labourers in free countries, and that for that reason they are to be
envied by them, account for this? That at Mr. R.’s plantation it was
the case that the slaves enjoyed most that season of the year when
the hardest labour was required of them, I have, in addition to Mr.
R.’s own evidence, good reason to believe, which I shall presently
report. And the reason of it evidently is, that they are then better
paid; they have better and more varied food and stimulants than
usual, but especially they have a degree of freedom, and of social
pleasure, and a variety of occupation which brings a recreation of the
mind, and to a certain degree gives them strength for, and pleasure
in, their labour. Men of sense have discovered that when they desire
to get extraordinary exertions from their slaves, it is better to offer
them rewards than to whip them; to encourage them, rather than to
drive them.
If the season has been favourable, so that the cane is strong, and
well matured, it will endure a smart early frost without injury,
particularly if the ground is well drained; but as rapidly as possible,
after the season has arrived at which frosts are to be expected, the
whole crop is cut, and put in mattresses, from which it is taken to the
grinding-mill as fast as it can be made to use it.
The business of manufacturing sugar is everywhere carried on in
connection with the planting of the cane. The shortness of the
season during which the cane can be used is the reason assigned
for this: the proprietors would not be willing to trust to custom-mills to
manufacture their produce with the necessary rapidity. If cane should
be cultivated in connection with other crops—that is, on small farms,
instead of great “sugar only” plantations—neighbourhood custom-
mills would probably be employed. The profit of a sugar-plantation is
now large, much in proportion to its size (if it be proportionately
stocked); because only a very large supply of cane will warrant the
proprietor in providing the most economical manufacturing
apparatus. In 1849 there were 1,474 sugar estates in Louisiana,
producing 236,547 hhds. of sugar; but it is thought that half of this
quantity was produced on less than 200 estates—that is, that one-
eighth of the plantations produced one-half the sugar. The sugar-
works on some of the large estates cost over $100,000, and many of
them manufacture over 1,000,000 lbs. per annum. The profits of
these, under our present tariff, in a favourable season, are immense.
The apparatus used upon the better class of plantations is very
admirable, and improvements are yearly being made, which indicate
high scientific acquirements, and much mechanical ingenuity on the
part of the inventors. The whole process of sugar manufacturing,
although chemical analysis proves that a large amount of saccharine
is still wasted, has been within a few years greatly improved,
principally by reason of the experiments and discoveries of the
French chemists, whose labours have been directed by the purpose
to lessen the cost of beet-sugar. Apparatus for various processes in
the manufacture, which they have invented or recommended, has
been improved, and brought into practical operation on a large scale
on some of the Louisiana plantations, the owners of which are
among the most intelligent, enterprising, and wealthy men of
business in the United States. Forty-three plantations in the State
are now furnished with apparatus constructed in accordance with the
best scientific knowledge on the subject; and 914 are driven by
steam-engines—leaving but 560 to be worked by horse-power. Mr.
R.’s sugar-house, for making brown sugar, was furnished with the
best kind of apparatus, at a cost of $20,000. Preparations were
making for the addition of works for the manufacture of white loaf
sugar, which would cost $20,000 more. I have visited one plantation
on which the sugar-works are said to have cost over $100,000.